Я использую Xamarin.Forms 2.3.1.114 для создания кросс-платформенного приложения. Я начинаю с приложения UWP, сейчас отлаживая его как настольное приложение.Xamarin: кнопка «Назад» в деталях от MasterDetailPage
Это текущий путь навигации:
Главное меню (ContentPage) -> Содержание (MasterDetailPage)
MasterDetailPage:
-> Мастер (ContentPage) содержит список элементов, показывающий с помощью ListView
-> Detail (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;
}
На странице подробно показаны детали выбранного элемента , так что это работает нормально.
Тем не менее, есть кнопка назад. Когда вы находитесь на странице «Детали», кнопка «Назад» возвращает меня на страницу содержимого главного меню, в отличие от главной страницы, которая была бы ожидаемым поведением в моих глазах. Каков предполагаемый способ достижения такого поведения?
Вот что я пробовал:
Конечно, это поведение, потому что Detail страница не была нажата в навигационный стек. Нажатие экземпляра страницы Detail в нем в событии ItemSelected вызывает exeption, поскольку его свойство Parent уже установлено.
Я попытался обернуть страницу «Сведения» на странице навигации при настройке свойства «Detail» в MasterDetailPage, но это предотвратит показ кнопки «Назад», что, по-видимому, вызвано тем, что NavigationPage требует стек навигации или что-то в этом направлении , Я также попытался сделать страницу Detail наследуемой от NavigationPage, а не ContentPage, с тем же результатом.
Я не уверен, что я здесь искал, мне кажется, что у меня есть недоразумение в том, как предполагается использовать MasterDetailPages. Любая помощь приветствуется.
Это проект, демонстрирующий это поведение.
https://1drv.ms/u/s!At78FKXjEGEohocQQgxaZuCYT2rwMw
Запустите UWP приложение, нажмите на кнопку «Список», нажмите на любой элемент слева. Нажмите кнопку «Назад», и вы увидите мою проблему.
Привет Даниэль, вы сказали, что текущий код делает Назад Кнопка видна, как вы сделали это ? Любая демонстрация будет полезна для понимания вашего вопроса. Страница детализации должна быть заполнена только экземплярами TabbedPage, NavigationPage и ContentPage, если вы выбираете MasterDetailPage, NavigationPage используется для вашего сценария –
Привет, Франклин, я добавил ссылку на проблемный проект в конце сообщения. Я не делал ничего особенного, чтобы отобразить кнопку «Назад», она должна быть автоматической из-за наличия стека навигации. –