Je suis passé par là Comment lier les RadioButtons à un enum ?
et la réponse acceptée à cette question contient l'utilisation d'un convertisseur générique Enum vers Boolean.
Mon problème est que j'ai deux boutons radio dans la vue et un enum.
public Enum LinkType
{
A,
B,
C,
D,
E,
F
}
Dans le ViewModel, j'ai une propriété appelée
public LinkType MyLinktype
{
get;set;
}
mon premier bouton radio peut être vrai si la propriété de l'enum dans le ViewModel a une valeur parmi A, C, E et le second bouton radio peut être vrai si la propriété de l'enum dans le ViewModel a une valeur parmi B,D,F
Alors, comment puis-je passer plusieurs valeurs dans le paramètre du convertisseur dans le convertisseur générique EnumTo Boolean Converter qui est le suivant
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);
}
Quels sont donc les changements que je dois faire dans le convertisseur si je veux quelque chose comme ceci dans le 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>