我已经阅读了大量的教程,花了几个小时试图找出如何将一组单选按钮绑定到枚举的正确方法 . 我已经遵循了许多教程并尝试了不同的方法,没有运气 .

My exact issue is: 每当我选择一个单选按钮时,它都会被选中 . 然后,当我选择另一个单选按钮时,BOTH按钮将保持选中状态,而不是相互排斥,只选择第二个 . 另外,我认为我的ViewModel中的枚举总是最终保留设置为第一个选择,并且无法正确更新 .

这是我的 enum 和属性:

public enum RadioButtonSelectionData
{
    SOC, iBatt, rBatt, Raw_Fifo, 
    Fifo_Length, Accumulator_Count, 
    OCV, Battery_Temperature, Slope
};

private RadioButtonSelectionData _Selection;

public RadioButtonSelectionData Selection
{
    get
    {
        return _Selection;
    }
    set
    {
        _Selection = value;
        RaisePropertyChanged("_Selection");
    }
}

这是我在.xaml中的单选按钮:

<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=SOC}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="SOC"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=iBatt}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="iBatt"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=rBatt}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="rBatt"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Raw_Fifo}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="Raw Fifo"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Fifo_Length}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="Fifo Length"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Accumulator_Count}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="Accumulator Count"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=OCV}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="OCV"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Battery_Temperature}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="Battery Temperture"/>
<RadioButton IsChecked="{Binding Path=Selection, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Slope}" Margin="30, 0, 0, 2" GroupName="Axis1" Content="Slope"/>

这是我的 EnumBooleanConverter 课程:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    string parameterString = parameter as string;
    if (parameterString == null)
        return DependencyProperty.UnsetValue;

    if (Enum.IsDefined(value.GetType(), value) == false)
        return DependencyProperty.UnsetValue;

    object parameterValue = Enum.Parse(value.GetType(), parameterString);

    return parameterValue.Equals(value);
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    string parameterString = parameter as string;
    if (parameterString == null)
        return DependencyProperty.UnsetValue;

    var s = Enum.Parse(targetType, parameterString);

    return s;
}

}

Question: 有没有人看到/知道我哪里错了?经过大量的研究,我无法弄明白 . 谢谢!