Domanda

ho il seguente enumerazione che rappresentano uno stato di interfaccia utente (lo uso per attivare e disattivare elementi dell'interfaccia utente):

enum Mode 
{
 EDIT, RUN, REVIEW
}

Vorrei passare Mode.EDIT al comando nel CommandParam:

  <Button Grid.Column="6" VerticalAlignment="Top Command="{Binding Path=ChangeMode}" 
CommandParameter="{StaticResource local:Mode.RUN}" />

Ma non ho idea di come dichiararla. Come si vede nella dichiarazione tasto, cerco di usare StaticResource , ma fallisce. Sono abbastanza nuovo per SL4 e C # quindi suppongo che ho perso qualcosa.

È stato utile?

Soluzione

Ho trovato una soluzione. Ho creato nel mio MyViewModel (il mio DataContext ) 3 attributi pubblici (di tipo Mode) e li inizializza nel costruttore (con valori Modifica , RUN , RASSEGNA ). Poi, li ho legato in XAML come un normale proprietà di un DataContext:

CommandParameter="{Binding Path=EDIT}

class MyViewModel
{  
  public Mode EDIT {set; get;}
  public Mode RUN {set; get;}
  public Mode REVIEW {set; get;}

  MyViewModel()
 { 
   EDIT = Mode.EDIT;
    ...
 }
} 

Altri suggerimenti

In WPF si può fare qualcosa di simile (potrebbe non funzionare in SL) -

<Button Grid.Column="6" Command="{Binding Path=ChangeMode}"
CommandParameter="{x:Static local:Mode.RUN}" />

controllare questa domanda per maggiori dettagli - Passando un valore di enumerazione come parametro di comando da XAML

in Silverlight x: non statico, non lavoro in modo che possiamo fare sth in questo modo:

<Button Command="{Binding Path=ChangeMode}">
    <Button.CommandParameter>
        <Mode>RUN</Mode>
    </Button.CommandParameter>
</Button>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top