2017-05-14 139 views
0

我正在開發一個WPF應用程序(MVVM)。我有一個單獨的程序集(Odata V4生成的代理類)的類。在WPF應用程序中實現IDataErrorInfo或INotifyDataErrorInfo的限制

public partial class Book : BaseEntityType, INotifyPropertyChanged 
{ 
    public string Title{get;set;} 
    ... 
} 

現在我需要裝飾用數據註解的是類的屬性,爲了使用任一IDataErrorInfoINotifyDataErrorInfo接口來驗證屬性。 例:

[Required] 
public string Title{get;set;} 

問題:

由於這類是在單獨的組件中,我無法創建部分類。 此類的屬性與應用程序的UI元素有界。現在我需要驗證用戶輸入數據時的屬性。

我正在努力設計解決方案。 任何人都可以幫助我達到這個目標嗎?

+0

你可以使用一個包裝到你的數據對象,一個可以實現INotifyPropertyChanged綁定到它,並有驗證邏輯。 你的數據對象應該仍然存儲,但你也應該有一個地方來存儲你的包裝對象。 – Mishka

+0

@Mishka,提供代碼示例將不勝感激。 – Rahul

回答

0

的包裝紙可能是這樣的:

public class BookWrapper : INotifyPropertyChanged, IDataErrorInfo 
{ 
    private Book _book; 
    public Book Book 
    { 
     get 
     { 
     return _book; 
     } 
     set 
     { 
     _book-value; 
     NotifyPropertyChanged("Book"); 
     } 
    } 
    public string Error 
    { 
     get { return String.Empty; } 
    } 
    public string this[string columnName] 
    { 
     get 
     { 
      String errorMessage = String.Empty; 
      switch (columnName) 
      { 
       case "Book": 
        if (Book.IsValid==false) 
        { 
         errorMessage = "Book not valid"; 
        } 
        break; 
      } 
      return errorMessage; 
     } 
    } 
    INotifyPropertyChanged Implementation... 
} 

這樣,你不惹你的數據對象(圖書),你不要用不必要的接口垃圾吧。

相關問題