私はこのHow to bind RadioButtons to an enum?を経験しました。
この質問に対する受け入れられた回答には、一般的な Enum から Boolean へのコンバーターの使用が含まれています。
私の問題は、ビューに2つのラジオボタンと列挙型があることです
public Enum LinkType
{
A,
B,
C,
D,
E,
F
}
ViewModel には、Called プロパティがあります。
public LinkType MyLinktype
{
get;set;
}
ViewModel の列挙型のプロパティが A、C、E の値を持つ場合、最初のラジオ ボタンは true になり、ViewModel の列挙型のプロパティが値を持つ場合、2 番目のラジオ ボタンは true になります。B,D,F
したがって、次のような一般的な EnumTo Boolean コンバーターのコンバーターパラメーターに複数の値を渡すにはどうすればよいですか
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>