Non capisco i vari dati modalità in WPF, come vincolanti:Quali sono le varie modalità di associazione WPF?
- One-Way
- bidirezionale
- One-Time
- ecc ...
Cosa significa ciascuna di queste modalità?
Quando dovrebbero essere utilizzati?
Non capisco i vari dati modalità in WPF, come vincolanti:Quali sono le varie modalità di associazione WPF?
Cosa significa ciascuna di queste modalità?
Quando dovrebbero essere utilizzati?
OneWay
: utilizzare questo quando si desidera che la proprietà associata aggiorni l'interfaccia utente.TwoWay
: ha lo stesso comportamento di OneWay
e OneWayToSource
combinato. La proprietà bound aggiornerà l'interfaccia utente, e cambiamenti nell'interfaccia utente aggiornare la proprietà legataOneTime
(si può usare questo con un TextBox
o un Checkbox
per esempio.): Questo ha lo stesso comportamento di OneWay
tranne lo farà aggiorna l'interfaccia utente solo una volta. Questa dovrebbe essere la tua scelta di default per il binding (per varie ragioni che non approfondirò qui), dovresti usare solo altri tipi di binding se hai effettivamente bisogno della funzionalità extra.OneWayToSource
: questo è l'opposto di OneWay
- le modifiche del valore dell'interfaccia utente aggiornano la proprietà associata.Se non si specifica nulla, il comportamento dipende dal controllo che si sta utilizzando.
Per ulteriori informazioni, vedere BindingMode
enum on MSDN.
Un legame è costituito da due entità:
il target è essere un DependencyObject
(per il collegamento al lavoro) e l'origine può essere un DependencyObject
o dovrebbe avere qualche meccanismo per imitare il sistema di binding WPF m su di esso viene cambiato (Implemeting interfaccia INotifyPropetyChnaged
).
MVVM raccomanda il progetto ViewModel di essere libero da qualsiasi riferimento correlate Visualizzazione e quindi si consiglia di utilizzare INotifyPropertyChanged
interfaccia per rendere l'oggetto sorgente viene ascoltata legandosi WPF. Il binding avviene tra una proprietà di Source e una proprietà di Target (deve essere un DependencyProperty
). ad es. Il TextProperty
della classe TextBox
è DataBound per (dire) UserName
la proprietà del modello di vista. Il binding WPF offre quattro tipi di binding. Ricorda che Binding viene eseguito sul thread UI, a meno che non venga specificato diversamente per l'esecuzione.
UserName
di ViewwModel, verrà visualizzata nella casella di testo. Questo è di costo intermedio poiché il sistema di rilegatura guarda solo Source per le modifiche.TextProperty
e UserName
rimarranno sincronizzate e si aggiorneranno a vicenda se si cambia. Questo è il più costoso in quanto il sistema di rilegatura deve controllare entrambe le parti per il cambiamento.TextProperty
, la proprietà UserName
riprenderà il valore modificato. Anche questo è di costo intermedio in quanto il sistema di rilegatura guarda solo Target per le modifiche.Label
, TextBlock
eccSe non si parla di niente, ogni bersaglio struttura dispone di una modalità di rilegatura predefinito associato con se stesso. Per esempio. il TextProperty
di un TextBox
ha la modalità di associazione predefinita come TwoWay
. Per il TextProperty
di un TextBlock
è unidirezionale.
Si consiglia di scegliere la modalità corretta in quanto può aiutare a ridurre la latenza dell'applicazione, specialmente nei casi in cui si dispone di un numero elevato di controlli nell'interfaccia utente.
Per ulteriori informazioni su MVVM here è un articolo scritto da me.
Grazie. è utile ... Ma plz specifica l'esempio di TwoWay ... voglio sapere come si riflette il code-behind. –
@DATT: cosa intendi con "specificare"? Fondamentalmente, se imposti Mode = TwoWay in XAML, quando cambi il valore della GUI, aggiornerà automaticamente la proprietà C#. Ma la tua proprietà in code-behind deve essere implementata in una classe (come un ViewModel) che implementa l'interfaccia INotifyPropertyChanged. Quando il code-behind modifica il valore della proprietà tramite set, è necessario chiamare PropertyChanged in modo che la GUI venga informata della modifica del valore e si aggiornerà automaticamente. – Dave
Se non si specifica nulla, il comportamento dipende dal PROPRIETÀ che si sta utilizzando. – sam