在WPF应用程序中实现IDataErrorInfo或INotifyDataErrorInfo的限制

时间:2017-05-14 14:19:01

标签: c# wpf validation idataerrorinfo inotifydataerrorinfo

我正在开发一个WPF应用程序(MVVM)。我有一个来自单独程序集的类(Odata V4 Generated Proxy Class)。

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

现在我需要使用数据注释来修饰该类的属性,以便使用IDataErrorInfoINotifyDataErrorInfo接口验证属性。 例如:

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

问题:

由于此类处于单独的程序集中,因此无法创建分部类。 此类的属性受限于应用程序的UI元素。现在我需要在用户输入数据时验证属性。

我正在努力设计解决方案。 任何人都可以帮助我实现这个目标吗?

1 个答案:

答案 0 :(得分: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...
}

这样你就不会弄乱你的数据对象(Book),也不会乱用不必要的接口。