...

Windows Phone : introduzione e configurazione dell*ambiente

by user

on
Category: Documents
18

views

Report

Comments

Transcript

Windows Phone : introduzione e configurazione dell*ambiente
+
Il Binding
Nicolò Sordoni
+
Cos’è il binding?
In XAML, il binding è uno degli aspetti più complessi da
comprendere, ma anche uno dei più potenti. Il binding è un
canale di comunicazione fra un controllo ed un oggetto definito
nel codice ( o un altro controllo), che permette di riflettere, a
livello d’interfaccia, ogni cambiamento che avviene nei dati.
Il binding coinvolge due oggetti:

Target: è il controllo della UI che mostra le informazioni
all’utente e che interagisce con la sorgente.

Source: è la sorgente dei dati (ad esempio una lista di
stringhe)
+
Cos’è il binding?
Esistono 3 modalità di binding, definite dall’attributo Mode:

OneWay : Le modifiche alla sorgente vengono intercettate
dal target. E’ la modalità di default

TwoWay : Le modifiche apportate all’interfaccia vengono
riflesse sulla sorgente.

OneTime : La sorgente viene utilizzata per valorizzare il
target, ma eventuali modifiche successive verranno ignorate.
+
Binding fra controlli
Il binding permette di assegnare un valore ad una proprietà di
un determinato controllo, in base ad un determinato valore,
ottenuto dalla Sorgente. Per farlo, all’interno della proprietà
che vogliamo poter modificare, è necessario utilizzare una
markup extension di tipo Binding. Per capire meglio cosa
significhi, analizziamo il seguente esempio:
In questo esempio abbiamo utilizzato una TextBox ed un
TextBlock. Tramite Binding abbiamo valorizzato la proprietà
Text della TextBlock, associandola al testo della TextBox. In
questo modo, ogni volta che l’utente inserirà dei valori
nell’area di testo, anche il TextBlock cambierà valore.
+
Binding fra un controllo ed un
oggetto
Quando vogliamo associare la proprietà di un controllo ad un
oggetto definito a livello di codice, la sintassi è la seguente:
Per poter utilizzare un oggetto per definire tale binding, è
necessario che esso possieda una property con lo stesso nome
definito nell’attributo Path, quindi in questo caso deve
possedere una proprietà definita “Nome”.
+
Binding fra un controllo ed un
oggetto
A questo punto, per completare l’associazione, è sufficiente
associare, da codice, un’istanza della classe persona alla
proprietà DataContext del controllo stesso o di uno dei
container del controllo.
+
Binding fra un controllo ed un
oggetto
Vediamo un esempio che mostra la potenza di questo tipo di
funzionalità:
+
Binding fra un controllo ed un
oggetto
L’esempio precedente ci mostra come sia sufficiente definire
una classe con determinare proprietà ed associarla al
DataContext di un container, per far sì che, tutti i controlli
all’interno del contenitore, possano accedere alle proprietà
dell’oggetto.
Sebbene il binding sia molto più complesso di quanto visto in
queste semplici slide, quanto visto finora è necessario e
sufficiente per comprendere come utilizzare delle liste
assegnando loro un layout personalizzato.
+
Le ListView
Nicolò Sordoni
+ Le ListView
Una delle situazioni più ricorrenti in ambito mobile, è la necessità
di gestire un elenco di informazioni, di cardinalità potenzialmente
elevata, senza amdare ad intaccare le prestazioni del dispositivo.
In tutti gli ambienti ci vengono forniti degli strumenti per gestire
tale situazione in maniera ottimizzata, tramite una logica di riuso
delle celle.
In Windows Phone esiste il componente ListView, che,
analogamente agli altri ambienti, anzichè andara ad allocare un
numero di celle pari a quello degli elementi, riutilizza le View man
mano che non sono più visibili nello schermo.
+ Le ListView
Esistono vari modi di utilizzare una ListView. Il più semplice è
inserire gli elementi direttamente al suo interno da XAML.
Questo metodo è poco flessibile e probabilmente non è neanche
necessario l’utilizzo di una ListView per gestire questo tipo di
situazioni. Un utilizzo più comune è l’inserimento di valori da
codice:
+ ListView con Binding
Il metodo più flessibile e potente è comunque l’utilizzo di un
binding. Tramite tale funzionalità è possibile definire un layout
customizzato per le varie celle, associando ad ogni controllo un
valore recuperato dalla sorgente.
Per poter ottenere tale risultato, è necessario associare la
proprietà ItemSource della ListView ad un binding, dopodichè
definire il layout all’interno della proprietà ItemTemplate.
+ ListView con Binding
In questo esempio abbiamo inserito come Template uno
StackPanel, che contiene due TextBox: una per mostrare il nome e
l’altra per il cognome.
Come si nota inoltre, la sorgente dei dati viene recuperata tramite
binding (ItemSource ={Binding})
+ ListView con Binding
A questo punto è necessario definire una lista di oggetti che
possiedono le proprietà richieste (Nome e Cognome) e associarla
al DataContext della ListView:
Fly UP