【问题标题】:How to correctly bind menu items?如何正确绑定菜单项?
【发布时间】:2011-06-05 23:50:38
【问题描述】:

如何正确绑定动态创建的菜单项列表。我尝试了几件事,但似乎都没有。我得到了正确的名称列表,但是我的 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>

命令参数需要一个字符串..不确定是不是这样...希望这是一些简单的事情,我只是忽略了

【问题讨论】:

    标签: wpf data-binding mvvm menuitem commandparameter


    【解决方案1】:

    此代码适用于我:

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

    【讨论】:

    • 再近一步,先生。我现在正在启动命令,但是当列表o ToonNames 没有被填充时......但是它看起来好像它正在为正确数量的名称创建空间......只是没有标题信息。可能有助于告诉您 ToonNames 是 ObservableCollection
    • @poco,你应该在一开始就这么说,我没有水晶球知道你的代码看起来如何。查看更新的答案。
    • 水晶球很有帮助,先生,您应该研究一下!我没有机会测试您的最新代码,但能够从您的第一次编辑中使其工作,感谢您的帮助
    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2011-12-29
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多