c# - 在对象的 ObservableCollection 上实现 INotifyDataErrorInfo

标签 c# wpf mvvm observablecollection inotifydataerrorinfo

上下文

我正在使用 MVVM 和 Entity Framework (数据库优先)开发 WPF 应用程序。我有一个机身对象的 ObservableCollection(通过 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 (数据库优先)时,我无法在生成的机身模型中摆弄 setter 。我看不到如何获得细粒度的访问权限来更改机身对象的 ObservableCollection 中的 setter 。我也想不出任何其他可以触发验证的地方。

最佳答案

您可以使用 INPC 支持您生成的机身模型

https://github.com/Fody/PropertyChanged

using PropertyChanged;

[ImplementPropertyChanged]
public partial class AirFrame
{
}

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

关于c# - 在对象的 ObservableCollection 上实现 INotifyDataErrorInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41386654/

相关文章:

C# 数据表 LINQ 动态 row.field<datatype> 需要编码

c# - 为什么 C# 编译器为每个传递的委托(delegate)创建一个新的 Action 实例?

c# - 从索引数组动态填充 mvvm 模型

c# - ViewModels、CQRS 和实体

c# - 如何通过列名获取Excel中的列号

c# - MemoryCache 和每次调用多个 WCF 服务

c# - 从任务返回而不阻塞 UI 线程

c# - 查找 RichTextBox 中的所有图像

c# - 更改 ListBox 的 UniformGrid 列数的最佳方法是什么?

c# - 在 C# 中减去时间的最简单方法是什么?