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?
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 activer les notifications de modification, si votre collection implémente INotifyCollectionChanged
(par exemple, implémenté dans le ObservableCollection<T>
) il se synchronisera afin que vous n’ayez rien à faire.
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");
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();
MultiBinding version amicale ...
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
BindingOperations.GetBindingExpressionBase((ComboBox)sender, ComboBox.ItemsSourceProperty).UpdateTarget();
}
Essayez d'utiliser BindingExpression.UpdateTarget()