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?
Antworten:
OneWay: Verwenden Sie diese Option, wenn die gebundene Eigenschaft die Benutzeroberfläche aktualisieren soll.TwoWay: Dies hat das gleiche Verhalten wie OneWayund OneWayToSourcekombiniert. Die gebundene Eigenschaft aktualisiert die Benutzeroberfläche, und Änderungen an der Benutzeroberfläche aktualisieren die gebundene Eigenschaft (Sie würden dies beispielsweise mit einem TextBoxoder einem verwenden Checkbox.)OneTime: Dies hat das gleiche Verhalten wie, OneWayaußer dass die Benutzeroberfläche nur einmal aktualisiert wird. Dies sollte Ihre Standardauswahl für die Bindung sein (aus verschiedenen Gründen, auf die ich hier nicht näher eingehen werde). Sie sollten andere Arten von Bindungen nur verwenden, wenn Sie tatsächlich die zusätzliche Funktionalität benötigen.OneWayToSource: Dies ist das Gegenteil von OneWay- Änderungen der Benutzeroberflächenwerte aktualisieren die gebundene Eigenschaft.Wenn Sie nichts angeben, hängt das Verhalten von dem verwendeten Steuerelement ab.
Weitere Informationen finden Sie unter BindingModeAufzählung zu MSDN .
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 sein DependencyObjectoder es sollte einen Mechanismus haben, um das WPF-Bindungssystem zu imitieren, wenn es geändert wird (Implemeting- INotifyPropetyChnagedSchnittstelle).
MVVM empfiehlt, dass das ViewModel-Projekt frei von View-bezogenen Referenzen ist. Daher wird empfohlen, die INotifyPropertyChangedSchnittstelle 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 sein DependencyProperty). Beispiel: Die TextPropertyder TextBoxKlasse ist DataBound an (sagen wir) UserNameEigenschaft 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.
UserNameEigenschaft programmgesteuert ändern , wird sie im Textfeld angezeigt . Dies ist mit Zwischenkosten verbunden, da das Bindungssystem nur Source auf Änderungen überwacht.TextPropertyals auch die UserNameEigenschaft 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 die UserNameEigenschaft den geänderten Wert an. Dies ist wiederum mit Zwischenkosten verbunden, da das Bindungssystem nur Target auf Änderungen überwacht .Label, TextBlockusw.Wenn Sie nichts erwähnen, ist jeder Zieleigenschaft ein Standardbindungsmodus zugeordnet. ZB hat der TextPropertyvon a TextBoxden Standardbindungsmodus als TwoWay. Für die TextPropertyvon a ist TextBlockes 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.