绑定到WPF中的null对象属性的属性

时间:2015-12-23 15:59:24

标签: c# wpf mvvm

我正在编写一个实用程序来在我们的应用套件中创建和编辑自定义数据字段。每个数据字段在我们的代码中称为元素,每个元素都有0或1个Requirement对象。 Requirement对象由布尔表达式和错误消息组成,两者都作为字符串保存在内存中。

现在,我有一个视图,它有单独的标签,一个用于常规元素数据,另一个用于元素要求数据。用作视图上下文的viewmodel具有公共Element属性。我的问题是,常规选项卡上的绑定工作正常(即Text="{Binding Element.Description}")。但是,如果在加载视图时Element的Requirement属性为null,则Requirement(Text = "{Binding Element.Requirement.Condition}")选项卡上的绑定不起作用。当我点击断点时查看Element对象,即使在将数据输入文本块之后,Requirement属性仍为null。

我在视图模型中的元素设置器中使用了以下内容。

public Element Element { 
    get{return _element;}
    set{
        if (value == _element) return;
        if (_element != null) _element.OnPropertyChanged -= ElementChanged;
        _element = value;
        if (_element != null) _element.OnPropertyChanged += ElementChanged;
        OnPropertyChanged();
    }
}

public void ElementChanged(){
    OnPropertyChanged("Element");
}

我在Element类的Requirement的setter中做了同样的事情,并且所有这三个都是从INotifyPropertyChanged实现的。在这一点上,我完全失去了我需要做的事情。

有一点需要注意:我不想在我的viewmodel构造函数中设置Element.Requirement = new Requirement(),因为这会尝试将空白记录保存到数据库中。

0 个答案:

没有答案