Caricare un Template in modo condizionale

Come avevo anticipato nel post precedente vorrei esporre un tip per poter selezionare un template per rappresentare un determinato dato in base ad una condizione.

Supponiamo di avere una situazione simile al post precedente, in cui ho un ViewModel che mi rappresenta un ordine: OrderViewModel. Voglio rappresentare OrderViewModel in tre modi diversi in base al fatto che esso rappresenti la scheda di un ordine, un ordine in modifica o un ordine nuovo.

Per fare ciò implemento tre View diverse con tre UserControl e le associo ad altrettanti ControlTemplate nel seguente modo:

<ControlTemplate x:Key="OrderDetailTemplate" TargetType="{x:Type Control}"> <View:OderDetailView /> </ControlTemplate> <ControlTemplate x:Key="OrderCreationTemplate" TargetType="{x:Type Control}"> <View:OrderCreationView /> </ControlTemplate> <ControlTemplate x:Key="OrderModifyTemplate" TargetType="{x:Type Control}"> <View:OderModifyView /> </ControlTemplate>

Perchè faccio tre ControlTemplate? Perchè in questo modo posso creare un DataTemplate associato ad OrderViewModel che carica il template corretto a seconda della condizione definita prima in questo modo:

<DataTemplate DataType="{x:Type ViewModel:OrderViewModel}"> <Control x:Name="control" Template="{StaticResource OrderDetailTemplate}" /> <DataTemplate.Triggers> <DataTrigger Binding="{Binding Path=IsModifying}" Value="True"> <Setter TargetName="control" Property="Template" Value="{StaticResource OrderModifyTemplate}" /> </DataTrigger> <DataTrigger Binding="{Binding Path=IsNew}" Value="True"> <Setter TargetName="control" Property="Template" Value="{StaticResource OrderCreationTemplate}" /> </DataTrigger> </DataTemplate.Triggers> </DataTemplate>

Come si vede dal codice XAML per cambiare il Template associato al Control, usato dal DataTemplate per visualizzare il mio OrderViewModel, è sufficiente definire dei DataTrigger che verificano le proprietà di interesse (nel mio caso IsModifying e IsNew).

Un DataTrigger permette di definire delle condizioni sulle proprietà dell'oggetto rappresentato dal DataTemplate; quando la condizione è verificata vengono eseguiti i Setter contenuti al suo interno, che si occupano si settare il valore Value alla proprietà Property dell'elemento TargetName. Si deve tenere conto che i DataTrigger vengono eseguiti in cascata; vince quindi l'ultima condizione verificata. Nel mio caso è importante tenere conto dell'ordine perchè nel Model quando la proprietà IsNew è True, risulta True anche la proprietà IsModifying. Per ovviare all'inconveniente di avere più condizioni vere simultaneamente avrei potuto usare dei MultiDataTrigger per mettere più condizioni in And, in modo da renderle mutuamente esclusive.

 

Matteo

 

Print | posted @ martedì 10 marzo 2009 18:26

Comments on this entry:

Gravatar # re: Caricare un Template in modo condizionale
by Andrea at 09/06/2009 19:11

Ringrazio per il post! è stato molto utile...
ciao
Gravatar # re: Caricare un Template in modo condizionale
by taoruankeji at 19/08/2010 09:22

PDF to TIFF Converter is a professional PDF to images program which let you convert PDF to TIFF and lots of image formats with high quality, such as JPEG, PNG, GIF, BMP, PCX, TGA. As to convert PDF to TIFF, you can freely set output encoder, including lossless, RLE, FAX G3, etc. Using this PDF to TIFF Converter, you alos can choose colorful, grey and black/white as output color. Reset resolution is applicable
PDF to XLS Converter
PDF to EPUB Converter
Convert PDF to GIF
Gravatar # re: Caricare un Template in modo condizionale
by pdftojpeg at 20/04/2012 07:43

Use PDF to JPG Converter to convert your PDF documents and save PDF files as different images format including JPEG, PNG, TIFF, GIF, BMP, PCX, TGA etc with 100% quality. If you happenly want to convert PDF to JPEG or other image formats for enjoyment, I highly recommend this PDF to JPEG Converter to you.

pdf to image


pdf to ppt
pdf to flash
pdf to tiff
epub to kindle
Gravatar # re: Caricare un Template in modo condizionale
by andla at 26/06/2012 10:51

form short dresses for prom with an assistant What is the procedure for reviewing, selecting and editing plus size wedding dresses the final bridal gowns photos for the album, enlargements and print sets 5. How to protect our pictures Nobody strapless wedding dresses want the stunning wedding dress's col
Comments have been closed on this topic.