【发布时间】:2020-08-02 16:58:44
【问题描述】:
我正在从一个主详细信息页面(有一个侧边菜单)导航到一个在标题中有一个后退按钮但没有其他类似的普通页面:
btn_anzeigeerstellen_pickcate.Clicked += delegate
{
Navigation.PushAsync(new Screen_SwipeView());
};
我以前用过空白页,它们总是有一个后退按钮。但是现在,由于我要离开主详情页面,结果是这样的:
虽然下方的后退按钮只是向后导航,但上方的后退按钮会再次导航到应用程序的开头(这是没有意义的) 所以上面的后退按钮需要去掉。
另外,我注意到通过从左端向右滑动,它会从主详细信息页面中调出菜单,这还不错,但它表明应用程序仍然“认为”它在主页面中详情页。
我怎样才能改变这种行为?
谢谢!
主详细信息页面:
public partial class Screen_MainMenu : MasterDetailPage
{
public Screen_MainMenu()
{
InitializeComponent();
//MasterPage.ListView.ItemSelected += ListView_ItemSelected;
}
private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as Screen_MainMenuMasterMenuItem;
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;
}
}
public partial class Screen_MainMenuMaster : ContentPage
{
public ListView ListView;
public Screen_MainMenuMaster()
{
InitializeComponent();
BindingContext = new Screen_MainMenuMasterViewModel();
ListView = MenuItemsListView;
}
class Screen_MainMenuMasterViewModel : INotifyPropertyChanged
{
public ObservableCollection<Screen_MainMenuMasterMenuItem> MenuItems { get; set; }
public Screen_MainMenuMasterViewModel()
{
MenuItems = new ObservableCollection<Screen_MainMenuMasterMenuItem>(new[]
{
new Screen_MainMenuMasterMenuItem { Id = 0, Title = "Mein Profil" },
new Screen_MainMenuMasterMenuItem { Id = 1, Title = "Meine Anzeigen" },
new Screen_MainMenuMasterMenuItem { Id = 2, Title = "Merkliste" },
new Screen_MainMenuMasterMenuItem { Id = 3, Title = "Website" },
new Screen_MainMenuMasterMenuItem { Id = 4, Title = "Kontakt" },
new Screen_MainMenuMasterMenuItem { Id = 1, Title = "Hilfe" },
new Screen_MainMenuMasterMenuItem { Id = 2, Title = "Einstellungen" },
new Screen_MainMenuMasterMenuItem { Id = 3, Title = "Missbrauch melden" },
new Screen_MainMenuMasterMenuItem { Id = 4, Title = "Log Out" },
});
}
#region INotifyPropertyChanged Implementation
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
if (PropertyChanged == null)
return;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
【问题讨论】:
-
能否附上如何在 App.cs 中实例化主详情页面的代码?
-
@ColeXia-MSFT 查看我的更新。这够了吗? :)
标签: xamarin.forms