我已经阅读了大量的教程,花了几个小时试图找出如何将一组单选按钮绑定到枚举的正确方法 . 我已经遵循了许多教程并尝试了不同的方法,没有运气 .
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: 有没有人看到/知道我哪里错了?经过大量的研究,我无法弄明白 . 谢谢!