ViewModelを手動で再起動する方法を少し見ていましたが、実際に欲しいものに向かっているかどうかはわかりませんでした。ViewModel内で特定のメソッドを手動で実行する
私がしたいことは、特定のウィンドウが閉じられたときに、それらのすべてを実行せずに、自分のViewModelの中にある特定のメソッドを実行できることです。このメソッドを2番目のウィンドウのクローズイベントにバインドする方法はありますか?ありがとう。
ViewModelを手動で再起動する方法を少し見ていましたが、実際に欲しいものに向かっているかどうかはわかりませんでした。ViewModel内で特定のメソッドを手動で実行する
私がしたいことは、特定のウィンドウが閉じられたときに、それらのすべてを実行せずに、自分のViewModelの中にある特定のメソッドを実行できることです。このメソッドを2番目のウィンドウのクローズイベントにバインドする方法はありますか?ありがとう。
あなたはMVVM
に固執したいとあなたはこのようにこれを行うことができます簡単に拡張し、維持する方法で、適切にそれを行う場合:
public class FirstViewModel : IWindowCloseNotifier {
public SecondViewModel SecondVm { get; set; }
public FirstViewModel()
{
SecondVm = new SecondViewModel(this);
}
public void Close(IWindowCloseNotifierArgs args)
{
// Window is now closed!
}
}
インタフェースはSecondViewModel
だけClose
メソッドを使用できるようになります。
public interface IWindowCloseNotifier {
void Close(IWindowClosedArgs args);
}
public class SecondViewModel {
private readonly IWindowCloseNotifier _windowCloseNotifier;
public SecondViewModel(IWindowCloseNotifier windowCloseNotifier) {
_windowCloseNotifier = windowCloseNotifier;
}
public void OnClose()
{
_windowCloser.Close(your args);
}
}
あなたSecondViewModel
はのviewmodels間で通信するためにパターンを購読公開使用し、その後FirstViewModel
の子でない場合。
私の命名は素晴らしいものではありませんが、私は他のアイデアはありません。
MVVM Lightまたは他のMVVMフレームワークを使用していますか?
もしそうなら:あなたは、あなたのデザインに応じて複数のオプションを持っているあなたは
したがって、2番目のウィンドウにもビューモデルがあります。だからあなたはそれぞれのウィンドウのビューモデルを持っていますか? – FCin
私はしません。私はメインウィンドウ用のウィンドウしか持っていませんが、2番目のウィンドウ内で行われたデータベースへの変更がメインウィンドウに反映されるように、そのViewModel内にある特定のメソッドをトリガすることができます。 – RockGuitarist1
そして、そのウィンドウをどこで作成しますか?あなたはviewmodelの中でそれを作成しますか?そのウィンドウへの参照はありますか? mvvmが提供しなければならないものを実際に手に入れるために、私は2番目のウィンドウのビューモデルを作成し、それをイベントにバインドします。それ以外の場合は、コードの後ろに残っているとイベント – FCin