MVVMに新規で小さな問題があります。私は2つのユーザーコントロールを持っています:親と子(ビュー、ビューモデル、モデルクラス)。そして、親から子にいくつかのプロパティを渡す必要があります。今のIVEは、このようなコードを書くことで、それを管理する:MVVMの1つのビューから別のビューのビューモデルにプロパティを渡す
public static readonly DependencyProperty CallbackActionProperty =
DependencyProperty.Register("CallbackAction", typeof (Action),
typeof (ChildView), new PropertyMetadata(default(Action)));
public Action CallbackAction
{
get { return (Action) GetValue(CallbackActionProperty); }
set
{
SetValue(CallbackActionProperty, value);
((ChildViewModel)this.DataContext).CallbackAction = value; // Change ViewModel property too
}
}
これはChildView
で依存関係プロパティであり、そのセットに私もそのViewModel
のプロパティを設定します。その後、私はParentView
からその依存関係プロパティにアクセスし、子のViewModelにCallbackAction
を設定するCallbackAction
- >を設定します。
コード:
this.Loaded += (sender, args) => childUc.CallbackAction = ((ParentViewModel) this.DataContext).RefreshStatuses;
childUc
は、ユーザーコントロール、親に位置し、ChildView
で表さあります。 コードは醜いので、パターンを壊さないという観点から、より良い練習を見たいと思っています。 ありがとうございます。
(また、あなたの依存関係プロパティのゲッターやセッターのロジックを追加しないでください、このコードは、またはあなたの依存関係プロパティの値が設定されている方法に応じて呼び出されてもしなくてもよい。)質問は何ですか? –
@Mario Vernari、物事を説明しようとする正しい方法は何ですか? – 0x49D1