我已经通过这个如何将 RadioButtons 绑定到枚举?
并且接受的这个问题的答案包含使用通用枚举到布尔转换器。
我的问题是我在视图中有两个单选按钮和一个枚举
public Enum LinkType
{
A,
B,
C,
D,
E,
F
}
在 ViewModel 我有一个属性叫做
public LinkType MyLinktype
{
get;set;
}
如果 ViewModel 中的枚举属性在 A、C、E 之间具有值,我的第一个单选按钮可以为真,如果 ViewModel 中的枚举属性在其中具有值,则第二个单选按钮可以为真。B,D,F
那么,如何在通用 EnumTo 布尔转换器的转换器参数中传递多个值,如下所示
public class EnumBooleanConverter : IValueConverter
{
#region IValueConverter Members
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;
return Enum.Parse(targetType, parameterString);
}
那么如果我想在 XAML 中进行类似的操作,我必须在转换器中进行哪些更改
<RadioButton IsChecked="{Binding Path=MyLinktype, Converter={StaticResource enumBooleanConverter}, ConverterParameter=A,C,F}">Odd LinkType</RadioButton>
<RadioButton IsChecked="{Binding Path=Mylinktype, Converter={StaticResource enumBooleanConverter}, ConverterParameter=B,D,E}">Even Link Type</RadioButton>