【发布时间】:2009-09-24 16:50:08
【问题描述】:
我最近将 NHibernate 验证插入到我的应用程序中,我已经使用 NHibernate 属性修饰了我的域对象的属性......
[NotEmpty, Length(Min = 1, Max = 40)]
public string Description { get; set; }
我还在我的域对象上实现了 IDataErrorInfo ...
public string this[string columnName]
{
get
{
var result = new ValidatorEngine().Validate(this);
_invalidValues = result.Where(x => x.PropertyName == columnName).Select(x => x.Message);
return _invalidValues.FirstOrDefault();
}
}
public string Error
{
get
{
return string.Empty;
}
}
XAML 看起来像这样
<TextBox Grid.Row="0" Grid.Column="3" Text="{Binding Path=Entity.Description, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" IsEnabled="{Binding IsEditable}" ></TextBox>
我的问题是,当我创建域对象的新实例时,不会调用验证,因为实际上属性(例如我的示例中的描述)没有改变。
我打算编写一个方法来使用反射并将属性设置为它们已经相等的值以触发验证,但是这似乎是一种特别有效的方法!
有人可以让我重回正轨吗?
干杯,
安迪
【问题讨论】:
标签: wpf nhibernate validation mvvm binding