【问题标题】:Use MenuItem Value as CommandParameter使用 MenuItem 值作为命令参数
【发布时间】:2013-10-25 20:23:18
【问题描述】:

我有以下来自菜单(不是 ContextMenu)的 MenuItem:

<MenuItem DisplayMemberPath="Name"
          Header="Teams"
          ItemsSource="{Binding Teams,
                                Source={StaticResource Container}}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <cmd:EventToCommand Command="{Binding OpenTeamPage}"
                                CommandParameter="{Binding ???}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</MenuItem>

如何将所选项目(来自 ItemsSource 的团队)作为 CommandParameter 传递给我的 Viewmodel?我已经做了一些研究,但在这种情况下我找不到获得所选项目的方法。任何帮助将不胜感激。

【问题讨论】:

    标签: c# wpf xaml mvvm


    【解决方案1】:

    如果你想发送点击的菜单项上下文,那么

    <MenuItem DisplayMemberPath="Name"
              Header="Teams"
              ItemsSource="{Binding Teams,
                                    Source={StaticResource Container}}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click">
                <cmd:EventToCommand Command="{Binding OpenTeamPage}"
                                    PassEventArgsToCommand="True"
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </MenuItem>
    

    【讨论】:

    • 这似乎没有发送任何参数。
    • 您是否在输出窗口中遇到任何绑定错误?无论如何,您可以使用更新的答案..这样整个 eventargs 将作为参数发送,您可以在命令处理程序中找到 OriginalSource.DataContext
    • 我无法从 OriginalSource 访问 DataContext。 OriginalSource 尽其所能。
    • 你必须把它输入MenuItem item = e.OriginalSource as MenuItem 然后item.DataContext 会给你DataContext
    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 2012-08-04
    • 2012-04-08
    相关资源
    最近更新 更多