2011-06-05 8 views
8

¿Cómo puedo vincular correctamente una lista creada dinámica de elementos de menú. He intentado varias cosas pero ninguna parece funcionar. Obtengo la lista adecuada de nombres, sin embargo, parece que mi ViewSwitchCommand no se activa correctamente.¿Cómo vincular correctamente los elementos del menú?

<MenuItem Foreground="White" Header="Names" ItemsSource="{Binding Player.ToonNames}" Command="{Binding ViewSwitchCommand}" CommandParameter="{Binding Header}"/> 

Sin embargo, si yo no lo hago de forma dinámica y hacerlo de esta manera, entonces todo funciona bien puede conseguir que funcione

<MenuItem Foreground="White" Header="Names"> 
<MenuItem Foreground="Black" Header="Chat" Command="{Binding ViewSwitchCommand}"  CommandParameter="player1" /> 
<MenuItem Foreground="Black" Header="Craft" Command="{Binding ViewSwitchCommand}" CommandParameter="player2" /> 
</MenuItem> 

El parámetro de comando espera una cadena .. no está seguro de si eso es que ... espero que esto es algo simple que estoy sólo con vistas

Respuesta

16

este código funciona para mí:

<MenuItem Header="Names" ItemsSource="{Binding Player.ToonNames}"> 
    <MenuItem.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Command" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=MenuItem}, Path=DataContext.ViewSwitchCommand}" /> 
      <Setter Property="CommandParameter" Value="{Binding}" /> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
</MenuItem> 
+0

Un paso más cerca señor. Sin embargo, estoy desconectando el comando ahora. Cuando la lista de ToonNames no se está completando ... sin embargo, parece que está creando el espacio para el número correcto de nombres ... simplemente no hay información de encabezado. Puede ayudar a decirte que ToonNames es ObservableCollection poco

+0

@poco, deberías haber dicho que al principio, no tengo una bola de cristal para saber cómo se ve tu código. Ver respuesta actualizada. – svick

+5

bolas de cristal son muy útiles señor, ¡debería mirarlas! No he tenido la oportunidad de probar tu último código, pero pude hacerlo funcionar desde tu primera edición, gracias por tu ayuda – poco

Cuestiones relacionadas