2017-05-14 141 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... 
} 

这样,你不惹你的数据对象(图书),你不要用不必要的接口垃圾吧。

相关问题