Я хочу подтвердить, правильно ли я использую навигационную службу призмы с формами xamarin. У меня есть страница с подробными сведениями, стилизованная страница навигации и множество страниц контента.Правильное использование навигационной службы Prism в формах xamarin
прямо сейчас я использую услугу следующим образом:
var prj = await dataService.GetLwdProject(appState.SelectedProjectId);
var nparam = new NavigationParameters();
nparam.Add("Project", prj);
await NavigateTo("RootPage/StyledNavigationPage/SessionsListPage", nparam);
Если страница Master детали является объектом корневой страницы. Поэтому ожидать, что, когда пользователь выбирает элемент из этого списка страницы правильный путь к службе должен быть:
var nparma = new NavigationParameters();
nparma.Add("Session", option);
await App.NavigateTo("RootPage/StyledNavigationPage/SessionsListPage?ProjectId=" + option.ProjectId + "/LocationListPage", nparma);
Что я ожидаю, что только LocationListPage будут добавлены к навигации стеке, но когда я использую аппаратная кнопка назад на андроиде, похоже, что добавлена не только последняя страница, но и весь путь (все страницы). Так это правильный способ авто построить желаемый путь?
Причина, по которой я строю весь патч, - это единственный способ, которым я нашел, чтобы создать страницу ожидаемым образом. на пути: RootPage/StyledNavigationPage/SessionsListPage - это, по сути, страница основных деталей с навигационной страницей, указывающей на SessionListPage. Если я просто напишу, перейдите к LocationListPage, показывается только простая страница содержимого, поэтому ни одна навигационная панель или доступ к основной детали стр. Единственный путь назад - использование кнопки возврата оборудования. Если я выразим это так: StyledNavigationPage/LocationListPage, я верну навигацию, но не обратно. – Snowppy
Вы не делаете это правильно. Чтобы достичь желаемого поведения, ваша NavigationPage должна внедрить INavigationPageOptions и установить для свойства ClearNavigationStackOnNavigation значение false. Теперь, когда вы переходите из своего MasterDetail, до тех пор, пока вы префикс Detial с помощью navigationPage, он не сбросит стек, а скорее переместит каждую страницу в стек. –