A DotNet Raider

My adventures in the .NET world!
posts - 49, comments - 12, trackbacks - 0

My Links

News

Website View Martino Bordin's profile on LinkedIn

Archives

Post Categories

Usare il Commanding in Windows Phone 7

Se avete provato a sviluppare applicazioni Silverlight per Windows Phone 7 (derivante in gran parte su Silverlight 3), avrete notato che il controllo Button non ha una proprietà Command, utilizzata spessissimo se sviluppate le vostre applicazioni con l’ormai famoso pattern MVVM, e che consiglio di utilizzare per tutte le applicazioni “non banali” (leggi “non demo” Sorriso).

Fortunatamente, comunque, l’infrastruttura per gestire il Commanding è  supportata e perfettamente funzionante. Infatti potete tranquillamente creare i vostri ViewModel esponendo proprietà di tipo ICommand. Come fare però ad agganciare i controlli della UI a queste proprietà?

Per questo proposito ci corre in aiuto il Behaviour EventToCommand creato dall’MVP Laurent Bugnion nel suo MVVM Light Toolkit (toolkit disponibile anche per WPF e Silverlight 4).

Questo behaviour permette di essere agganciato a qualsiasi evento di un oggetto, purché esso derivi da DependencyObject (la stragrande maggioranza dei controlli UI) e che chiamerà, allo scatenarsi dell’evento voluto, il Command specificato nello XAML tramite Binding.

In pratica, è possibile scrivere questo codice nell’editor XAML per eseguire il Comando TestCommand quando si clicca sul Button :

  1. <Button Content="Click me">
  2.     <Interactivity:Interaction.Triggers>
  3.         <Interactivity:EventTrigger
  4.             EventName="Click">
  5.             <Galasoft:EventToCommand Command="{Binding TestCommand}"/>
  6.         </Interactivity:EventTrigger>
  7.     </Interactivity:Interaction.Triggers>
  8. </Button>

I namespace Interactivity e Galasoft, importati rispettivamente dagli assembly System.Windows.Interactivity e Galasoft.MvvmLight.Extras.WP7, sono cosi dichiarati:

  1. xmlns:Interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
  2. xmlns:Galasoft="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP7"

Naturalmente è possibile utilizzare il Behaviour anche per altri tipi di eventi e controlli, ed è inoltre possibile indicare un eventuale CommandParameter, l’argomento EventArgs dell’evento e molto altro.

Alla prossima.

Print | posted on martedì 25 gennaio 2011 01:24 | Filed Under [ WP7 ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET