我在 MVVM Light 工具包中看到有一个 NavigationService。当您只是导航到视图并且不传递任何数据时,这非常简单,即
_navigationService.Navigate(typeof(DetailView));
Navigate 方法有一个重载,它采用对象参数,即
_navigationService.Navigate(typeof(DetailView), this.SelectedItem.Id);
问题是,我如何在目标视图模型中检索参数?
我在 MVVM Light 工具包中看到有一个 NavigationService。当您只是导航到视图并且不传递任何数据时,这非常简单,即
_navigationService.Navigate(typeof(DetailView));
Navigate 方法有一个重载,它采用对象参数,即
_navigationService.Navigate(typeof(DetailView), this.SelectedItem.Id);
问题是,我如何在目标视图模型中检索参数?
我结束了以下
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
}
}