Xamarin 中的 MasterDetailPage 和 NavigationPage 组合
MasterDetailPage and NavigationPage combination within Xamarin
我正在创建一个 Xamarin 应用程序,我想在其中合并多个页面,MasterDetailPage
和 NavigationPage
。
我的MainPage
包含MasterDetailPage
,MasterDetailPage
的master包含一个视图列表(自定义class其中存储了[=48=等信息] 类型、要显示的图像和名称)用户可以查看。这些观点都是ContentPage
s。单击列表中的一项时,ContentPage
通过使用反射进行初始化,然后存储在 MasterDetailPage
中。目前一切都按照 Xamarin 的建议进行。
但是其中一个 ContentPages
包含一个 ListView
。
选择一个项目后,ListView
必须打开详细视图,并且用户必须能够 return 到 ListView
。因此,我正在使用 Navigation
class 并将页面推送到 NavigationPage
中,如下所示(绑定可以做得更好,但这只是为了感受 Xamarin):
private async Task Handle_ItemSelected(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
{
if (_detail == null)
{
_detail = new Detail();
}
_detail.BindingContext = SelectedTrack;
await Navigation.PushAsync(new NavigationPage(_detail));
}
像这样完成后,返回 按钮呈现在 MasterDetailPage
上方。
有什么方法可以在转到 ListView
的详细信息页面时删除 MasterDetailPage 的 'burger' 按钮?还是我目前使用了错误的工作流程?
将您的详细信息页面设置为 NavigationPage。
_masterDetailPage.Detail = new NavigationPage(page);
或
MainPage = new MasterDetailPage
{
Master = new MyMasterPage(),
Detail = new NavigationPage(MyHomePage())
});
然后在您的详情视图中,您可以通过以下方式导航至其他页面:
await Navigation.PushAsync(new NavigationPage(_detail));
您将看到后退按钮,而不是 Hamburger。
看看sample。
我正在创建一个 Xamarin 应用程序,我想在其中合并多个页面,MasterDetailPage
和 NavigationPage
。
我的MainPage
包含MasterDetailPage
,MasterDetailPage
的master包含一个视图列表(自定义class其中存储了[=48=等信息] 类型、要显示的图像和名称)用户可以查看。这些观点都是ContentPage
s。单击列表中的一项时,ContentPage
通过使用反射进行初始化,然后存储在 MasterDetailPage
中。目前一切都按照 Xamarin 的建议进行。
但是其中一个 ContentPages
包含一个 ListView
。
选择一个项目后,ListView
必须打开详细视图,并且用户必须能够 return 到 ListView
。因此,我正在使用 Navigation
class 并将页面推送到 NavigationPage
中,如下所示(绑定可以做得更好,但这只是为了感受 Xamarin):
private async Task Handle_ItemSelected(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
{
if (_detail == null)
{
_detail = new Detail();
}
_detail.BindingContext = SelectedTrack;
await Navigation.PushAsync(new NavigationPage(_detail));
}
像这样完成后,返回 按钮呈现在 MasterDetailPage
上方。
有什么方法可以在转到 ListView
的详细信息页面时删除 MasterDetailPage 的 'burger' 按钮?还是我目前使用了错误的工作流程?
将您的详细信息页面设置为 NavigationPage。
_masterDetailPage.Detail = new NavigationPage(page);
或
MainPage = new MasterDetailPage
{
Master = new MyMasterPage(),
Detail = new NavigationPage(MyHomePage())
});
然后在您的详情视图中,您可以通过以下方式导航至其他页面:
await Navigation.PushAsync(new NavigationPage(_detail));
您将看到后退按钮,而不是 Hamburger。
看看sample。