突出显示的 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/… 那里的建议对升位有所帮助。现在,当我在行上被选中时,我可以掩盖一些白色。有些仍然显示,在我单击数据网格后,最近选择的行中仍然有这个白色突出显示。 您是否尝试过使用CellStyleDataGrid 设置样式? 我试过了,CellStyle、RowStyle、ColumnStyle,一堆用 IsSelected 触发器设置边框和背景,似乎没有什么能摆脱它。 第二个答案here 可能有帮助 【参考方案1】:

您需要为 DataGrid 覆盖 HighlightBrushKey,但如果您将其设置为白色,则突出显示的文本也对应于白色,因此不可见。

所以,基本上你需要覆盖 HighlightBrushKeyWhiteHighlightTextBrushKeyBlack 才能使其工作。这就是你覆盖它的方式 -

<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 选定行的主要内容,如果未能解决你的问题,请参考以下文章

如何使选定的行在未聚焦的数据网格中突出显示?

动态对象的 DataGrid 行突出显示

Qt突出显示选定的行会覆盖单个单词的突出显示

如何强制 ag-grid 滚动到选定/突出显示的行位置

如何突出显示 *ngFor 中的选定行?

当 SelectionMode 设置为 Cell 时,如何突出显示 WPF DataGrid 中的一行