WPF DataGrid 失去对 ContextMenu 的关注

标签 wpf datagrid focus contextmenu

我的 DataGrid 分配了一个 ContextMenu,其中包含对所选行执行某些操作的命令。这已经很好了。

问题是,每次打开 ContextMenu 时(通过鼠标右键或菜单键),DataGrid 都会失去焦点并且所选行的背景颜色从蓝色变为浅灰色。对比如此强烈,以至于用户会觉得选择已被清除,并且不确定上下文菜单是否为正确的行打开。

这种颜色变化非常好,非焦点项目不应该有焦点颜色。但是打开上下文菜单不应该触发它。

这是一些 XAML 代码:

<DataGrid
    HeadersVisibility="Column"
    HorizontalGridLinesBrush="#cccccc" VerticalGridLinesBrush="#cccccc"
    BorderBrush="#cccccc" Background="{x:Null}"
    CanUserReorderColumns="False" IsReadOnly="True"
    ItemsSource="{Binding MyItems, NotifyOnTargetUpdated=True}"
    AutoGenerateColumns="False"
    SelectionChanged="DataGrid_SelectionChanged">
    <DataGrid.Columns>
        <DataGridTextColumn .../>
        <DataGridTextColumn .../>
        <DataGridTextColumn .../>
    </DataGrid.Columns>
    <DataGrid.ContextMenu>
        <ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
            <MenuItem Header="Command text" Command="{Binding MyCommand}"/>
        </ContextMenu>
    </DataGrid.ContextMenu>
</DataGrid>

以及问题的注释截图:

Screenshot

我该如何解决?

最佳答案

由于我碰巧遇到了同样的问题,因此我在关于 SO 的另一个问题中找到了解决方案(对我而言):
Retain DataGrid IsSelectionActive when a ContextMenu opens in WPF?

我只是将 DataGridCell 样式复制到我的代码中并且它起作用了。

关于WPF DataGrid 失去对 ContextMenu 的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849058/

相关文章:

Qt焦点更改顺序

css - 键盘选项卡上的输入效果 ->焦点,但不是点击

c# - awesomium 网络浏览器上的触摸事件

c# - 使 ListView.ScrollIntoView 将项目滚动到 ListView 的中心 (C#)

c# - 垂直合并 WPF DataGrid 中的单元格

c# - 使用粗体字体设置 Datagrid 前景色

WPF - 如何找到控件所在的选项卡

c# - WPF Datagrid 排序索引问题

mysql - 在 VB.NET 中显示来自 MySQL 搜索结果的数据网格中的特定字段

javascript - 如何用JS命令将光标放入输入框内?