我有一个MVVM ViewModel,它将EF对象作为构造函数的一部分加载,然后将该对象公开为属性。然后,UI可以根据该对象的属性进行更新。到目前为止很容易。
UI有两个日期元素,使用datepickers处理。当一个人改变时,我想检查另一个人的状态,并可能通过弹出窗口警告用户。所以我在我的ViewModel上创建了一个“DateCheck”属性,并将PopUp的IsOpen属性绑定到:
public bool Check
{
get
{
if (Job.ExtractDate != null && Job.DeliveryDate == null)
{
return true;
}
else
{
return false;
}
}
}
这应该在理论上有效,但我无法弄清楚如何触发它。
如果我将绑定的UpdateSourceTrigger设置为LostFocus,它永远不会触发,因为绑定位于弹出窗口本身 - 它不可见,所以它当然不会失去焦点。
如果我将UpdateSource触发器设置为PropertyChanged,那么我需要以某种方式引发更改事件。但是,正在更改的属性不在ViewModel本身上 - 它位于ViewModel作为属性公开的源对象上。
当然,我在这里缺少一些基本的东西,而且非常愚蠢。如何触发我的财产变更?
答案 0 :(得分:2)
如果您不想在模型类中实现INotifyPropertyChanged,那么您可以在ViewModel上创建两个Date属性来提升PropertyChanged事件。
您可以在构造函数中简单地从模型类中映射这两个属性。
显然,您必须在完成后将值复制回模型对象。通常在“保存更改”中。 ICommand的风格;)