Comment avoir une valeur ENUM dans CommandParam en XAML
-
29-09-2019 - |
Question
I ai l'énumération suivante qui représentent un état de l'interface utilisateur (je l'utilise pour activer et désactiver les éléments d'interface utilisateur):
enum Mode
{
EDIT, RUN, REVIEW
}
Je voudrais passer à Mode.EDIT commande dans CommandParam:
<Button Grid.Column="6" VerticalAlignment="Top Command="{Binding Path=ChangeMode}"
CommandParameter="{StaticResource local:Mode.RUN}" />
Mais je ne sais pas comment déclarer. Comme vous le voyez dans la déclaration de bouton, je tente d'utiliser StaticResource , mais il échoue. Je suis tout à fait nouveau pour SL4 et C #, donc je suppose que je manqué quelque chose.
La solution
J'ai trouvé une solution. J'ai créé dans mon MyViewModel
(mon DataContext ) 3 attributs publics (de type mode) et les initialiser dans le constructeur (avec des valeurs EDIT , RUN , REVUE ). Ensuite, je les ai châtiés en XAML comme une propriété normale d'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;
...
}
}
Autres conseils
Dans WPF nous pouvons faire quelque chose comme ça (de travail pourrait pas SL) -
<Button Grid.Column="6" Command="{Binding Path=ChangeMode}"
CommandParameter="{x:Static local:Mode.RUN}" />
vérifier cette question pour plus de détails - Passe une valeur d'énumération comme paramètre de commande à partir de XAML
silverlight x: statique ne fonctionne pas afin que nous puissions faire qqch comme ceci:
<Button Command="{Binding Path=ChangeMode}">
<Button.CommandParameter>
<Mode>RUN</Mode>
</Button.CommandParameter>
</Button>