In Silverlight l'engine di data binding è una caratteristica molto flessibile, con la quale è possibile rendere dinamiche alcune parti dell'interfaccia, sia in funzione di dati che di input gestiti dall'utente.
In uno UserControl, ad esempio, per sfruttare al meglio l'engine è necessario che siano utilizzate in binding le proprietà di un oggetto impostato come DataContext del controllo stesso, oggetto che implementi l'interfaccia INotifyPropertyChanged.
Grazie alla direttiva Self di RelativeSource, in Silverlight 3 possiamo utilizzare il data binding per impostare come DataContext il code behind dello UserControl stesso, in modo che possano essere utilizzate in binding le proprietà definite direttamente nella sua classe:
<UserControl x:Class="_76.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="{Binding RelativeSource={RelativeSource Self}}">
Di seguito un esempio in cui la classe di code behind espone una proprietà di nome "Testo":
public partial class MainPage : UserControl, INotifyPropertyChanged { public MainPage() { InitializeComponent(); } private string _testo; public string Testo { get { return _testo; } set { _testo = value; OnPropertyChanged("Testo"); } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler propertyChanged = this.PropertyChanged; if (propertyChanged != null) propertyChanged(this, new PropertyChangedEventArgs(propertyName)); } }
Con tale esempio, ogni controllo dello UserControl che utilizzerà la proprietà "Testo" sarà automaticamente aggiornato del cambiamento del suo valore.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Estrarre dati randomici da una lista di oggetti in C#
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione