将参数从ConfirmNavigationRequest传递到Prism中的NavigationService

时间:2012-05-26 15:11:12

标签: c# wpf mvvm navigation prism

我有一个viewmodel,它从这个viewmodel实现IConfirmNavigationRequestI need to pass information到我拥有的导航代理类,它没有耦合到任何特定的视图或视图模型。

相反,导航代理类可以访问感兴趣的IRegion以及IRegionNavigationService

ViewModel向Uri添加参数

    public override void ConfirmNavigationRequest(NavigationContext navigationContext,
                                                  Action<bool> continuationCallback)
    {
        _verificationCount++;
        navigationContext.Parameters.Add("Count", _verificationCount.ToString());
        continuationCallback(Verify());
    }

需要访问传递参数的导航代理

    // Some method
    _region.RequestNavigate(new Uri(_nextView, UriKind.Relative), NavigationCallback);

    private void NavigationCallback(NavigationResult navigationResult)
    {            
        if (navigationResult.Error == null)
        {
            if (navigationResult.Result == true)
            {
                // Need to evaluate the Count argument here
                // int count = ...
                // if (count < 5)
                QueueNextView();                     
            } else
            {
                Debug.WriteLine("Navigation Cancelled");
            }
        }
        else
        {
             Debug.WriteLine("Navigation Error");                
        }
    }

如何在ViewModel外部通过Region或NavigationService访问参数?

  • 我找不到通过NavigationContextNavigationService访问Region的方法?
  • 我也试过这个_region.NavigationService.Journal.CurrentEntry.Uri.OriginalString,但它没有显示任何查询信息,只是注册的查看字符串名称

1 个答案:

答案 0 :(得分:0)

Agustin Adami provided the answer here

navigationResult.Context.Parameters["Count"];