【问题标题】:RadioButton ValidationRule when no option is selected未选择任何选项时的 RadioButton ValidationRule
【发布时间】:2016-02-06 14:09:36
【问题描述】:

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

我的 ViewModel 有一个基于 Enum 的属性:

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>

我的复选框有一个“错误”样式(红色边框、字体颜色等)

Gender 仍设置为 Unknown 时,我应该如何实现每个单选按钮都会触发 ValidationRule? (所以都显示我的“错误风格”)

【问题讨论】:

    标签: c# wpf validation radio-button


    【解决方案1】:

    我已经成功了,不是ValidationRule,而是IDataErrorInfo

    [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>
    

    总结:

    • 在代码中实现IDataErrorInfo
    • 在 xaml 中添加 NotifyOnSourceUpdated=True, ValidatesOnDataErrors=Trueto RadioButtons

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多