C# 将单选按钮绑定到枚举属性

C# 将单选按钮绑定到枚举属性,c#,wpf,xaml,enums,radio-button,C#,Wpf,Xaml,Enums,Radio Button,我想我已经遵循了本文中给出的示例,但是当按钮被更改时,我的属性并没有改变。对我的错误有什么建议吗 枚举和类的C#代码 public enum SystemTypes { TypeA, TypeB } public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } SystemTypes systemType = S

我想我已经遵循了本文中给出的示例,但是当按钮被更改时,我的属性并没有改变。对我的错误有什么建议吗

枚举和类的C#代码

public enum SystemTypes
{
    TypeA,
    TypeB
}

public partial class MainWindow : Window
{

    public MainWindow()
    {
        InitializeComponent();
    }
    SystemTypes systemType = SystemTypes.TypeA;
    public SystemTypes SystemType 
    {
        get { return systemType; }
        set { systemType = value; }
    }
}

public class EnumToBooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value.Equals(parameter);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value.Equals(true) ? parameter : Binding.DoNothing;
    }
}
xaml


您需要将绑定模式设置为双向,然后在转换器实现方法ConvertBack中负责将bool转换为SystemType,在SystemType的setter中包括

set { systemType = value; OnPropertyChanged(() => "SystemType");}
以填充其值已更改的属性

OnPropertyChanged(() => "SystemType")
如果实现接口INotifyPropertyChanged,则可以工作。我无法告诉您是否设置了DataContext,如果您没有绑定,则无法正常工作。为了在初始化组件()后纠正此问题,请添加


抱歉,忘记添加转换器代码。我编辑了这个问题以显示课堂上的情况,我也尝试了两种方法。您指定的代码不会编译,因为lambda表达式不是委托类型,但我认为这无关紧要,因为从未调用setter。您没有为窗口设置DataContext,因此它找不到要绑定的
SystemType
属性。
OnPropertyChanged(() => "SystemType")
this.DataContext = this;