0

我在数据网格上使用上下文菜单进行复制/粘贴。但是我没有在 ContextMenu 的命令参数中获取当前视图。在其他命令绑定中,我已将视图名称作为命令参数传递以获取当前视图状态。但是现在我被这个 ContextMenu 卡住了,因为我无法通过它传递我的视图。我正在使用 MVVM。

我的片段是

<DataGrid.ContextMenu>
     <ContextMenu x:Name="_menu">
           <MenuItem Header="Copy" Command="{Binding CopyCommand}" 
           CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}},Path=DataContext}" />
      </ContextMenu>
</DataGrid.ContextMenu>
4

2 回答 2

0
<DataGrid.ContextMenu>
     <ContextMenu x:Name="_menu">
           <MenuItem Header="Copy" Command="{Binding CopyCommand}" 
           CommandParameter="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}},Path=PlacementTarget.DataContext}" />
      </ContextMenu>
</DataGrid.ContextMenu>

我假设您的数据网格在您当前的视图中

于 2012-06-25T10:34:30.703 回答
0

最好的方法(在我看来)是ViewModel在你的页面中声明你的静态资源。然后你可以将你的根面板绑定DataContext到这个静态资源(让你到现在的位置)。然后,这具有使绑定在您中工作的额外好处CommandParameter(通过将参数绑定到 aStaticResource而不是 using FindAncestor)。

您当前的 Binding 表达式不起作用的最可能原因是您遇到了模板封装边界,但如果没有看到所有代码,我无法确定

于 2012-06-25T10:06:48.177 回答