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
- Personalizzare la pagina di errore con ASP.NET
- Windows Phone 8 usa IE10 come browser, quindi pieno supporto ad HTML5, compresi i ... https://aspit.co/wp-summit #WPSummit
- siete pronti? la #netconfit torna anche nel 2019!.NET Conference Italia 2019 sarà trasmessa live il 23 ottobre.Info e iscrizioni su => https://aspit.co/netconf-19
- Identificare una classe come complex type con Entity Framework Code First
- Applicare effetti bitmap agli elementi di WPF
- Data binding con ADO.NET
- Utilizzare controlli ASP.NET iterativi annidati