これは、MVVM パターンのベスト プラクティスに関する具体的な質問です。MvvmLight ライブラリを使用しています。私のモデル、たとえば「フライト」は、メソッドを介してフライトを開始、一時停止、および停止できるいくつかのビジネス ロジックを実装しています。各メソッドは、フライトを停止するか一時停止するかに関係なく、機能を実現するロジックを実行します。変化する重要な変数の 1 つは、フライトのステータス (再生中、停止中、一時停止中) を示すステータス列挙型です。前述のように、ステータス変数 (およびプロパティ) はモデルで定義されます。一方、フライト クラスは、ステータス変数をフライト モデルにラップする Status プロパティを含む ViewModel クラスと、フライト モデルの play stop 一時停止メソッドに接続する RelayCommands によってラップされます。
ここで問題が始まります。ビューを介してコマンドの 1 つを実行すると、モデル内でメソッドが実行されるため、ステータス変数自体が直接変更されますが、モデル内でのみ変更されます。ViewModel のステータス プロパティは変更されません。直接変更されたため、ラップされた変数が変更されたかどうかを知る...つまり、ビュー要素がステータスプロパティにバインドされている場合、コマンドの実行時に変更されません..
これを解決する方法はいくつか知っていますが、MVVM パターンを壊さない公正な解決策を求めています ( Model のフライト クラスで INotifyPropertyChanged を使用するなど)。