2015-11-05 79 views
0

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

我的视图模型具有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? (所以所有显示我的'错误风格)

回答

0

我有它的工作,而不是与ValidationRuleIDataErrorInfo

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