Как правильно связать пункты меню? - PullRequest
8 голосов
/ 06 июня 2011

Как правильно связать динамически создаваемый список пунктов меню. Я пробовал несколько вещей, но ни одна из них не работает. Я получил правильный список имен, однако мой ViewSwitchCommand, похоже, не работает правильно.

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

Однако, если я не делаю это динамически и делаю так, то все работает просто отлично, можно заставить его работать

<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>

Параметр команды ожидает строку ... не уверен, что это так ... надеюсь, это что-то простое, я просто пропускаю

1 Ответ

16 голосов
/ 06 июня 2011

У меня работает этот код:

<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>
...