我在数据网格上使用上下文菜单进行复制/粘贴。但是我没有在ContextMenu的Command Parameter中获取当前视图。在其他命令绑定中,我已将我的View名称作为Command参数传递,以获取当前视图状态。但是现在我被这个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>
答案 0 :(得分:0)
最好的方式(在我看来)是将您的ViewModel
声明为页面中的静态资源。然后,您可以将根面板的DataContext
绑定到此静态资源(将您带到现在的位置)。这样可以使绑定工作在CommandParameter
中(通过将参数绑定到StaticResource
而非使用FindAncestor
)。
你当前的Binding表达式无法工作的最可能的原因是你遇到了模板封装边界,但我不能确定没有看到所有的代码
答案 1 :(得分: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>
我假设您的数据网格位于当前视图中