1

私は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 に渡す方法がわかりません。

私が何をする必要があるかを明確にしたことを願っています。何か見逃した場合は教えてください。追加します:)

前もって感謝します

4

1 に答える 1