在ObservableCollection对象

时间:2016-12-29 20:21:54

标签: c# wpf mvvm observablecollection inotifydataerrorinfo

上下文

我正在使用MVVM和Entity Framework(数据库优先)开发WPF应用程序。我有一个ObservableCollection的Airframe对象(通过CollectionView查看,以便我可以处理下一个/上一个逻辑)。我有一个文本框,允许编辑当前查看的机身的一个机身属性,我正在为此设置验证。我采用的方法是使用WPF 4.5: Validating Data in Using the INotifyDataErrorInfo Interface中显示的示例实现INotifyDataErrorInfo。

问题

在该文章的示例中,验证是通过ViewModel中定义的单个属性的setter触发的,如下所示:

private string _username;
public string Username
{
    get { return _username; }
    set
    {
        _username = value;
        ValidateUsername(_username);
    }
}

问题

如何在特定环境中触发验证?当我使用Entity Framework(数据库优先)时,我无法在生成的Airframe模型中摆弄setter。我无法看到如何在Airframe对象的ObservableCollection中获得更改setter的细粒度访问权限。我也无法想到可以触发验证的任何其他地方。

1 个答案:

答案 0 :(得分:0)

您可以使用

为生成的机身模型注入INPC支持

https://github.com/Fody/PropertyChanged

using PropertyChanged;

[ImplementPropertyChanged]
public partial class AirFrame
{
}

然后侦听引发的事件INotifyPropertyChanged并将其用作强制验证的触发器。