次のコードを見てください
public class VM1
{
private bool isValid;
private VM2 vmInstance;
// ...
public bool IsValid
{
get { return this.isValid; }
set { /* ... */ }
}
public VM2 VMInstance
{
// ...
}
}
public class VM2
{
public bool IsValid
{
// ...
}
}
のIsValid
-property は、 の-propertyVM1
の値に依存するようになりました。それを達成するための最良の方法は何ですか?IsValid
VM2
私は自分の問題を解決する方法を見つけました。VM1 クラスは VM2 の propertychanged イベントをサブスクライブします。VM2 の ISValid プロパティが変更された場合、このイベント ハンドラでは、VM1 の setState() メソッドを呼び出して、IsValid プロパティの値を決定します。
void MyViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "IsValid":
// call a method in VM1 to decide the value of IsValid property of VM1
// say, the method name is setState()
break;
}
}
これは正しいアプローチですか?