WPF DataGrid失去了对ContextMenu的关注

时间:2014-02-18 09:19:09

标签: 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

我该如何解决?

1 个答案:

答案 0 :(得分:3)

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

我刚刚将DataGridCell样式复制到我的代码中并且它有效。