突出显示的 Datagrid 选定行
Posted
技术标签:
【中文标题】突出显示的 Datagrid 选定行【英文标题】:Datagrid selected row highlighted 【发布时间】:2013-12-20 02:47:04 【问题描述】:我有一个包含四列的 DataGrid,每列的每一行都有一个控件。每当我在列中选择一个控件时,它所属的行都会突出显示为白色。背景将为白色,因此控件仍会显示。我根本不希望该行突出显示。
<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
***.com/questions/1223280/… 那里的建议对升位有所帮助。现在,当我在行上被选中时,我可以掩盖一些白色。有些仍然显示,在我单击数据网格后,最近选择的行中仍然有这个白色突出显示。 您是否尝试过使用CellStyle
为DataGrid
设置样式?
我试过了,CellStyle、RowStyle、ColumnStyle,一堆用 IsSelected 触发器设置边框和背景,似乎没有什么能摆脱它。
第二个答案here 可能有帮助
【参考方案1】:
您需要为 DataGrid 覆盖 HighlightBrushKey
,但如果您将其设置为白色,则突出显示的文本也对应于白色,因此不可见。
所以,基本上你需要覆盖 HighlightBrushKey
到 White
和 HighlightTextBrushKey
到 Black
才能使其工作。这就是你覆盖它的方式 -
<DataGrid>
<DataGrid.Resources>
<SolidColorBrush x:Key="x:Static SystemColors.HighlightBrushKey"
Color="White"/>
<SolidColorBrush x:Key="x:Static SystemColors.HighlightTextBrushKey"
Color="Black"/>
</DataGrid.Resources>
</DataGrid>
【讨论】:
【参考方案2】:试试这个
<DataGrid SelectionMode="Single" SelectionUnit="Cell"
【讨论】:
这似乎工作得很好,只是现在只有带有您选择的控件的列具有白色突出显示而不是整行。以上是关于突出显示的 Datagrid 选定行的主要内容,如果未能解决你的问题,请参考以下文章