【问题标题】:WPF Datagrid ContextMenu SelectedItemWPF Datagrid ContextMenu SelectedItem
【发布时间】:2016-06-06 09:05:26
【问题描述】:

我有以下问题。 我有一个带有 ContextMenu 的 DataGrid。但是当触发命令时,SelectedItem 始终为空。
有什么建议吗?

那是我的上下文菜单:

<DataGrid.ContextMenu>
  <ContextMenu>
  <MenuItem Command="{Binding OpenFileCommand}"
           CommandParameter="{Binding Path=SelectedItem,
           RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
           Header="open file" />

我也试过: CommandParameter="{Binding ElementName=nameOfGrid, Path=SelectedItem}"

【问题讨论】:

  • 问题是ContextMenu在不同的VisualTree中。
  • 如果你想要一个有意义的响应,你需要发布比这更多的代码。

标签: c# wpf xaml datagrid contextmenu


【解决方案1】:

我想你的答案就在这里:CommandParameters in ContextMenu in WPF

恕我直言,另一个更好的选择是将“SelectedItem”绑定在您的 ViewModel 中。

那么你就不再需要命令参数了,你可以直接使用从你的 ViewModel 绑定的 SelectedItem。

【讨论】:

    【解决方案2】:

    感谢您的帮助。我是这样修复的:
    CommandParameter="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}"

    【讨论】:

      【解决方案3】:

      问题在于ContextMenu 位于不同的VisualTree 中。

      您可以使用Tag 来绑定Command。见下文link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-11
        • 1970-01-01
        • 2012-06-12
        • 1970-01-01
        • 2015-08-04
        • 2016-10-22
        相关资源
        最近更新 更多