MVVM Light导航服务 - windows rt中的参数

时间:2013-05-12 13:57:07

标签: mvvm navigation winrt-xaml

我在MVVM Light工具包中看到有一个NavigationService。当你只是导航到一个视图并且没有传递任何数据时,这是非常简单的。

_navigationService.Navigate(typeof(DetailView));

Navigate方法存在一个过载,它带有一个对象参数,即

_navigationService.Navigate(typeof(DetailView), this.SelectedItem.Id);

问题是,如何在目标视图模型中检索参数?

1 个答案:

答案 0 :(得分:4)

我最终得到了以下

public interface IView
{
    IViewModel ViewModel { get; }
}

public interface IViewModel
{
    void Initialise(object parameter);
}

然后在我看来的代码背后;

public sealed partial class MyView : IView
{
    public ViewModel.IViewModel ViewModel
    {
        get { return this.DataContext as IViewModel; }
    }

    public MyView()
    {
        this.InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {            
        base.OnNavigatedTo(e);

        if (e.Parameter != null)
        {
            this.ViewModel.Initialise(e.Parameter);
        }
    }        
}

从那里我现在可以在我实现IViewModel接口的ViewModel中使用该参数。

public void Initialise(object parameter)
{
   if (parameter != null)
   {
       // do something 
   }
}