Pregunta

Tengo el siguiente enumeración que representan un estado de interfaz de usuario (lo uso para activar y desactivar los elementos de interfaz de usuario):

enum Mode 
{
 EDIT, RUN, REVIEW
}

Me gustaría transmitir a Mode.EDIT mando en CommandParam:

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

Pero no tengo ni idea de cómo declararla. Como se puede ver en la declaración botón, trato de utilizar StaticResource pero fracasa. Soy bastante nuevo en SL4 y C #, así que supongo que me haya perdido algo.

¿Fue útil?

Solución

Me han encontrado una solución. He creado en mi MyViewModel (mi DataContext ) 3 atributos comunes (de tipo Mode) y inicializarlas en el constructor (con valores editar , EJECUTAR , REVIEW ). A continuación, los he atado en XAML como una propiedad normal de 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;
    ...
 }
} 

Otros consejos

En WPF podemos hacer algo como esto (podría no funcionar en SL) -

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

comprobar esta pregunta para más detalles - Pasar un valor de enumeración como parámetro de comando de XAML

en Silverlight x: hace estático no funcionaba, así que podemos hacer algo como esto:

<Button Command="{Binding Path=ChangeMode}">
    <Button.CommandParameter>
        <Mode>RUN</Mode>
    </Button.CommandParameter>
</Button>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top