So habe ich dieses Problem gelöst. Ich schrieb einen EnumToBool Konverter für diese, wie
public class EnumToBoolConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value,
Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if (parameter.Equals(value))
return true;
else
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return parameter;
}
#endregion
}
Und ich habe die folgende Aufzählung
public enum CompanyTypes
{
Type1Comp,
Type2Comp,
Type3Comp
}
nun in meiner XAML, ich bin die Art, wie der Konverter Parameter.
<Window x:Class="WpfTestRadioButtons.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTestRadioButtons"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<local:EnumToBoolConverter x:Key="EBConverter"/>
</Window.Resources>
<Grid>
<StackPanel>
<RadioButton IsChecked="{Binding Path=Type,
Converter={StaticResource EBConverter},
ConverterParameter={x:Static local:CompanyTypes.Type1Comp}}" Content="Type1"/>
<RadioButton IsChecked="{Binding Path=Type,
Converter={StaticResource EBConverter},
ConverterParameter={x:Static local:CompanyTypes.Type2Comp}}" Content="Type2"/>
</StackPanel>
</Grid>
</Window>
nun Ihrer Meinung nach Modell, sollten Sie eine Eigenschaft haben (in diesem Fall Typ), die dieser Enum-Typ ist.
Wie,
public CompanyTypes Type
{
get
{
return _type;
}
set
{
_type = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Type"));
}
}
In diesem Beispiel haben Sie vielleicht bemerkt, dass Radiobuttons statisch sind. In Ihrem Fall, wenn Sie die Optionsschaltflächen in einem Elementsteuerelement auflisten, müssen Sie auch den ConverterParameter Ihres RadioButton an den richtigen Typ binden.