上下文
我正在使用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的细粒度访问权限。我也无法想到可以触发验证的任何其他地方。
答案 0 :(得分:0)
您可以使用
为生成的机身模型注入INPC支持https://github.com/Fody/PropertyChanged
using PropertyChanged;
[ImplementPropertyChanged]
public partial class AirFrame
{
}
然后侦听引发的事件INotifyPropertyChanged并将其用作强制验证的触发器。