尝试在WPF中更改绑定的RadioButton时的奇怪行为

我已经在我的Child窗口中将两个单选按钮绑定到我的ViewModelEnum ,它在主窗口中构建。 绑定按预期工作,但我注意到一个非常奇怪的行为,我无法解决。 我在这里提供了所有代码,因此您可以轻松地为自己重建问题。

以下是查看这种奇怪行为的步骤:

  1. 单击MainWindow中的按钮
  2. ChildWindow打开,RadioButton设置为User
  3. 选择自动,然后再次选择用户
  4. 关闭ChildWindow并重新打开它! 尝试将RadioButton更改为自动。 它不会改变!
   
  public partial class MainWindow { public MainWindow() { InitializeComponent(); var viewModel = new ViewModel(); DataContext = viewModel; } private void DisplayChildWindow(object sender, RoutedEventArgs e) { var win = new ChildWindow {DataContext = (ViewModel) DataContext}; win.ShowDialog(); } } 
           
  public class ViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private CalcMode calcMode = CalcMode.User; public CalcMode CalcMode { get { return calcMode; } set { calcMode = value; RaisePropertyChanged("CalcMode"); } } private void RaisePropertyChanged(string propertyName) { var handler = PropertyChanged; if (handler == null) return; handler(this, new PropertyChangedEventArgs(propertyName)); } } 
  public class EnumBooleanConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var paramEnum = parameter as Enum; var valueEnum = value as Enum; return Equals(paramEnum, valueEnum); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { var parameterEnum = parameter as Enum; if (parameterEnum == null) return DependencyProperty.UnsetValue; return parameterEnum; } } public enum CalcMode : byte { Automatic, User, } 

更新:

我怀疑它一定是Converter但我不知道为什么? 它只是陷入了一个循环。

编辑如何将枚举转换为bool如下?

 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (parameter == null || !(bool)value) return DependencyProperty.UnsetValue; var parameterEnum = parameter as Enum; return parameterEnum; }