私はWPFとMVVMを学習しており、DataGridと、DataGridにアイテムを追加できるコマンドを使用して別のフォームを開くボタンを備えたプログラムを作成しようとしています。
問題は、ビューモデルでこれをどのように実装すべきかわからないことです。正しく機能し、リポジトリを使用してEntityFrameworkからデータを取得するDataGridフォーム用のビューモデルが1つあります。
追加フォームからオブジェクトを追加し、追加ボタンを押したときに他のフォームのDataGridに自動的に表示されるようにすることはできますか、それともDataGridで更新アクションを実行する必要がありますか?ビューモデルで監視可能なコレクションを使用しており、ビューモデルのコレクションパラメーターにOnPropertyChange機能を実装しました。
リポジトリに何かを入れたときに理解できる限り、そこからデータを取得するすべてのビューモデルを更新する必要があります...それを機能させるためにメッセージコードを作成する必要があるかどうかはわかりませんが。
私はこれについてかなり混乱しています、そして誰かがここでいくつかの光を当てることができることを願っています...よろしくお願いします。私が何かに言及するのを逃したかどうか教えてください、そして私はそれを追加します:)
編集:これは私が私のモデルを登録する方法です:
SimpleIoc.Default.Register<ParentsListViewModel>();
SimpleIoc.Default.Register<EditParentViewModel>();
そして、これが私のリポジトリを登録する方法です:
SimpleIoc.Default.Register<IParentsRepository, ParentsRepository>();
そして、これは私がViewModelsのインスタンスを取得する方法です:
ParentsListViewModel parentsListViewModelInstance = ServiceLocator.Current.GetInstance<ParentsListViewModel>();
EditParentViewModel editParentViewModelInstance = ServiceLocator.Current.GetInstance<EditParentViewModel>();
ParentsListViewModelは私のDataGridViewModelであり、EditParentViewModelはリポジトリ内のレコードを追加/編集するために使用されるものです。サービスロケーターはリポジトリのインスタンスを自動的に渡すので、リポジトリのインスタンスをViewModelsに渡す方法がわかりません。同じインスタンスを渡しますか?