Sof*_*San 10 c# master-detail xamarin.forms
我有一个使用masterdetail页面在所有页面显示菜单的应用程序.导航在我的应用程序中以两种方式发生.一个来自菜单,另一个来自仪表板.因此,如果我导航到另一个页面,然后按"返回"按钮,它将关闭该应用程序.它不记得导航历史记录.主详细信息页面如下:
public class RootPage : MasterDetailPage
{
public RootPage ()
{
var menuPage = new MenuPage ();
menuPage.Menu.ItemSelected += (sender, e) => NavigateTo (e.SelectedItem as MenuItem);
Master = menuPage;
Detail = new NavigationPage (new ContractsPage ());
}
void NavigateTo (MenuItem menu)
{
Page displayPage = (Page)Activator.CreateInstance (menu.TargetType);
Detail = new NavigationPage (displayPage);
IsPresented = false;
}
}
Run Code Online (Sandbox Code Playgroud)
所以任何想法如何克服这个问题?
小智 18
就像@ Sten-Petrov所说:你正在取代细节页面而不是触发历史机制.要触发历史记录机制,您需要在Detail页面的Navigation属性上执行PushAsync(Page).
在您的示例中,更改NavigateTo:
void NavigateTo (MenuItem menu)
{
Page displayPage = (Page)Activator.CreateInstance (menu.TargetType);
Detail.Navigation.PushAsync(displayPage);
}
Run Code Online (Sandbox Code Playgroud)
这不会取代内容,但会打开一个带有所需后退按钮功能的新页面.
如果你想要使用Master-Detail页面的后退按钮功能,那么你需要自定义后台堆栈过程,在我看来,这是不值得的.在这种情况下,只需移动到不同的页面/导航结构.
归档时间: |
|
查看次数: |
18752 次 |
最近记录: |