Я пытаюсь протестировать и пример с MasterDetail. Вы можете увидеть код в:
https://github.com/jrariasf/MD8/tree/master/MD8
Мастер имеет 5 кнопок для доступа к 4 страницам с подробностями (Home, MainPage, ViewA, ViewB и ViewC).
Из ViewA с помощью 2 кнопок я могу загрузить ViewB и ViewC
Но я не могу сделать это, нажав кнопку в меню hambubrger, а затем загрузив соответствующую страницу с подробностями.
Это работает, только если я укажу абсолютный путь в CommandParameter в "PrismMasterDetailPage.xaml":
<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:prism="http://prismlibrary.com"
prism:ViewModelLocator.AutowireViewModel="True"
x:Class="MD8.Views.PrismMasterDetailPage">
<MasterDetailPage.Master>
<ContentPage Title="Menu">
<StackLayout Padding="20">
<!-- TODO: // Update the Layout and add some real menu items -->
<Button Text="Home" Command="{Binding NavigateCommand}" CommandParameter="/PrismMasterDetailPage/NavigationPage/ViewA" />
<Button Text="MainPage" Command="{Binding NavigateCommand}" CommandParameter="/NavigationPage/MainPage" />
<Button Text="ViewA" Command="{Binding NavigateCommand}" CommandParameter="../ViewA" />
<Button Text="ViewB" Command="{Binding NavigateCommand}" CommandParameter="./ViewB" />
<Button Text="ViewC" Command="{Binding NavigateCommand}" CommandParameter="ViewC" />
</StackLayout>
</ContentPage>
</MasterDetailPage.Master>
</MasterDetailPage>
Затем в "PrismMasterDetailPageViewModel.cs"
void ExecuteCommandName(string page)
{
Console.WriteLine("PrismMasterDetailPageViewModel - ExecuteCommandName() Vamos a {0}", page);
_navigationService.NavigateAsync(page);
}
Если я нахожусь в "/ PrismMasterDetailPage / NavigationPage / ViewA", что мне нужно сделать, чтобы выгрузить ViewA и загрузить ViewB?
Например, в App.xaml.cs код выглядит следующим образом:
await NavigationService.NavigateAsync("PrismMasterDetailPage/NavigationPage/ViewA");
Затем запустите приложение на эмуляторе Android, нажмите кнопки гамбургер-меню, и результат будет не таким, как я ожидал. При нажатии кнопки «Домой» функция _navigationService.GetNavigationUriPath () возвращает: / PrismMasterDetailPage / NavigationPage / ViewA / NavigationPage? UseModalNavigation = true / ViewA.
Почему?
Если я нажимаю кнопку ViewA, ViewB или ViewC, ничего не отображается. Но метод OnNavigatedFrom () вызывается для каждого View * ViewModel.cs
Что случилось?
Спасибо!!