Un piccolo serpente ci conduce attraverso le principali caratteristiche del Windows Phone 7
Introduzione Core UI & Design Conclusione Premi Discussioni
Marcosroom.it Didatticando

Trigger

Un altro aspetto interessante da notare nel menu sono i trigger. Ma, prima di tutto: cos'è un trigger?

Un trigger è un oggetto che chiama un'azione quando viene generato un evento. Un esempio qui potrebbe chiarire le idee: vogliamo creare un trigger che ci permetta di navigare verso una pagina quando l'utente clicca un bottone (come nell'applicazione).

Trigger explanation

Quindi, per raggiungere il nostro obiettivo, questi sono i passi che dobbiamo seguire:

  1. Innanzitutto, dobbiamo assicurarci che ci sia un riferimento all'assembly System.Windows.Interactivity, poichè tutto ciò di cui stiamo parlando è all'interno di esso
  2. Poi dobbiamo creare la nostra azione: creiamo una classe che eredita da TriggerAction<T>, dove T è il tipo di oggetto al quale questa azione può essere applicata, nel nostro caso T è Button.
    public class NavigationTrigger : TriggerAction<Button>
    {
    
        #region Proprietà Uri
    
        public static readonly DependencyProperty UriProperty = 
            DependencyProperty.Register(
                                       "Uri",
                                       typeof(Uri), 
                                       typeof(NavigationTrigger), 
                                       new PropertyMetadata(null)
                                       );
        public Uri Uri
        {
            get { return (Uri)GetValue(UriProperty); }
            set { SetValue(UriProperty, value); }
        }
    
        #endregion
    
        protected override void Invoke(object parameter)
        {
            //Naviga
            ((App)Application.Current).RootFrame.Navigate(this.Uri);
        }
    
    }

    Come puoi notare, ci sono solo la proprietà Uri e l'overriding del metodo Invoke. Ovvimente, la parte più importante è il metodo: infatti, è lui ad essere chiamato quando l'azione viene eseguita. Qui scriviamo il cuore del trigger, quindi, vi ho inserito il codice per la navigazione all'uri indicato dalla proprietà Uri.

  3. Ora il codice è terminato; ciò che dobbiamo fare, d'ora in poi, è solo cambiare il codice XAML. Quindi, apriamo il nostro file XAML e aggiungiamo qualche nuovo xmlns:
    <phone:PhoneApplicationPage
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:local="clr-namespace:SnakeMobile">
    ...
    </phone:PhoneApplicationPage>
  4. Infine, cambiamo il codice del bottone in questo modo:
    <Button Content="Settings">
    <i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
    <local:NavigationTrigger Uri="/SnakeMobile;component/Settings.xaml" />
    </i:EventTrigger>
    </i:Interaction.Triggers>
    </Button>

    Con il codice sopra elencato, registriamo un EventTrigger pre il nostro bottone che, quando viene generato l'evento Click, chiama la nostra azione NavigationTrigger la quale naviga verso /SnakaMobile;component/Settings.xaml

Come hai potuto notare, abbiamo creato con poche righe di codice un'unità che possiamo riutilizzare quando vogliamo, solo attraverso il codice XAML. Creare un trigger solo per un'azione di navigazione, potrebbe sembrare tempo sprecato, ma l'ho fatto poichè voglio spiegarti alcune delle caratteristiche del Silverlight for Windows Phone, anche se possono portarmi a scrivere un po' di codice inutile. Ma immagina una grande business application: l'utilizzo dei trigger comporterebbe un minor dispendio di tempo!

Comunque, se vuoi approfondire il concetto dei trigger, ti consiglio di leggere questo articolo, che parla anche dei behaviours: Silverlight and WPF Behaviours and Triggers - Understanding, Exploring And Developing Interactivity using C#, Visual Studio and Blend

 

Condividi
Indietro Tutti i webmaster che volessero segnalare, non copiare,
il contenuto di questa pagina sul proprio sito, possono farlo liberamente.
E' gradito un preavviso tramite mail all'autore e l'iserimento,
nella pagina di citazione, di un link verso la pagina corrente.
© Copyright    Marco's Room
Avanti
Download SnakeMobile

Scaricato 115 volte

Navigazione Transizioni Pulsante rotondo luminoso Trigger Un piccolo ripasso di matematica Selettore circolare Isolated storage: file e impostazioni Impostazioni Build action: Content o Resource? Audio & XNA