WPF RadioButton 绑定枚举

定义枚举类型

  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();
        }
    }
原文地址:https://www.cnblogs.com/houzf/p/15743830.html