私はMVVMとWPFが初めてです。
私は MVVM Light を使用して、ウィンドウ内に DataGrid を含むアプリケーションを作成しています。このウィンドウには、ビュー モデル (MainViewModel) と、DataGrid でレコードを追加および編集するための別のウィンドウがあり、独自のビュー モデル (EditViewModel) もあります。
私が心配しているのは、MainViewModel から [追加/編集] ウィンドウを開くために使用しているアプローチです。MainViewModel には、DataGrid の SelectedItem プロパティにバインドされた SelectedItem プロパティと、追加/編集ウィンドウを追加モードまたは編集モードで起動するかどうかを示す IsEdit ブール型プロパティがあります。
追加/編集ウィンドウが編集モードで開かれると、ビューモデルのコンストラクターに次の行があります。
MainViewModel mainViewModel = ServiceLocator.Current.GetInstance<MainViewModel>();
これは明らかに、MainViewModel の現在のインスタンスを取得します。これは完全に正常に機能しますが、これが最善の方法であるかどうかはわかりません。
また、同じ MainViewModel インスタンスを使用するメイン ウィンドウの複数のインスタンスがあり、それらの両方から追加/編集ウィンドウのインスタンスを開くと、追加/編集ウィンドウは同じインスタンスからデータを取得します。問題になる可能性のある MainViewModel。
開いた MainWindow ごとに MainViewModel の新しいインスタンスを作成しようとすると、現在使用されている MainViewModel のインスタンスを EditViewModel に渡す方法がわかりません。
私が何をする必要があるかを明確にしたことを願っています。何か見逃した場合は教えてください。追加します:)
前もって感謝します