
Nel nostro semplice esempio la logica per la selezione del template magari non è sufficientemente complessa da giustificare la creazione di una nuova classe, ma anche in questo caso WPF mostra la sua enorme superiorità a qualsiasi altro sistema di Binding e presentazione mettendo a disposizione una collezione di trigger che l'oggetto DataTemplate e tutti i derivati da FrameworkTemplate espongono.
Mediante l'uso dei trigger è possibile valutare il valore di una determinata proprietà dell'oggetto da visualizzare e di conseguenza modificare il layout del template. Riproviamo quindi a riprodurre il comportamento ottenuto in precedenza utilizzando la classe ByGameGenreDataTemplateSelector mediante l'uso dei DataTrigger.
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Game.Genre}">
<DataTrigger.Value>
<FairPlay:GameGenre>Rpg</FairPlay:GameGenre>
</DataTrigger.Value>
<Setter TargetName="Border" Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="LightSlateGray" Offset="0.0" />
<GradientStop Color="SteelBlue" Offset="1.0" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</DataTrigger>
</DataTemplate.Triggers>
Utilizzando l'ormai consueta Object Element Sintax e l'Attribute Syntax istanziamo l'oggetto DataTrigger e impostiamo la proprietà Binding e tramite la Property Element Syntax impostiamo il valore enumerato GameGenre.Rpg da utilizzare nel confronto. Quando quest'ultimo è uguale alla proprietà Game.Genre questo fa scattare il trigger, impostando mediante l'utilizzo del Setter il nuovo valore della proprietà Background dell'elemento Border.
L'unica modifica apportata al template all'infuori di quelle inerenti alla definizione del DataTrigger, riguarda l'assegnazione di un nome all'oggetto Border così da poterlo recuperare dal Setter mediante l'utilizzo della proprietà TargetName.
Se presi dalla curiosità, avete provato a selezionare un qualsiasi item della ListBox è facile notare che la ListBox non fornisce più un feedback congruo e chiaro al nuovo aspetto definito mediante l'uso del DataTemplate. Senza cadere nella tentazione di definire l'aspetto dell'item selezionato modificando una dei DataTemplate, rivediamo invece quanto fatto fino ad adesso. Come il nome suggerisce l'oggetto DataTemplate dovrebbe essere utilizzato solo per il layout dell'oggetto da visualizzare e questo mal si sposa con il definire in un template uno sfondo con l'unico scopo di "abbellire" l'elemento.
Contenuti dell'articolo
- Introduzione a .NET Micro Framework
- Gestire transazioni miste con NTFS in Windows Server 2008
- Windows Presentation Foundation 3.5: 3D interattivo e le altre novità del framework
- Le novità di Communication e Workflow Foundation e la loro cooperazione nel .NET Framework 3.5
- .NET Framework 3.5 e Visual Studio 2008: cosa c'è di nuovo
- Gestione delle eccezioni in Windows Communication Foundation
- Sviluppare workflow sequenziali con WF
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!