c# - 使用 IValidatableObject 将数据验证添加到 WPF 和 C# 中的 Entity Framework 实体

标签 c# .net wpf xaml entity-framework-4

我正在使用 WPF、C# 和 EntityFramework 4.0 开发应用程序。

我必须验证一个日期,如果日期晚于今天,我想向用户显示如下内容:

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}" />

我的部分类(class):

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);
 }

部分类中定义的消息(匹配 Entity Framework 类的名称)显示出来,但数据选择器从不显示红线。我做错了什么?我应该怎么做?

谢谢。

最佳答案

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

    ValidatesOnDataErrors=True

这对我有用

关于c# - 使用 IValidatableObject 将数据验证添加到 WPF 和 C# 中的 Entity Framework 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22023225/

相关文章:

c# - 在 Azure 中部署 MVC 站点时出错

.net - 在 Visual Studio 2012 中生成单个 exe 文件

wpf - ListView XAML 中的替代背景颜色

c# - WPF 和 Silverlight 应用程序有什么区别?

c# - 使用 Newtonsoft.Json 反序列化 DbGeometry

c# - 在 Visual Studio 中测试单独成功,在一组中失败

c# - 使用负年份创建 Instant

.net - 为什么单击其背景区域时 WPF 弹出窗口会关闭?

javascript - 使用 javascript 在 html 页面上显示来自 C# 的计时器

wpf - 具有 DataTemplate 的列表框项上的上下文菜单