2010-09-21 4 views
0

J'ai ToggleButton défini comme celui-ci en XAML:WPF twoway obligatoire et mise à jour du code-behind

<ToggleButton IsChecked="{Binding DateFilter, ElementName=myUserControl, Mode=TwoWay}"/> 

et 'DateFilter' défini comme ceci:

public Boolean DateFilter { get; set; } 

Lorsque je clique sur le toggle- bouton, 'DateFilter' est mis à jour en conséquence. MAIS, si je modifie 'DateFilter' dans le code, le ToggleButton ne se met pas à jour!
Comment puis-je faire cela?

+0

DataFilter génère-t-il un événement à partir de INotifyPropertyChanged? –

Répondre

0
public MyClass : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged = delegate {}; 

    private Boolean _dateFilter; 

    public Boolean DateFilter 
    { 
     get { return _dateFilter; } 
     set 
     { 
      _dateFilter = value; 
      PropertyChanged(this, new PropertyChangedEventArgs("DateFilter"); 
     } 
    } 
} 

Fondamentalement font que PropertyChanged appel chaque fois que vous changez le _dateFilter, ou tout simplement utiliser le setter, et vous serez triés. Définir le gestionnaire d'événements sur un délégué vide vous permet d'éviter les vérifications nuls.

+0

Cool thx! Eh bien, je pense que ça pourrait être beaucoup plus simple! – Fred

+0

Mettez-le dans un modèle Resharper - en voici un: http://koder.wordpress.com/2010/03/25/resharper-inotifypropertychanged/ – Lunivore

0

Vous devez ajouter l'héritage de INotifyPropertyChanged pour myUserControl et envoyer l'événement SetField DateFilter PropertyChanged avec le nom de propriété "DateFilter".

Questions connexes