Ich habe ein Kombinationsfeld mit einer Artikelquelle, die durch einfaches Binden angehängt wurde. Gibt es eine Möglichkeit, diese Bindung nach dem Laden des Kombinationsfelds zu aktualisieren?
c#
wpf
data-binding
Techee
quelle
quelle
Antworten:
Sie können verbindliche Ausdrücke verwenden:
Aber wie Blindmeis bemerkt man kann auch Feuer Änderungsbenachrichtigungen, weiter , wenn Ihre Sammlung Geräte
INotifyCollectionChanged
(zum Beispiel in der UmsetzungObservableCollection<T>
) wird es synchronisieren , so dass Sie nicht irgendetwas davon zu tun brauchen.quelle
Wenn Sie mvvm verwenden und sich Ihre itemssource in Ihrer vm befindet. Rufen Sie einfach INotifyPropertyChanged für Ihre Sammlungseigenschaft auf, wenn Sie eine Aktualisierung durchführen möchten.
quelle
INotifyPropertyChanged
, die Sie jedoch für privat halten müssen Dieser Wrapper muss daher eine Eigenschaft und Methode für alles an diesem Port schreiben, den Sie an anderer Stelle im Projekt verwenden, um sicherzustellen, dass die Eigenschaften, über die Sie benachrichtigt werden möchten, immer den Wrapper durchlaufennameof(YourCollectionProperty)
im Gegensatz zu einer wörtlichen Zeichenfolge. Dies verhindert, dass Fehler umgestaltet werden, und ist expliziter, was tatsächlich beabsichtigt ist. Dies ist natürlich, wo Sie dasCallerMemberName
Attribut nicht verwenden können , das noch schöner istUm meine 2 Cent hinzufügen, wenn Sie Ihre Datenquelle mit dem neuen Wert von Ihrem Control aktualisieren möchten, müssen Sie rufen
UpdateSource()
stattUpdateTarget()
:quelle
MultiBinding freundliche Version ...
quelle
Versuchen Sie es mit
BindingExpression.UpdateTarget()
quelle
Ich habe Daten aus dem Backend abgerufen und den Bildschirm mit nur einer Codezeile aktualisiert. Es funktionierte. Ich bin mir nicht sicher, warum wir Interface implementieren müssen. (Windows 10, UWP)
quelle