#12 - Riutilizzare gli elementi personalizzati usando i Template
di Cristian Civera, in Windows Presentation Foundation, XAML, 11 maggio 2007
Archiviato in: .NET Framework, .NET Framework 3.0, Microsoft Expression, Windows Presentation Foundation, XAML
Windows Presentation Foundation è un framework molto versatile, perché gli elementi che dispone non hanno una rappresentazione grafica prefissata, ma bensì è variabile a seconda del tipo, degli stili e del template associategli. Quest'ultimo permette di ridefinire il layout di ogni classe, che eredita da Control, impostando la proprietà Template di tipo ControlTemplate. E' possibile quindi sfruttare questa caratteristica per definire un modello, un'icona, un'immagine o qualsiasi elemento che si vuole riutilizzare una o più volte e farne uso dichiarando un Control nel punto in cui lo si vuole inserire.
L'esempio seguente chiarisce meglio il concetto. Viene definito un ControlTemplate di nome Point nelle risorse e poi sfruttata la classe Control, che di per se non fa niente, per applicare il template e inserire il punto in più parti nel codice XAML.
<Canvas> <Canvas.Resources> <ControlTemplate x:Key="Point"> <Ellipse Width="20" Height="20" Fill="Red" /> </ControlTemplate> </Canvas.Resources> <Control Canvas.Left="50" Canvas.Top="10" Template="{StaticResource Point}" /> <Button Canvas.Left="50" Canvas.Top="40"> <DockPanel> <Control Template="{StaticResource Point}" /> <TextBlock FontSize="20">Click</TextBlock> </DockPanel> </Button> </Canvas>
Si può sfruttare al massimo questa caratteristica mediante la classe ContentControl che permette di specificare il Content, di tipo object, che deve mostrare applicando il DataTemplate specifico o quello generico da applicare qualora si trovi di fronte ad un particolare tipo.
L'esempio seguente definisce un DataTemplate, per tutti i tipi String, che mostra un pallino seguito dalla stringa e definisce un elemento ContentControl per mostrare formattata la stringa "Ciao":
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Canvas> <Canvas.Resources> <DataTemplate DataType="{x:Type s:String}"> <DockPanel> <Ellipse Width="20" Height="20" Fill="Red" /> <TextBlock FontSize="20" Text="{Binding}" /> </DockPanel> </DataTemplate> </Canvas.Resources> <ContentControl Content="Ciao" /> </Canvas> </Page>
Questa tecnica viene utile quando all'interno delle medesima applicazione si vuole applicare lo stesso aspetto per il medesimo tipo (semplice o complesso) ogni qual volta viene mostrato.
Approfondimenti
-
La piattaforma Microsoft per il cloud computing: Windows Azure
-
MonoTouch in versione 1.0: C# per iPhone diventa realtà
-
Disinstallare la beta 2 prima di installare la RC di VS 2010
-
Disponibile Microsoft Expression Studio 3
-
#153 - Invocare servizi WCF da Javascript
-
#129 - Ruotare la camera di una scena 3D di WPF con il mouse
-
Suggerimenti per Silverlight 4.0
-
Real Code Day 4.0: costruire applicazioni reali - Firenze
-
#44 - Definire la grandezza design-time di un oggetto in Blend 2.0
-
#120 - Filtrare i risultati di una query in base ad una lista di dati predefiniti con Entity Framework
-
Rilasciato ASP.NET MVC 2 RC2
-
L'accesso ai dati nell'era del cloud computing con Windows Azure

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.