Chi deve realizzare la parte dell'applicazione che ha l'onere di interagire con l'utente, certamente si sarà reso conto che superato lo scoglio creativo, necessario a creare qualcosa di accattivante, la parte più complessa è trovare una soluzione, possibilmente semplice, per creare un collegamento tra gli elementi dell'UI (user interface) e le informazioni provenienti dalla logica business. Quest'attività in genere prende il nome di DataBinding.
Perché DataBinding?
WPF (Windows Presentation Fundation) semplifica quest'attività allo sviluppatore, mettendogli a disposizione un sistema semplice e allo stesso tempo potente per mantenere un collegamento tra gli elementi dell'interfaccia e le entità di business. Tutto quello di cui abbiamo bisogno possiamo trovarlo nel namespace System.Windows.Data.
Immaginiamo una semplice applicazione WPF: parte dell'interfaccia comprende una Grid con una sola colonna e due righe, la prima della quale è occupata da una TextBox e la seconda da uno Slider, il nostro compito è visualizzare il valore selezionato di quest'ultimo nella TextBox.
Potremo creare un event handler per l'evento ValueChanged e nel corpo del metodo impostare manualmente la proprietà Text della TextBox.
<Grid ShowGridLines="True" >
<Grid.ColumnDefinitions>
<ColumnDefinition ></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBox
Grid.Column="0"
Grid.Row="0"
Name="MyTextBox"/>
<Slider
Grid.Column="0"
Grid.Row="1"
Name="MyScroll"
ValueChanged="ValueChangedeventHanlder"/>
</Grid>
private void ValueChangedeventHanlder(object sender, RoutedPropertyChangedEventArgs<double> e)
{
MyTextBox.Text = e.NewValue.ToString();
}
Ci siamo trovati centinaia di volte a scrivere righe di codice per certi versi simili, se non identiche a quelle precedenti e non rappresentano certo quindi una novità. Proseguiamo rimuovendo l'event handler, al suo posto utilizzeremo la classe Binding (namespace System.Windows.Data). Il nuovo codice sarà inserito nel costruttore del tipo MyWindows: la finestra principale della nostra applicazione.
public partial class MyWindow : System.Windows.Window
{
public MyWindow()
{
InitializeComponent();
Binding _binding = new Binding();
_binding.Source = MyScroll;
_binding.Path = new PropertyPath("Value");
MyTextBox.SetBinding(TextBox.TextProperty, _binding);
}
}A prima vista questa soluzione se confrontata con la precedente, non sembra particolatamente attraente; addirittura le righe di codice sono passate da una alle attuali quattro. Passiamo comunque all'analisi del codice. La prima riga crea un'istanza della classe Binding, quest'oggetto descrive le caratteristiche del DataBinding , come la sorgente dati che impostiamo nella riga successiva tramite la proprietà Source del tipo Object. Come il tipo della proprietà suggerisce, è possibile utilizzare qualsiasi oggetto come fonte dati, dal controllo, nel nostro caso lo Slider, a qualsiasi classe compatibile con il CLR o fonti dati in formato xml. Proseguiamo impostando la proprietà Path, la quale identifica la proprietà nella sorgente dati dalla quale prelevare il valore per aggiornare la TextBox, nel nostro caso è sufficiente indicare il nome della proprietà "Value" dello slider.
Contenuti dell'articolo
- Pagina 1
- Pagina 3
- Pagina 5
- Speciale per il lancio di Visual Studio 2008, SQL Server 2008 e Windows Server 2008 dal 25/02 al 07/03
- #55 - Accedere ai parametri di sistema da un'applicazione WPF
- Multithreading WPF nel Binding
- ASPItalia.com Future Web Conference: 15 gennaio 2008, L'Aquila
- FWC il giorno dopo
- #941 - Gestire al meglio gli eventi RowCommand di GridView e ItemCommand di DetailsView e FormsView con la classe DataControlCommands
- Rilasciato il SP1 del .NET Framework 3.5 e di VS 2008
- #35 - Applicare effetti bitmap agli elementi di WPF
- #935 - Sfruttare l'evento LoadComplete della pagina
- Lambda Expression in Windows Presentation Foundation
- Speciale Binding di Windows Presentation Foundation
- 10annidi.ASPItalia.com: nascono LINQItalia.com e SilverlightItalia.com
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
L'articolo è ottimo.Vorrei solo suggerire, per rendere il sorgente XAML più semplice e focalizzare l'attenzione del lettore sul tema trattato, di ...
Continua »»» | Rispondi »»»