在 Xamarin 中关闭子窗体后触发 Main Page 的功能

Posted

技术标签:

【中文标题】在 Xamarin 中关闭子窗体后触发 Main Page 的功能【英文标题】:Triger a function of Mainpage after closing a subform in Xamarin 【发布时间】:2021-12-23 12:42:10 【问题描述】:

在我的 Xamarin 表单中,我有两个页面

主页 登录页面

在主页上,我在 cs 文件中有一个名为 getfocus() 的函数。 MainPage 是主窗体,LoginPage 是子窗体。 LoginPage 出现在 MainPage 的顶部。关闭 LoginPage 后,我希望调用 MainPage 的 getfocus() 函数。我在 xaml 中尝试了 contentpage 的“focused”属性,但它不起作用。下面是 LoginPage 上的代码,之后应该调用 mainpage 上的函数。以下行用于关闭 LoginPage。

等待 PopupNavigation.Instance.PopAsync(true);

【问题讨论】:

使用页面的Disappearing事件 【参考方案1】:

你可以使用MessagingCenter来实现这个功能,根据你的说法你好像使用Popup Page Plugin插件。

我写了一个小例子供你参考,希望能解决你的问题。

在你的第一 await PopupNavigation.Instance.PopAsync(true);在代码下方添加MessagingCenter.Send<object>(this, "Hi");;使用这行代码注册MessagingCenter。

然后这里是MainPage代码:

public partial class MainPage : ContentPage

    public MainPage()
    
        InitializeComponent();
        MessagingCenter.Subscribe<object>(this, "Hi", (sender) =>
        
            getfocus();
        );
    

    private async void Button_Clicked(object sender, EventArgs e)
    
        await Navigation.PushPopupAsync(new LoginPage());
    
    
    private  void getfocus()
    

    

使用 MessagingCenter.Subscribe 接收并调用 getfocus() 方法。

更多关于MessagingCenter的信心,可以参考:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/messaging-center

【讨论】:

【参考方案2】:

不幸的是,我不得不改变我的导航模式。但是谢谢大家的支持

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于在 Xamarin 中关闭子窗体后触发 Main Page 的功能的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 中关闭子窗体刷新父窗体怎么实现

C#中关闭子窗口的同时刷新父窗口的办法?

如何使用 Java 在 Selenium WebDriver 中关闭子浏览器窗口

我可以从 Main 构造函数中关闭程序吗?

首次启动后如何强制 QueryRoots 在 Xamarin 应用程序上触发,存储提供程序

vb窗体中的resize是啥事件?