2011-02-28 25 views
0

我嘗試通過創建公開該實體的ViewModel來採用實體級驗證(對實體屬性進行屬性驗證)。使用MVVM實現Silverlight實體級驗證

public class MyViewModel 
{ 
    public MyEntity MyEntity { get; set; } 
} 

我在XAML中設置綁定,此XAML頁面設置它的DataContext到MyViewModel

TextBlock Text="{Binding MyEntity.MyProperty}" 

例如當我從數據庫中加載myEntity所並將其設置爲MyViewModel,沒有發生。我也打電話NotifyPropertyChanged("MyEntity");,它仍然沒有發生。

我再試一次在MyViewModel

public class MyViewModel 
{ 
    private MyEntity MyEntity { get; set; } 

    public string MyProperty 
    { 
     get { return this.MyEntity.MyProperty; } 
     set { this.MyEntity.MyProperty = value; } 
    } 
} 

myProperty的創建和更改XAML綁定到myProperty的。這次我調用NotifyPropertyChanged(「MyProperty」);查看得到更新正確,當我輸入不正確的數據時,它在MyEntity有ValidationErrors,但查看不會引發該錯誤(不顯示紅色邊框)

我想知道如何才能獲得使用MVVM的實體級驗證。

+0

如果你能告訴我們這將有所幫助:A)MyEntity類B)XAML – 2011-03-04 14:55:37

回答

2


必須更改視圖模型的定義,例如

public class MyViewModel:IDataErrorInfo 
{ 
} 

和實現接口。 此強制視圖在錯誤時顯示紅色邊框。
希望提供幫助。