私の問題では、いくつかの依存関係に従って、ビュー モデル全体でさまざまなフィールドを検証する必要があります。Silverlight、Prism、MVVM を使用しています。
例として(私の現実世界のシナリオから変更):
各船は多くのコンテナを持つことができ、コンテナは多くのアイテムを持つことができます。
各クラスは、プロパティが変更されるたびに継承しNotificationObject
て呼び出します。RaisePropertyChanged
私のビジネス ルールは、プロパティShip.TypeIdが 1の場合、 Item.Colour、Item.Name、およびItem.Sizeが空でないことを確認することです。 Ship.TypeIdが他の値と等しい場合、検証する必要はありません。Itemのプロパティ。
現時点では、OnPropertyChanged
イベント内のビュー モデルで検証が実行されています。
私が直面している問題は、Itemクラスに検証を追加すると、オブジェクトがShip.TypeIdを認識しないことです。ItemおよびContainerPropertyChanged
によってスローされたイベントをサブスクライブすると、Ship内からプロパティの変更を検出できますが、取得できるのはプロパティ名 (つまり、子クラス、つまり Name) に関連するものだけで、古い値または新しい値は取得できません。
私ができるようにしたいのは、Ship.TypeIdが変更されたことを認識しながら、子アイテムを検証することです。また、どのName、ColorまたはSizeプロパティが変更されたかを認識し、UI の正しいフィールドに対してエラーを発生させることができます。
どうもありがとう、エイドリアン