C# 未选择任何选项时的单选按钮验证规则

C# 未选择任何选项时的单选按钮验证规则,c#,wpf,validation,radio-button,C#,Wpf,Validation,Radio Button,我想知道如何为单选按钮创建验证规则。我试图实现的是,用户必须通过单选按钮选择一个选项 My ViewModel具有基于枚举的属性: public enum Gender { Unknown, Male, Female } [ImplementPropertyChanged] public class MyViewModel { public Gender Gender { get; set; } public MyViewModel() {

我想知道如何为单选按钮创建验证规则。我试图实现的是,用户必须通过单选按钮选择一个选项

My ViewModel具有基于枚举的属性:

public enum Gender
{
    Unknown,
    Male,
    Female
}

[ImplementPropertyChanged]
public class MyViewModel
{
    public Gender Gender { get; set; }

    public MyViewModel()
    {
        Gender = Gender.Unknown;
    }
}

<StackPanel Orientation="Horizontal">
    <RadioButton Content="Male" IsChecked="{Binding Gender, ConverterParameter={x:Static data:Gender.Male}, Converter={StaticResource EnumToBooleanConverter}}"/>
    <RadioButton Content="Female" IsChecked="{Binding Gender, ConverterParameter={x:Static data:Gender.Female}, Converter={StaticResource EnumToBooleanConverter}}"/>
</StackPanel>
对于复选框红色边框、字体颜色等,我有一个“错误”样式


当性别仍然设置为未知时,如何实现为每个单选按钮触发ValidationRule?因此,所有这些都显示了我的“错误样式”

我已经让它工作了,不是使用ValidationRule,而是使用IDataErrorInfo

总结:

在代码中实现IDataErrorInfo 在xaml中,将NotifyOnSourceUpdate=True添加到ValidatesOnDaerRors=Trueto单选按钮
[ImplementPropertyChanged]
public class MyViewModel : IDataErrorInfo
{
    public Gender Gender { get; set; }

    public MyViewModel()
    {
        Gender = Gender.Unknown;
    }

    public string this[string name]
    {
        get
        {
            if (name == "Gender" && Gender == Gender.Unknown)
            {
                return "Gender need to be known";
            }
            return null;
        }
    }

    public string Error
    {
        get
        {
            return null;
        }
    }
}

<StackPanel Orientation="Horizontal">
    <RadioButton Content="Male" IsChecked="{Binding Gender, ConverterParameter={x:Static data:Gender.Male}, Converter={StaticResource EnumToBooleanConverter}, NotifyOnSourceUpdated=True, ValidatesOnDataErrors=True}"/>
    <RadioButton Content="Female" IsChecked="{Binding Gender, ConverterParameter={x:Static data:Gender.Female}, Converter={StaticResource EnumToBooleanConverter}, NotifyOnSourceUpdated=True, ValidatesOnDataErrors=True}"/>
</StackPanel>