2009-09-24 99 views
0

我最近插入NHibernate的验证到我的应用程序,我饰我的域对象的属性与NHibernate的属性作为如此...WPF IDataErrorInfo和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> 

我的问题是,当我创建我的域名obj的一个新实例然后验证没有被调用,因为有效的属性(如我的例子中的描述)没有改变。

我打算写一个方法来使用反射并将属性设置为它们已经等于的值以触发验证,但是这个dosnt似乎是一种特别有效的方法!

有人能让我回到正轨吗?

干杯,

安迪

回答

1

的优秀文章这是因为属性都为空的,我需要另一个NHibernate的验证装饰考虑到那(NotNullNotEmpty)而不是我用过的NotEmpty。

[NotNullNotEmpty, Length(Min = 1, Max = 40)] 
public string Description { get; set; }