2009-09-24 82 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; }