仅当右键单击鼠标悬停在特定的 datagridrow WPF C# 上时才显示 ContextMenu

     2023-04-01     169

关键词:

【中文标题】仅当右键单击鼠标悬停在特定的 datagridrow WPF C# 上时才显示 ContextMenu【英文标题】:Show ContextMenu only when Right clicked mouse is over on a specific datagridrow WPF C# 【发布时间】:2022-01-15 02:12:58 【问题描述】:

我有一个带有数据网格的页面 --> 下面的 xaml 代码:

    <DataGrid x:Name="DataGrid" 
    IsReadOnly="True"
    AutoGenerateColumns="False" 
    SelectionUnit="FullRow" 
    BorderBrush="x:Null" 
    HorizontalContentAlignment="Stretch"
    ColumnWidth="Auto" Focusable="False" 
    MouseDoubleClick="DataGridArticoli_MouseDoubleClick" 
    GridLinesVisibility="None" 
    HeadersVisibility="Column" 
    UseLayoutRounding="False" 
    SelectionChanged="DataGrid_SelectionChanged">

    <!--Columns-->
    <DataGrid.Columns>
        <DataGridTextColumn col_1/>
        <DataGridTextColumn col_2/>
        <DataGridTextColumn col_3/>
        <DataGridTextColumn col_4/>
        <DataGridTextColumn col_5/>
        <DataGridTextColumn col_6/>
        <DataGridTextColumn col_7/>
        <DataGridTextColumn col_8/>
        <DataGridTextColumn col_9/>
        <DataGridTextColumn col_10/>
    </DataGrid.Columns>
    
    <DataGrid.ContextMenu>
        <ContextMenu x:Name="ContextMenu">
            <MenuItem Header="Remove" Click="Remove_ContextMenuClick">
                <MenuItem.Icon>
                    <Image Source="/resources/delete.png"/>
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem x:Name="btnOpen" Header="Open" Click="Open_ContextMenuClick" IsEnabled="False">
                <MenuItem.Icon>
                    <Image Source="/resources/open.png"/>
                </MenuItem.Icon>
            </MenuItem>
        </ContextMenu>
    </DataGrid.ContextMenu>
    
</DataGrid>

在这种情况下,上下文菜单出现在鼠标的每个位置(右键单击时)。我只想在所选行中显示上下文菜单,并且仅当鼠标指针位于所选行上时。我尝试了不同的解决方案,但我没有找到合适的解决方案。有人可以帮我提供一些示例代码吗?

【问题讨论】:

【参考方案1】:

您可以将RowStyleTrigger 一起使用:

<DataGrid x:Name="DataGrid"  ...>

    <DataGrid.Resources>
        <ContextMenu x:Key="ContextMenu">
            <MenuItem Header="Remove" Click="Remove_ContextMenuClick">
                <MenuItem.Icon>
                    <Image Source="/resources/delete.png"/>
                </MenuItem.Icon>
            </MenuItem>
            <MenuItem x:Name="btnOpen" Header="Open" Click="Open_ContextMenuClick" IsEnabled="False">
                <MenuItem.Icon>
                    <Image Source="/resources/open.png"/>
                </MenuItem.Icon>
            </MenuItem>
        </ContextMenu>
    </DataGrid.Resources>

    <DataGrid.Columns>
        ...
    </DataGrid.Columns>

    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="ContextMenu" Value="StaticResource ContextMenu" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>

</DataGrid>

【讨论】:

如果您可以阅读其他帖子以及其他信息。谢谢 @Raffaele:什么?

鼠标悬停在特定 div 上时需要水平菜单选项

...鼠标悬停在它上面应该会显示一个选项来添加这样的项目单击添加选项后,菜单应如下所示请为此功能推荐任何jQuery或javascript插件。除了编写自定义脚 查看详情

可以在 MFC Button 控件上检测到鼠标右键单击事件吗?

】可以在MFCButton控件上检测到鼠标右键单击事件吗?【英文标题】:CanRight-mouseclickeventsbedetectedonaMFCButtoncontrol?【发布时间】:2016-02-1710:36:51【问题描述】:我正在尝试创建一个包含多个按钮的对话框,它们分别在左键和右键单... 查看详情

仅当我将鼠标悬停在其上时如何使图像出现

】仅当我将鼠标悬停在其上时如何使图像出现【英文标题】:HowtomakeimageappearonlywhenIhoveronit【发布时间】:2020-02-0810:31:23【问题描述】:我希望我的图像仅在我将鼠标悬停时出现,我尝试将它放在样式部分但它不起作用。这段代... 查看详情

delphi对右键菜单的操作

delphi可以发送右击消息,但是当右键菜单弹出后如何对右键里的项目操作呢?比如,我现在对我的电脑发送右击消息,弹出右键菜单后,我想再让鼠标单击属性.这个如何实现呢?说的详细些...参考技术A编写鼠标单击事件 查看详情

仅当悬停在 li 中的 span 上时才显示下拉菜单

】仅当悬停在li中的span上时才显示下拉菜单【英文标题】:Showdropdownmenuonlywhenhoveredonspaninli【发布时间】:2014-10-1523:53:41【问题描述】:我只想在hovered在li(.$user-&gt;user_login.)的一个单词上显示下拉菜单。目前我在整个li上悬停... 查看详情

HTML:鼠标悬停或单击时播放声音

】HTML:鼠标悬停或单击时播放声音【英文标题】:HTML:Playsoundsonmousehoverorclick【发布时间】:2010-10-2012:11:16【问题描述】:在我的网站上,我想在鼠标悬停(悬停)或单击鼠标时播放滴答声/点击声。这可以实现吗?我可以在flash... 查看详情

openoffice calc 按钮鼠标悬停在事件光标更改上

...希望有一个光标手。首先,我切换到“设计”模式,然后右键单击按钮,并使用出现的弹出菜单 查看详情

如何使用 jQuery 在单击和鼠标悬停时使可滚动的 div 滚动

】如何使用jQuery在单击和鼠标悬停时使可滚动的div滚动【英文标题】:HowtomakeascrollabledivscrollonclickandmouseoverusingjQuery【发布时间】:2010-12-3119:08:28【问题描述】:使用下面的标记,当我单击或悬停在“#scrollUp”或“#scrollDown”锚... 查看详情

通过 Jquery 保持:鼠标单击时的悬停颜色

】通过Jquery保持:鼠标单击时的悬停颜色【英文标题】:Keep:hovercoloronmouseclickviaJquery【发布时间】:2012-03-1312:00:47【问题描述】:我想要实现的是当用户单击链接时,单击的按钮保持颜色不变,并且在鼠标移出悬停状态时不会淡... 查看详情

当用户将鼠标悬停在 TreeView 控件的特定 TreeNode 控件上时显示不同的光标

】当用户将鼠标悬停在TreeView控件的特定TreeNode控件上时显示不同的光标【英文标题】:DisplayingadifferentcursorwhentheuserhoversthemouseoveraparticularTreeNodecontrolofaTreeViewcontrol【发布时间】:2020-06-0414:51:11【问题描述】:当用户将指针悬停... 查看详情

仅当将 Div 悬停在上方时才显示滚动条?

】仅当将Div悬停在上方时才显示滚动条?【英文标题】:MakescrollbarsonlyvisiblewhenaDivishoveredover?【发布时间】:2012-01-2717:49:43【问题描述】:我试图弄清楚如何让一个可滚动的div只在悬停时显示其滚动条。例如Google图片搜索,在下... 查看详情

当鼠标悬停在该特定区域上时,如何为列表中的一个矩形填充不同的颜色?

】当鼠标悬停在该特定区域上时,如何为列表中的一个矩形填充不同的颜色?【英文标题】:Howtofilldifferentcolorforoneofmyrectanglefrommylistwhenthemouseishoveronthatparticulararea?【发布时间】:2015-11-1813:36:31【问题描述】:如果鼠标悬停在矩... 查看详情

仅当在下拉列表之外单击鼠标时才关闭引导下拉列表

】仅当在下拉列表之外单击鼠标时才关闭引导下拉列表【英文标题】:Closebootstrapdropdownonlywhenmouseisclickedoutsideofdropdown【发布时间】:2019-02-0911:28:21【问题描述】:我有一个引导下拉菜单:<divclass="dropdown><aclass="dropdown-toggle... 查看详情

仅当通过 jQuery 悬停(而不是悬停的行)时,如何向每个表行添加属性?

】仅当通过jQuery悬停(而不是悬停的行)时,如何向每个表行添加属性?【英文标题】:Howtoaddattributetoeverytablerowonlywhenoneishovered(andnotthehoveredrow)viajQuery?【发布时间】:2014-12-0812:47:45【问题描述】:仅当用户将鼠标悬停在一行上... 查看详情

创建一个可以在 angularjs 中单击的悬停工具提示

】创建一个可以在angularjs中单击的悬停工具提示【英文标题】:createahover-tooltipwhichcanbeclickedinangularjs【发布时间】:2015-08-1712:08:46【问题描述】:我正在尝试使用BootstrapUI创建悬停工具提示。当鼠标悬停在按钮上时,工具提示应... 查看详情

嵌入在对象元素中的 SVG 上的鼠标指针悬停/jquery 单击事件不起作用

】嵌入在对象元素中的SVG上的鼠标指针悬停/jquery单击事件不起作用【英文标题】:Mousepointerhover/jqueryclickeventonSVGembeddedinobjectelementnotworking【发布时间】:2013-01-2422:24:26【问题描述】:我正在使用jQuery动态添加元素以使用以下代... 查看详情

禁用右键单击时如何检查chrome中的元素?

】禁用右键单击时如何检查chrome中的元素?【英文标题】:HowcanIinspectelementinchromewhenrightclickisdisabled?【发布时间】:2011-11-2802:54:22【问题描述】:我想调试当我将鼠标悬停在谷歌地图标记上时显示的信息框。但是谷歌地图禁用右... 查看详情

防止在 Safari 浏览器中单击鼠标右键

】防止在Safari浏览器中单击鼠标右键【英文标题】:PreventrightclickinSafaribrowser【发布时间】:2021-09-1018:12:24【问题描述】:我正在使用Angular10我有html5视频播放器和全屏模式,我想防止右键单击,通过阻止右键单击我想阻止用户... 查看详情