WPF ToggleButton IsChecked liaison problème

Je suis en train de créer une situation où un seul ou aucun d'un regroupement de deux ToggleButtons peut être à tout moment. Le problème que j'ai est que si je modifie l'état de la sauvegarde des variables de l'INTERFACE utilisateur de l'état ne met pas à jour.

J'ai INotifyPropertyChanged mis en œuvre.

J'ai créé mon ToggleButtons comme ceci:

        <ToggleButton IsChecked="{Binding Path=IsPermanentFailureState, Mode=TwoWay}"
                      HorizontalContentAlignment="Center"
                      VerticalContentAlignment="Center">
            <TextBlock TextWrapping="Wrap" 
                       TextAlignment="Center">Permanent Failure</TextBlock>
        </ToggleButton>
        <ToggleButton IsChecked="{Binding Path=IsTransitoryFailureState, Mode=TwoWay}"
                      HorizontalContentAlignment="Center"
                      VerticalContentAlignment="Center">
            <TextBlock TextWrapping="Wrap" 
                       TextAlignment="Center">Temporary Failure</TextBlock>
        </ToggleButton>

C'est ma sauvegarde de propriétés (je suis en utilisant le pattern MVVM, les autres liaisons de travail, c'est à dire en cliquant sur le ToggleButton fait entrer ces paramètres de propriété. Quand je suis à la modification de l'état via le code, les Boutons de Bascule ne change pas l'état visuel. IE je suis réglage de la sauvegarde de la propriété à false, mais le bouton reste cochée.

    public bool? IsPermanentFailureState
    {
        get { return isPermFailure; }
        set
        {
            if (isPermFailure != value.Value)
            {
                NotifyPropertyChanged("IsPermanentFailureState");
            }
            isPermFailure = value.Value;
            if (isPermFailure) IsTransitoryFailureState = false;
        }
    }

    public bool? IsTransitoryFailureState
    {
        get { return isTransitoryFailureState; }
        set
        {
            if (isTransitoryFailureState != value.Value)
            {
                NotifyPropertyChanged("IsTransitoryFailureState");
            }
            isTransitoryFailureState = value.Value;
            if (isTransitoryFailureState) IsPermanentFailureState = false;
        }
    }

OriginalL'auteur Pieter Breed | 2009-09-04