121 votes

Comment forcer une liaison WPF à actualiser?

J'ai une liste déroulante avec la source d'articles attachée en utilisant une reliure simple. Est-il possible d'actualiser cette liaison une fois la zone de liste déroulante chargée?

Merci d'avance.

219voto

H.B. Points 76352

Vous pouvez utiliser des expressions de liaison:

 private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
    ((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
                      .UpdateTarget();
}
 

Mais comme Blindmeis l’a noté, vous pouvez également déclencher des notifications de modification. De plus, si votre collection implémente INotifyCollectionChanged (par exemple, implémentée dans le ObservableCollection<T> ), elle se synchronisera afin que vous n’ayez pas à le faire .

60voto

blindmeis Points 10881

si vous utilisez mvvm et que votre source d’articles se trouve dans votre vm. appelez simplement INotifyPropertyChanged pour votre propriété de collection lorsque vous souhaitez actualiser.

 OnPropertyChanged("YourCollectionProperty");
 

37voto

dotNET Points 5290

Pour ajouter mes 2 centimes, si vous souhaitez mettre à jour votre source de données avec la nouvelle valeur de votre contrôle, vous devez appeler UpdateSource() au lieu de UpdateTarget() :

 ((TextBox)sender).GetBindingExpression(ComboBox.TextProperty).UpdateSource();
 

6voto

Kushal Waikar Points 1304

Essayez d'utiliser BindingExpression.UpdateTarget ()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X