我的DataGrid已经分配了一个ContextMenu,其中包含一些命令,用于处理所选行的操作。这已经很好地实现了。
问题是,每次打开ContextMenu(无论是右键还是菜单键),DataGrid都会失去焦点,并且所选行的背景颜色会从蓝色变成浅灰色。这样的对比度很大,用户会认为选择被取消了,并且不确定上下文菜单是否针对正确的行。
颜色变化是完全正常的,非聚焦项目不应该有焦点颜色。但是打开上下文菜单不应该触发它。
以下是一些XAML代码:
问题是,每次打开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>
以下是问题的带注释截图:
我该如何解决这个问题?