如何重置主详细信息页面?

问题描述:

我试图用xamarin表单构建一个应用程序。 我有一个使用MasterDetail页面实现的导航抽屉。当用户按下后退按钮并再次修改相同的屏幕时,我需要重新设置MasterDetail的内容。虽然试图做到这一点我得到以下错误:如何重置主详细信息页面?

System.InvalidOperationException:主控制器不能有一个父。

任何帮助将非常感激。谢谢

+0

当你说:“重置内容”是什么意思?当它应该这样做?你的意思是硬件后退按钮?请提供更多细节。 –

+0

我需要在主详细信息页面中重新初始化页面。我需要这样做,当用户按硬件返回按钮并重新访问页面 – user3165999

+0

据我所知,Xamarin.Forms不提供一个挂钩知道用户何时按下硬件。但我认为这不是你需要的。当你重新访问页面时,它会每次都进行初始化,所以我没有看到问题。但是如果你想做一些改变,你可以使用MVVM框架之一(我使用Prism),并在方法中做一些代码,当你浏览你的页面时会调用这些代码。 关于你的例外,我不知道它是什么意思。请添加一些代码。 –

我跑到这个相同的问题,以及试图设置一个新的MasterdetailPage()作为Application.Current.MainPage。 MasterdetailPage.Detail内的上一页页面内容保留在内存中,由于MessagingCenter无法取消订阅,这可能导致事件触发两次。

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