定义枚举类型
public enum CoordinateEnum { X=0,Y,Z,RX,RY,RZ }
定义枚举转换Convert
public class EnumConvert : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return value != null && value.Equals(parameter); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value != null && value.Equals(true) ? parameter : Binding.DoNothing; } }
定义ViewModel
public class MainViewModel : INotifyPropertyChanged { private CoordinateEnum translateAxis = CoordinateEnum.X; public event PropertyChangedEventHandler PropertyChanged; public CoordinateEnum TranslateAxis { get { return translateAxis; } set { if (translateAxis != value) { translateAxis = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("TranslateAxis")); } } } }
WPF XAML定义
<Window.Resources> <local:EnumConvert x:Key="convert" /> </Window.Resources> <Grid> <StackPanel> <RadioButton Content="X" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.X}}" /> <RadioButton Content="Y" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.Y}}" /> <RadioButton Content="Z" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.Z}}" /> <RadioButton Content="RX" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.RX}}" /> <RadioButton Content="RY" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.RY}}" /> <RadioButton Content="RZ" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.RZ}}" /> </StackPanel> </Grid>
设置Context
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainViewModel();
}
}