2014-02-25 52 views
2

我在WPF,C#和EntityFramework 4.0做一个应用程序。添加数据验证与IValidatableObject实体框架实体在WPF和C#

我要验证一个日期,我想向用户展示,如果日期是今天这样的事情后:

http://www.nbdtech.com/images/blog/20100621/NiceValidation.png

我的代码是:

在LoanWindow.xaml:

<!-- In my window resources --> 
     <Style x:Key="datoNoValido" TargetType="{x:Type DatePicker}"> 
       <Style.Triggers> 
        <Trigger Property="Validation.HasError" Value="true"> 
         <Setter Property="ToolTip" Value="Wrong Date"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 

    <!-- After some code in the Grid --> 
     <DatePicker Style="{StaticResource datoNoValido}" 
        Name="fecha_SalidaDatePicker" 
        SelectedDate="{Binding Path=Fecha_Salidad, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true, UpdateSourceTrigger=PropertyChanged}" /> 

我的部分类:

public partial class Loan : IValidatableObject 
{ 
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (DateTime.Compare(MyDate, DateTime.Now.Date) < 0) 
     { 
      ValidationResult vr = new ValidationResult("the message", new[] { "MyDate" }); 
      this.validationErrors.Add(vr); 
     } 
     return this.validationErrors; 
    } 
} 

在LoanWindow.xaml.cs:

//Some code and after 
var errors = p.Validate(null); 
foreach (var item in errors) 
{ 
    MessageBox.Show(item.ErrorMessage); 
} 

在局部类中定义的消息(匹配实体框架类的名称)shown's起来,但datapicker从未示出的红线。我做错了什么?我应该怎么做?

Thnks。

+0

我只看到IDataErrorInfo的WPF中使用,因此我看它up:http://www.nujk.com/idataerrorinfo-vs-ivalidatableobject这是一个链接,介绍如何在WPF中使用IDataErrorInfo:http://codeblitz.wordpress.com/2009/05/08/wpf-validation-made -easy-with-idataerrorinfo/ –

+0

谢谢@LeeO。我会马上检查它 – Lindsay

回答

1

SelectedDate财产的唯一奇怪的事情,我看到的是你没有设置该属性

ValidatesOnDataErrors=True 

这对我的作品