2015-11-05 78 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