Ich verstehe die verschiedenen Datenbindungsmodi in WPF nicht, wie zum Beispiel:
- Einweg
- Zweiwege
- Einmal
- etc...
Was bedeutet jeder dieser Modi?
Wann sollten sie verwendet werden?
wpf
data-binding
DATT OZA
quelle
quelle
Eine Bindung besteht aus zwei Entitäten:
Das Ziel muss a sein
DependencyObject
(für die Bindung an die Arbeit) und die Quelle kann entweder a seinDependencyObject
oder es sollte einen Mechanismus haben, um das WPF-Bindungssystem zu imitieren, wenn es geändert wird (Implemeting-INotifyPropetyChnaged
Schnittstelle).MVVM empfiehlt, dass das ViewModel-Projekt frei von View-bezogenen Referenzen ist. Daher wird empfohlen, die
INotifyPropertyChanged
Schnittstelle zu verwenden, damit das Quellobjekt von der WPF-Bindung gehört wird. Die Bindung erfolgt zwischen einer Eigenschaft von Source und einer Eigenschaft von Target (muss a seinDependencyProperty
). Beispiel: DieTextProperty
derTextBox
Klasse ist DataBound an (sagen wir)UserName
Eigenschaft des Ansichtsmodells. Die WPF-Bindung bietet vier Arten der Bindung. Denken Sie daran, dass die Bindung auf einem UI-Thread ausgeführt wird, sofern Sie nichts anderes angeben.UserName
Eigenschaft programmgesteuert ändern , wird sie im Textfeld angezeigt . Dies ist mit Zwischenkosten verbunden, da das Bindungssystem nur Source auf Änderungen überwacht.TextProperty
als auch dieUserName
Eigenschaft bleiben synchron und aktualisieren sich gegenseitig, wenn sich eine ändert. Dies ist am kostspieligsten, da das Bindungssystem beide Seiten auf Änderungen überwachen muss.TextProperty
, nimmt dieUserName
Eigenschaft den geänderten Wert an. Dies ist wiederum mit Zwischenkosten verbunden, da das Bindungssystem nur Target auf Änderungen überwacht .Label
,TextBlock
usw.Wenn Sie nichts erwähnen, ist jeder Zieleigenschaft ein Standardbindungsmodus zugeordnet. ZB hat der
TextProperty
von aTextBox
den Standardbindungsmodus alsTwoWay
. Für dieTextProperty
von a istTextBlock
es eine Möglichkeit.Es ist ratsam, den richtigen Modus zu wählen, da dies Ihnen helfen kann, die Anwendungslatenz zu verringern, insbesondere in Fällen, in denen Ihre Benutzeroberfläche eine große Anzahl von Steuerelementen enthält.
Für mehr über MVVM hier ist ein Artikel von mir geschrieben.
quelle