我使用Xamarin.Forms 2.3.1.114来构建跨平台的应用程序。我从UWP应用程序开始,现在调试为桌面应用程序。Xamarin:详细的MasterDetailPage后退按钮
这是当前的导航路径:
主菜单(ContentPage) - >内容(MasterDetailPage)
MasterDetailPage:
- >主站(ContentPage)包含经由ListView中示出的项目的列表
- >详细(ContentPage)从一个单一的列表项
的Xamarin文档显示数据说:
详细信息页面通过将MasterDetailPage.IsPresented属性设置为false呈现给用户。
https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/
所以,我提出在母版页的公共ListView控件,并添加代码类同以下的MasterDetailPage:
public MyMasterDetailPage()
{
this.Master.ItemsListView.ItemSelected += MasterListView_ItemSelected;
}
private void MasterListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (this.Master.ItemsListView.SelectedItem == null)
{
return;
}
this.Detail.BindingContext = this.Master.ItemsListView.SelectedItem;
this.IsPresented = false;
}
详细信息页面显示所选项目的详细信息,所以这工作正常。
但是,有一个后退按钮显示。在详细信息页面上,后退按钮将我带回主菜单内容页面,而不是主页面,这将成为我眼中的预期行为。什么是实现这种行为的预期方式?
这里是我试过:
当然,这种行为是因为详细信息页面没有被压入导航堆栈。在ItemSelected事件中推送那里的Detail页面实例会导致一个exeption,因为它的Parent属性已经设置。
我试过在设置MasterDetailPage的Detail属性时在导航页面中包装了Detail页面,但是这样可以防止后退按钮显示,这显然是由导航声明导航堆栈或沿着这些行的东西导致的。我也试着让DetailPage继承自NavigationPage而不是ContentPage,结果相同。
我不确定我是否在这里寻找正确的东西,在我看来,就像我对MasterDetailPages应该被使用的方式有一些误解。任何帮助表示赞赏。
这是显示此行为的项目。
https://1drv.ms/u/s!At78FKXjEGEohocQQgxaZuCYT2rwMw
启动UWP应用程序,点击“列表”,点击左侧的任何项目。点击后退按钮,你应该看到我的问题。
丹尼尔你好,你说的是当前的代码,使后退按钮可见,你是怎么做的?任何演示将有助于理解您的问题。如果您选择MasterDetailPage,则使用导航页面来适合您的场景 –
您好富兰克林,我在帖子的末尾添加了一个有问题项目的链接,详细信息页面应该只填充TabbedPage,NavigationPage和ContentPage实例。我没有做任何特别的事情来让后退按钮显示出来,由于存在导航堆栈,它必须是自动的。 –