Come avere un valore enum in CommandParam in XAML
-
29-09-2019 - |
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.
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>