Master Detail破坏参数?

时间:2018-11-28 00:09:47

标签: xamarin.forms prism

在我先浏览两个常规ContentPage之前,我不需要MasterDetail,在这里我收集MasterDetail将需要的信息。 ContentPages使用发送给OnNavigatedTo和OnNavigatedFrom的INavigationParameter来收集该信息。

SecondPage视图模型处理按钮命令,其中处理程序调用MasterDetail:

  

NavigationService.NavigateAsync(“ CompareSelectionsMasterDetail / CompareSelectionsNavigationPage / RangeCircle”,   参数);

当然,RangeCircleViewModel.OnNavigatedTo接收参数。但是,当我返回时(例如使用Android的“后退”按钮),它的OnNavigatedFrom被未调用,从而将空参数发送回去,从而使我的ContentPages不知道它们的状态。

CompareSelectionMasterDetail的视图模型不执行任何操作,而CompareSelectionsNavigationPage的视图模型仅执行以下操作:

public class CompareSelectionsNavigationPage : NavigationPage, INavigationPageOptions
{
    public bool ClearNavigationStackOnNavigation => false;
}
     

我不确定在MasterDetailPage XAML中有一个NavigationPage以及用Prism调用的单独的CompareSelectionsNavigationPage是什么意思,但是如果删除XAML,则不会渲染RangeCircle页面。如果我只有XAML,并将Prism导航更改为CompareSelectionsMasterDetail / NavigationPage / RangeCircle,那么我得到的行为与使用两个NavigationPages相同。

我的MasterDetail XAML很简单。

> <MasterDetailPage.Master>
>     <NavigationPage Title="Required Foo" Icon="hamburger_icon.png">
>         <x:Arguments>
>             <ContentPage Title="Menu">
>                 <StackLayout Padding="40">
>                     <!-- TODO: // Update the Layout and add some real menu items  -->
>                     <Label Text="Hello John"/>
>                     <Button Text="Range Circle" Command="{Binding NavigateToRangeCircleCommand}" CommandParameter="ViewA" />
>                 </StackLayout>
>             </ContentPage>
>         </x:Arguments>
>     </NavigationPage> </MasterDetailPage.Master>

我可以找到的每个示例的Master Detail(尤其是Prism)从带有Master Detail页面的应用程序开始。我不确定我的用法是否会破坏OnNavigatedFrom? (基本上是ContentPage(Page1)-> ContentPage(Page2)-> MasterDetail-> NavigationPage-> NavigationPage-> ContentPage(RangeCircle))

各个ContentPages调用OnNavigatedFrom都没有问题。

0 个答案:

没有答案