【问题标题】:How to programmatically use Prism's NavigationService?如何以编程方式使用 Prism 的 NavigationService?
【发布时间】:2017-08-13 02:57:29
【问题描述】:

我实现了,它使用 Prism 的 NavigationService 进行导航:

protected override void OnInitialized()
{
    InitializeComponent();

    NavigationService.NavigateAsync("FirstPage?title=FirstPage");
}

protected override void RegisterTypes()
{
    Container.RegisterTypeForNavigation<MainPage>("MainPage");
    Container.RegisterTypeForNavigation<FirstPage>("FirstPage");
    Container.RegisterTypeForNavigation<FirstPage>("SecondPage");
}

例如,在特定按钮的命令中:

_navigationService.NavigateAsync("FirstPage");

很容易,但是。如果我想怎么办:

转到第一页,检查一下,如果是真的立即转到“第二页”?它不起作用!必须单击该按钮,否则导航不起作用

这是一个错误,还是我错过了什么?

谢谢!

【问题讨论】:

    标签: c# .net xamarin prism navigationservice


    【解决方案1】:
    1. 在您的 FirstPage 或 FirstPageViewModel 上,您必须实现 INavigatedAware 接口。

    2. NavigatedTo(当您导航到 FirstPage 后将被调用)您应该检查条件,如果为 true,则导航到 SecondPage

    在您的 FirstPage 类上执行此操作的示例:

    public partial class FirstPage : ContentPage, INavigatedAware
    {
        INavigationService _navigationService;
        bool myCondition = true;
    
        public FirstPage(INavigationService navigationService)
        {
            _navigationService = navigationService;
            InitializeComponent();
        }
    
        void OnNavigatedFrom(NavigationParameters parameters)
        {
    
        }
    
        void OnNavigatedTo(NavigationParameters parameters)
        {
            if(myCondition == true)
            {
               _navigationService.NavigateAsync("SecondPage");
            }
        }
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多