7
votes

Radiobutton ischecked perd la liaison

Je tiens à lier à une propriété radioobutton.ischeckedecked, et cela ne fonctionne qu'une fois. Après cela, la liaison ne fonctionne pas, et je ne sais pas pourquoi cela se produit. Quelqu'un peut-il aider avec cela? Merci!

Ceci est mon code. P>

C # P>

<Grid>
    <StackPanel>
        <RadioButton Content="RadioButton1" IsChecked="{Binding IsChecked1}" />
        <RadioButton Content="RadioButton2" IsChecked="{Binding IsChecked2}" />
    </StackPanel>
</Grid>


0 commentaires

4 Réponses :


5
votes

Il est un malheureux Bug connu . Je suppose que cela a été corrigé dans WPF 4.0 donné le nouveau dépendancebject.setCurrentValue API, mais n'a pas vérifié.


2 commentaires

Ah c'est juste horrible. Je suppose que je devrai revenir aux gestionnaires d'événements ... vous connaissez des solutions de contournement à part cela?


Utilisez une liste Listbox et Style chaque ListboxItem Pour ressembler à un radiobutton . code.msdn.microsoft.com/wpfradiobuttonlist



0
votes

Je suppose que vous devez implémenter l'interface INOTIFYPROPERTYCHANGED

public event PropertyChangedEventHandler PropertyChanged;

private void NotifyPropertyChanged(String info)
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(info));
    }
}


private bool _isChecked1 = true;
public bool IsChecked1
{
    get { return _isChecked1; }
    set
    {
        if (_isChecked1 != value)
        {
            _isChecked1 = value;
            NotifyPropertyChanged("IsChecked1");
        }
    }
} // and the other property...


0 commentaires

1
votes

Voici une solution de travail: http: // PSTAEV. blogspot.com/2008/10/binding-ischecked-property-of.html . C'est une honte que Microsoft n'a pas corrigé cette erreur.


0 commentaires

1
votes

Juste un suivi de la réponse de Kent ici ... Cela a en fait été corrigé dans WPF 4.0., Je tire parti de ce comportement dans mon projet actuel. Le bouton radio désactivé a maintenant sa valeur de liaison définie sur FALSE, plutôt que de casser la liaison.


0 commentaires