未选择任何选项时的 RadioButton ValidationRule
RadioButton ValidationRule when no option is selected
我正在尝试弄清楚如何为 radiobutton
创建验证规则。我想要实现的是用户必须通过单选按钮 select 一个选项。
我的 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>
我有 'error' 复选框样式(红色边框、字体颜色等)
当 Gender
仍设置为 Unknown
时,我应该如何实现为每个单选按钮触发 ValidationRule? (所以都显示我的错误风格)
我已经开始工作了,不是 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=True
到RadioButtons
我正在尝试弄清楚如何为 radiobutton
创建验证规则。我想要实现的是用户必须通过单选按钮 select 一个选项。
我的 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>
我有 'error' 复选框样式(红色边框、字体颜色等)
当 Gender
仍设置为 Unknown
时,我应该如何实现为每个单选按钮触发 ValidationRule? (所以都显示我的错误风格)
我已经开始工作了,不是 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=True
到RadioButtons