Non capisco le varie modalità di associazione dati in WPF, come ad esempio:
- Senso Unico
- A due vie
- Una volta
- eccetera...
Cosa significa ciascuna di queste modalità?
Quando dovrebbero essere usati?
Risposte:
OneWay: Utilizzare questa opzione quando si desidera che la proprietà associata aggiorni l'interfaccia utente.TwoWay: Ha lo stesso comportamento di OneWaye OneWayToSourcecombinato. La proprietà associata aggiornerà l'interfaccia utente e le modifiche nell'interfaccia utente aggiorneranno la proprietà associata (la useresti con a TextBoxo a Checkboxper esempio).OneTime: Ha lo stesso comportamento OneWaytranne che aggiornerà l'interfaccia utente solo una volta. Questa dovrebbe essere la tua scelta predefinita per l'associazione (per vari motivi non approfondirò qui), dovresti usare altri tipi di associazioni solo se hai effettivamente bisogno della funzionalità extra.OneWayToSource: Questo è l'opposto di OneWay: le modifiche al valore dell'interfaccia utente aggiornano la proprietà associata.Se non specifichi nulla, il comportamento dipenderà dal controllo che stai utilizzando.
Per altre informazioni, vedere BindingModeenum su MSDN .
Un'associazione è composta da due entità:
La destinazione deve essere a DependencyObject(affinché il binding funzioni) e l'origine può essere a DependencyObjectoppure dovrebbe avere un meccanismo per imitare il sistema di binding di WPF a causa della sua modifica ( INotifyPropetyChnagedinterfaccia di implementazione ).
MVVM consiglia al progetto ViewModel di essere libero da qualsiasi riferimento correlato alla visualizzazione e quindi si consiglia di utilizzare l' INotifyPropertyChangedinterfaccia per fare in modo che l'oggetto Source venga ascoltato dall'associazione WPF. Il legame avviene tra una proprietà di Source e una proprietà di Target (deve essere a DependencyProperty). ad esempio, il valore TextPropertydella TextBoxclasse è DataBound per (dire) la UserNameproprietà del modello di visualizzazione. L'associazione WPF offre quattro tipi di associazione. Ricorda, il binding viene eseguito sul thread dell'interfaccia utente, a meno che non venga specificato diversamente per l'esecuzione.
UserNameproprietà di ViewwModel , si rifletterà nella casella di testo. Questo ha un costo intermedio poiché il sistema di associazione controlla solo la fonte per i cambiamenti.TextPropertyche la UserNameproprietà rimarranno sincronizzati e si aggiorneranno a vicenda se uno cambia. Questo è molto costoso in quanto il sistema di rilegatura deve guardare entrambe le parti per il cambiamento.TextProperty, la UserNameproprietà assumerà il valore modificato. Anche questo ha un costo intermedio poiché il sistema di rilegatura controlla solo Target per i cambiamenti.Label, TextBlockecc.Se non si menziona nulla, ogni proprietà di destinazione ha una modalità di associazione predefinita associata a se stessa. Ad esempio, il TextPropertydi a TextBoxha la modalità di associazione predefinita come TwoWay. Per il TextPropertydi un TextBlockè un modo.
È consigliabile scegliere la modalità corretta in quanto può aiutarti a ridurre la latenza dell'applicazione, specialmente nei casi in cui hai un numero elevato di controlli nella tua interfaccia utente.
Per ulteriori informazioni su MVVM ecco un articolo scritto da me.