2017-04-12 67 views
0

我有一個場景,我爲一組單選按鈕保留了三個不同的屬性是否有可能使它單一?擁有3個單選按鈕的單個屬性並沒有正確更新

<RadioButton GroupName="os" IsChecked="{Binding Age} IsChecked="{Binding Name,Mode=TwoWay,Converter={StaticResource enumConverter},ConverterParameter=a}"/> 
<RadioButton GroupName="os" IsChecked="{Binding Age,Mode=TwoWay,Converter={StaticResource enumConverter},ConverterParameter=b}"/> 
<RadioButton GroupName="os" IsChecked="{Binding Age,Mode=TwoWay,Converter={StaticResource enumConverter},ConverterParameter=c}"/> 

在這裏,我需要編寫一個字符串轉換,其中,我將經過轉換器參數爲A,B,C爲各單選按鈕。

public class EnumMatchToBooleanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
          object parameter, CultureInfo culture) 
    { 
     if (value == null || parameter == null) 
      return false; 

     //string checkValue = value.ToString(); 
     //string targetValue = parameter.ToString(); 
     //return checkValue.Equals(targetValue, 
     //   StringComparison.InvariantCultureIgnoreCase); 
     if (value.ToString() == "True" && (parameter.ToString() == "a" || parameter.ToString() == "b" || parameter.ToString() == "c")) 
     { 
      return true; 
     } 
     else 
      return false; 
    } 

    public object ConvertBack(object value, Type targetType, 
           object parameter, CultureInfo culture) 
    { 
     if (value == null || parameter == null) 
     return null; 

     //bool useValue = (bool)value; 
     //string targetValue = parameter.ToString(); 
     //if (useValue) 
     // return Enum.Parse(targetType, targetValue); 

     //return null; 

     if (value.ToString() == "True" && (parameter.ToString() == "b" || parameter.ToString() == "a" || parameter.ToString() == "c")) 
     { 
      return true; 
     } 
     else 
      return false; 

    } 
} 
+0

您是否嘗試了我的建議或發生了什麼? – mm8

回答

0

試試這個:

public class EnumMatchToBooleanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value == null || parameter == null) 
      return false; 

     return value.ToString() == parameter.ToString(); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     bool isChecked = (bool)value; 
     if (isChecked) 
      return parameter.ToString(); 

     return Binding.DoNothing; 

    } 
} 

您可能還需要考慮重新命名的轉換器類,以更合適的東西。