3

MVVM Light ツールキットに NavigationService があることがわかりました。これは、ビューに移動してデータを渡さない場合は非常に簡単です。

_navigationService.Navigate(typeof(DetailView));

オブジェクト パラメータを取る Navigate メソッドにオーバーロードがあります。

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

質問は、ターゲット ビュー モデルでパラメーターを取得するにはどうすればよいですか?

4

1 に答える 1

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 
   }
}
于 2013-11-12T21:41:53.590 に答える