Xamarin.forms 如何重置母版详细信息页?

Xamarin.forms 如何重置母版详细信息页?,xamarin.forms,navigation-drawer,Xamarin.forms,Navigation Drawer,我正在尝试使用xamarin表单构建一个应用程序。 我有一个使用MasterDetail页面实现的导航抽屉。当用户按下backbutton并再次重新查看同一屏幕时,我需要重置MasterDetail的内容。尝试执行此操作时,我收到以下错误: System.InvalidOperationException:主机必须没有父级 任何帮助都将不胜感激。谢谢我也遇到了同样的问题,试图将新的MasterdetailPage()设置为Application.Current.MainPage。Masterde

我正在尝试使用xamarin表单构建一个应用程序。 我有一个使用MasterDetail页面实现的导航抽屉。当用户按下backbutton并再次重新查看同一屏幕时,我需要重置MasterDetail的内容。尝试执行此操作时,我收到以下错误:

System.InvalidOperationException:主机必须没有父级


任何帮助都将不胜感激。谢谢

我也遇到了同样的问题,试图将新的MasterdetailPage()设置为Application.Current.MainPage。MasterdetailPage中的上一页无效。详细信息保留在内存中的某个位置,这可能会由于MessagingCenter无法取消订阅而引发两次事件


解决方案是将MasterDetailPage的一个实例保存在一个全局变量中,并将该实例重新用于Application.Current.MainPage。这样就不会创建新页面。

我也遇到了同样的问题,试图将新的MasterdetailPage()设置为Application.Current.MainPage。MasterdetailPage中的上一页无效。详细信息保留在内存中的某个位置,这可能会由于MessagingCenter无法取消订阅而引发两次事件


解决方案是将MasterDetailPage的一个实例保存在一个全局变量中,并将该实例重新用于Application.Current.MainPage。这样就不会创建新页面。

您可以在设置masterdetailpage实例之前清除新页面的父级

newPage.Parent = null;
 MyMasterDetailPage.Instance.Detail = newPage;

您可以在设置masterdetailpage实例之前清除新页面的父级

newPage.Parent = null;
 MyMasterDetailPage.Instance.Detail = newPage;

你说“重置内容”是什么意思?什么时候应该这样做?你是说硬件后退按钮?请提供更多详细信息。我需要重新初始化母版详细信息页面中的页面。我需要这样做,当用户按下硬件后退按钮并再次访问页面时,我知道,Xamarin。表单不提供一个钩子来知道用户何时按下硬件后退。但我认为这不是你需要的。当你重新访问这个页面时,它每次都会初始化,所以我看不出有什么问题。但是如果您想做一些更改,可以使用一个MVVM框架(我使用Prism)并在方法中执行一些代码,当您导航到页面时会调用该方法。关于你的例外,我不知道这是什么意思。请添加一些代码。你说“重置内容”是什么意思?什么时候应该这样做?你是说硬件后退按钮?请提供更多详细信息。我需要重新初始化母版详细信息页面中的页面。我需要这样做,当用户按下硬件后退按钮并再次访问页面时,我知道,Xamarin。表单不提供一个钩子来知道用户何时按下硬件后退。但我认为这不是你需要的。当你重新访问这个页面时,它每次都会初始化,所以我看不出有什么问题。但是如果您想做一些更改,可以使用一个MVVM框架(我使用Prism)并在方法中执行一些代码,当您导航到页面时会调用该方法。关于你的例外,我不知道这是什么意思。请添加一些代码。