WPF DataGrid 右键菜单不响应

linlinxi007 2017-09-04 07:16:43
求助:
Page中TabControl下放置一个DataGrid。DataGrid的菜单右键无法响应。单独用DataGrid(不用TabControl)又可以。。。MenuCopyCommand已定义在ViewModel中

xaml大致代码如下:

<DataGrid.ContextMenu>
<ContextMenu StaysOpen="True">
<MenuItem Header="复制">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding Path=DataContext.MenuCopyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Page}}}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</MenuItem>
</ContextMenu>
</DataGrid.COntextMenu>

...全文
1162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞车之 2018-01-29
  • 打赏
  • 举报
回复 1
 <DataGrid.ContextMenu x:Uid="xss">
                <ContextMenu>
                    <MenuItem Header="开始采集" IsEnabled="True" Command="{Binding BeginGatherCommand}"/>
                    <MenuItem Header="开始申请" IsEnabled="False"/>
                    <MenuItem Header="申请中" IsEnabled="False"/>
                </ContextMenu>
            </DataGrid.ContextMenu>
我是这么弄的,可以用的 绑定的命令就是单击右键菜单“开始采集”时执行的命令
exception92 2017-09-08
  • 打赏
  • 举报
回复
引用 2 楼 capcompaq 的回复:
我也碰到问题了,DataGrid.ContextMenu往上找父节点找不到DataGrid本身,比如

<DataGrid x:Name="dgPlanMain"  CanUserAddRows="False">
                                    <DataGrid.ContextMenu >
                                        <ContextMenu StaysOpen="True">
                                            <MenuItem Header="拷贝机班" Command="{Binding CopyDriverCmd}" CommandParameter="{Binding ElementName=dgPlanMain}"/>
                                            </ContextMenu>
                                    </DataGrid.ContextMenu>
</DataGrid>
其中CommandParameter找不到datagrid的名字dgPlanMain,感觉右键菜单是另起的一个grid,和原来的控件没有关系 楼上的大神能帮忙看一下吗?
看我6楼的回复
exception92 2017-09-08
  • 打赏
  • 举报
回复
引用 5 楼 linlinxi007 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] findancestor的时候指定一下Level数测试看。 或者 把page的DataContext 绑定到TabControl上,menuitem绑定的时候找TabControl的DataContext.
两种方式都试了,还是不行。[/quote] -》 <i:InvokeCommandAction Command="{Binding Path=Parent.PlacementTarget.DataContext.MenuCopyCommand, RelativeSource={RelativeSource Self}}"/> 要确定你的DataGrid的DataContext为你当前的ViewModel。
linlinxi007 2017-09-07
  • 打赏
  • 举报
回复
@capcompaq 我是单独使用DataGrid 右键菜单是可以的。只是嵌入到TabControl里就无法响应了。你是这样的情况么? 有的情况下用本身的Command没用,所以我一般都是改用事件触发的方式。
qq14923349 2017-09-07
  • 打赏
  • 举报
回复
是绑定没找到祖先的问题 网上有说的 老外那个叫stack什么个网站了
linlinxi007 2017-09-07
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
findancestor的时候指定一下Level数测试看。 或者 把page的DataContext 绑定到TabControl上,menuitem绑定的时候找TabControl的DataContext.
两种方式都试了,还是不行。
红薯头子 2017-09-05
  • 打赏
  • 举报
回复
楼主你不用用事件绑定吧,ContextMenu本身就有Command绑定的功能
红薯头子 2017-09-05
  • 打赏
  • 举报
回复
我也碰到问题了,DataGrid.ContextMenu往上找父节点找不到DataGrid本身,比如

<DataGrid x:Name="dgPlanMain"  CanUserAddRows="False">
                                    <DataGrid.ContextMenu >
                                        <ContextMenu StaysOpen="True">
                                            <MenuItem Header="拷贝机班" Command="{Binding CopyDriverCmd}" CommandParameter="{Binding ElementName=dgPlanMain}"/>
                                            </ContextMenu>
                                    </DataGrid.ContextMenu>
</DataGrid>
其中CommandParameter找不到datagrid的名字dgPlanMain,感觉右键菜单是另起的一个grid,和原来的控件没有关系 楼上的大神能帮忙看一下吗?
exception92 2017-09-05
  • 打赏
  • 举报
回复
findancestor的时候指定一下Level数测试看。 或者 把page的DataContext 绑定到TabControl上,menuitem绑定的时候找TabControl的DataContext.

8,731

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧