【问题标题】:WPF DataGrid loses focus on ContextMenuWPF DataGrid 失去对 ContextMenu 的关注
【发布时间】:2014-03-17 22:16:44
【问题描述】:

我的 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>

以及问题的注释截图:

我该如何解决这个问题?

【问题讨论】:

    标签: wpf datagrid focus contextmenu


    【解决方案1】:

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

    我刚刚将 DataGridCell 样式复制到我的代码中,它就可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多