具有 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}"/>

在这里,我需要编写一个 StringConverter,我将在其中将转换器参数作为 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;
    }
}

试试这个:

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;
    }
}

您可能还需要考虑将转换器类重命名为更合适的名称。

最新更新