如何在数据项的属性上引发WPF中的已更改事件

时间:2015-01-14 16:51:24

标签: c# wpf mvvm

我有一个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作为属性公开的源对象上。

当然,我在这里缺少一些基本的东西,而且非常愚蠢。如何触发我的财产变更?

1 个答案:

答案 0 :(得分:2)

如果您不想在模型类中实现INotifyPropertyChanged,那么您可以在ViewModel上创建两个Date属性来提升PropertyChanged事件。

您可以在构造函数中简单地从模型类中映射这两个属性。

显然,您必须在完成后将值复制回模型对象。通常在“保存更改”中。 ICommand的风格;)