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.

Était-ce utile?

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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top