请看下面的代码
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
-propertyVM1
取决于 的IsValid
-property的值VM2
。实现这一目标的最佳方法是什么?
我找到了解决我的问题的方法。VM1 类订阅 VM2 的 propertychanged 事件。当 VM2 的 evr 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;
}
}
这是正确的方法吗?