【发布时间】: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