Comportamiento extraño al intentar cambiar un RadioButton enlazado en WPF

He atado dos botones de radio en miChild ventana a unEnum en miViewModel que se construye en la ventana principal. El enlace funciona como se esperaba, pero he notado un comportamiento muy extraño que no puedo resolver. He proporcionado todo el código aquí para que pueda reconstruir el problema fácilmente.

Estos son los pasos para ver este comportamiento extraño:

Haga clic en el botón en la ventana principalChildWindow se abre y RadioButton está configurado como UsuarioElija Automático y luego elija Usuario nuevamente¡Cierra ChildWindow y vuelve a abrirlo! Intenta cambiar elRadioButton a automático. ¡No va a cambiar!
    <Window x:Class="RadioButtonBinding.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">

        <Button Content="Display Child Window" Click="DisplayChildWindow"/> 
    </Window>
    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();
        }
    }
    <Window x:Class="RadioButtonBinding.ChildWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:radioButtonBinding="clr-namespace:RadioButtonBinding"
            Title="ChildWindow" Height="300" Width="300">
        <Window.Resources>
            <radioButtonBinding:EnumBooleanConverter x:Key="EnumBooleanConverter"/>
        </Window.Resources>

        <StackPanel>
            <RadioButton Content="Automatic" 
                         GroupName="CalcMode"
                         IsChecked="{Binding Path=CalcMode, 
                                             Converter={StaticResource EnumBooleanConverter}, 
                                             ConverterParameter={x:Static radioButtonBinding:CalcMode.Automatic}}"/>

            <RadioButton Content="Custom"
                         GroupName="CalcMode"
                         IsChecked="{Binding Path=CalcMode, 
                                             Converter={StaticResource EnumBooleanConverter}, 
                                             ConverterParameter={x:Static radioButtonBinding:CalcMode.User}}"/>
        </StackPanel>
    </Window>
    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,
    }

ACTUALIZAR:

Sospecho que debe ser elConverter pero no se porque Simplemente cae en un bucle.

Respuestas a la pregunta(1)

Su respuesta a la pregunta