数据注释是否仅适用于 ASP.NET?

Do Data Annotations only work with ASP.NET?

这是一个严肃的问题,因为 2 天后我仍然无法让数据注释与 WPF 应用程序中的 classes 一起工作。似乎每篇涉及数据注释的 Google 文章都提到了 ASP、MVC 或其他一些我没有使用的基于 Web 的东西。我已经遵循了之前给出的所有建议,但验证不起作用。

我正在使用 Entity Framework 数据库优先方法和使用 MVVMLight 库的 MVVM 模式。 (不知道和这个有没有关系。)

我添加了 'buddy' class 正如人们所说。

public class MemberMetadata
{
    [Required(AllowEmptyStrings = false, ErrorMessage = "Forename is required.")]
    public string Forename;
}

[MetadataType(typeof(MemberMetadata))]
public partial class Member
{
}

我在应用程序加载时注册了此 class。 (在 App.xaml.cs 构造函数中)

TypeDescriptor.AddProvider(new AssociatedMetadataTypeTypeDescriptionProvider(typeof(Member), typeof(MemberMetadata)), typeof(Member));

我的绑定是这样设置的:

<ContentControl Template="{StaticResource LabelledTextBox}" 
                            Content="Forename: " 
                            DataContext="{Binding Path=SelectedMember.Forename, 
                                          UpdateSourceTrigger=PropertyChanged, 
                                          ValidatesOnExceptions=True,
                                          NotifyOnValidationError=True, 
                                          ValidatesOnNotifyDataErrors=True,
                                          ValidatesOnDataErrors=True, 
                                          Mode=TwoWay}"/>

我还需要做什么?或者更确切地说,我应该怎么做?因为在一个方法中编写 40 个 if 语句或为我需要的每个验证规则创建一个 class 是完全荒谬的。

在您的 class 中,为属性添加注释并继承自 PropertyChangedNotification。此外,实现 INotifyPropertyChangedIDataErrorInfo 接口。