各タブ内に異なるユーザー コントロールを持つタブ コントロールを持つビュー ウィンドウがあります。ウィンドウには独自のビュー モデルがあり、各ユーザー コントロールも同様です。子ユーザー コントロール ビュー モデルからメイン ウィンドウ ビュー モデルのプロパティを更新するにはどうすればよいでしょうか。
2 に答える
こんにちは、親 ViewModel から子ビュー モデルをインスタンス化する場合は、子ビュー モデルからイベントを発生させ、親 ViewModel でそのイベントをリッスンし、親 ViewModel の目的のプロパティを更新することで実行できます。ただし、ViewModel を View、つまり userControl からインスタンス化する場合は、UserControl で DependencyProperty を作成し、それを Parent View Model と Child ViewModel Property にバインドする必要がありますが、xaml で 1 つのプロパティのみをターゲット プロパティにバインドできるという問題が 1 つあります。 DependencyProperty の ValueChanged から子 ViewModel プロパティを更新する必要があります。これがあなたにアイデアを与えることを願っています。
私のAddUser
UserControl 子:
public event EventHandler<RoutedEventArgs> SaveUser;
// Wherever I want that event to be launched I write this:
private void buttonSaveUser_Click(object sender, RoutedEventArgs e)
{
EventHandler<RoutedEventArgs> handler = SaveUser;
handler(this, userEventArgs);
}
で、子MainWindow.xaml
を作成したら、イベントに登録します。UserControl
addUser = new F7AddUser();
addUser.SaveUser += AddUser;
そして、新しいAddUser
メソッドを作成します (これは にある必要がありますMainWindow.xaml
)。これは からのものevent
であるため、引数はそれを起動したイベントと同じでなければならないことに注意してください。
private void AddUser(object o, RoutedEventArgs e)
{
// Stuff here
}