J'ai une zone de liste déroulante avec la source des éléments attachée en utilisant une liaison simple. Existe-t-il un moyen d'actualiser cette liaison une fois la zone de liste déroulante chargée?
c#
wpf
data-binding
Techee
la source
la source
Réponses:
Vous pouvez utiliser des expressions de liaison:
Mais comme Blindmeis l'a noté, vous pouvez également déclencher des notifications de changement, de plus si votre collection implémente
INotifyCollectionChanged
(par exemple implémentée dans leObservableCollection<T>
), elle se synchronisera afin que vous n'ayez rien à faire de cela.la source
si vous utilisez mvvm et que votre source d'éléments se trouve dans votre vm. appelez simplement INotifyPropertyChanged pour votre propriété de collection lorsque vous souhaitez actualiser.
la source
INotifyPropertyChanged
, mais vous devrez garder le port privé pour ce wrapper et donc besoin d'écrire une propriété et une méthode pour tout sur ce port que vous utilisez ailleurs dans le projet pour vous assurer que les propriétés que vous souhaitez notifier passent toujours par le wrappernameof(YourCollectionProperty)
par opposition à une chaîne littérale. Cela empêche les bogues de refactoriser et est plus explicite ce qui est réellement prévu. C'est bien sûr là que vous ne pouvez pas utiliser l'CallerMemberName
attribut qui est encore plus agréablePour ajouter mes 2 cents, si vous souhaitez mettre à jour votre source de données avec la nouvelle valeur de votre Control, vous devez appeler
UpdateSource()
au lieu deUpdateTarget()
:la source
Version conviviale MultiBinding ...
la source
Essayez d'utiliser
BindingExpression.UpdateTarget()
la source
J'étais en train de récupérer des données depuis le backend et j'ai mis à jour l'écran avec une seule ligne de code. Ça a marché. Je ne sais pas pourquoi nous devons implémenter Interface. (Windows 10, UWP)
la source