我有一个主要详细信息页面,我想在其中添加注销功能(基本上是poptorootasync)。例如,下面是菜单列表:
客户信息-这会将用户重定向到客户信息页面。
注销-这将使用“ 等待Application.Current.MainPage.Navigation.PopToRootAsync(); ”功能。
问题是我有这个ObservableCollection,但我不知道如何将PopToRootAsync添加到此
这是我的代码:
MenuItems = new ObservableCollection<HomePageMenuItem>(new[]
{
new HomePageMenuItem { Id = 0, Title = "Client Information", TargetType = typeof(ClientInformationMenu) },
new HomePageMenuItem { Id = 1, Title = "Logout", TargetType = typeof(**HERE IS WHERE TO PUT POP TO ROOT**) }
});
HomePageMenuItem.cs
public class HomePageMenuItem
{
public HomePageMenuItem()
{
TargetType = typeof(ClientInformationMenu);
}
public int Id { get; set; }
public string Title { get; set; }
public Type TargetType { get; set; }
}
第一次选定的事件
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
HomePageMenuItem item = e.SelectedItem as HomePageMenuItem;
if (item == null)
return;
var page = (Page)Activator.CreateInstance(item.TargetType);
page.Title = item.Title;
Detail = new NavigationPage(page);
IsPresented = false;
MasterPage.ListView.SelectedItem = null;
}
答案 0 :(得分:0)
您的HomePageMenuItem看起来像这样:
public class HomePageMenuItem
{
public HomePageMenuItem()
{
TargetType = typeof(ClientInformationMenu);
}
public bool IsHome{ get; set;}
public int Id { get; set; }
public string Title { get; set; }
public Type TargetType { get; set; }
}
您将像这样初始化它:
new HomePageMenuItem { Id = 1, Title = "Logout", IsHome= true) }
然后在您的click事件中,检查此属性并相应地执行操作
if(Obj.IsHome)
{
//Code to Pop
}
答案 1 :(得分:0)
我想您有一个登录页面可以导航到主要详细信息页面。在主详细信息页面中单击注销时,它将作为注销页面导航到根页面。
我认为Navigation.PopToRootAsync()
不是一个好的选择,您可以在运行时直接设置主页。并且请注意,MasterDetailPage被设计为根页面,无需使用Navigation.PopToRootAsync()
返回根页面。
此代码将注销设置为根页面。
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as MasterPageItem;
if (item != null)
{
if (item.Title == "Logout")
{
Application.Current.MainPage =new LogoutPageCS();
}
else
{
Detail = new NavigationPage((Page)Activator.CreateInstance(item.TargetType));
masterPage.ListView.SelectedItem = null;
IsPresented = false;
}
}
}
有关更多详细信息,您可以从GitHub的MasterDetailsDemo文件夹下载源文件。 https://github.com/WendyZang/Test.git