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

标签 mvvm navigation winrt-xaml

我在 MVVM Light 工具包中看到有一个 NavigationService。当您只是导航到一个 View 并且不传递任何数据时,这非常简单,即

_navigationService.Navigate(typeof(DetailView));

Navigate 方法有一个重载,它接受一个对象参数,即

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

问题是,我如何在我的目标 View 模型中检索参数?

最佳答案

我得到了以下结果

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 接口(interface)的 ViewModel 中使用参数。

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

关于MVVM Light 导航服务 - windows rt 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508116/

相关文章:

c# - 使用 MVVM Xamarin Forms 使用数据填充选择器

android - 在不设置位置的情况下从另一个 Activity 启动 Google Navigation

Javascript - 如果窗口宽度 <= 800px,则将事件链接移动到导航顶部

mvvm - 使用 Caliburn 在 Windows 应用商店中绑定(bind)组合框

c# - 将 M-V-VM 与 WPF 结合使用,如何在给定 ViewModel 的情况下实例化对话框 View ?

c# - 重置DataGrid排序回到其初始状态

c++ - 如何在 WinRT 中实现 UserControl

c# - UWP Template 10 创建动态汉堡包菜单

xamarin - 我们什么时候应该更喜欢 mvvm cross 而不是 mvvm light,反之亦然?

html - 菜单中的文字移到一边