调整Community toolkit DataGrid ColumnHeader 的背景

Roy Li - MSFT 33,371 信誉分 Microsoft 供应商
2024-07-16T03:08:53.0133333+00:00

你好

我正在用这种样式设置 DataGrid 列的样式

<Color x:Key="MyColumnHeaderBackgroundColor">AliceBlue</Color>
<StaticResource x:Key="DataGridColumnHeaderBackgroundColor" ResourceKey="MyColumnHeaderBackgroundColor"/>

这适用于所有列。但是我自己有一列样式:

 

<Style x:Name="WCTDataGrid_CheckBoxHeaderStyle" TargetType="wctprimitives:DataGridColumnHeader">
            <Setter Property="Background" Value="AliceBlue"></Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="wctprimitives:DataGridColumnHeader">
                        <CheckBox MaxWidth="40" Margin="5,0,0,0"
                                  Checked="SelectAll"
                                  Unchecked="DeselectAll"
                                  Background="AliceBlue"
                                  />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

 

我将此样式设置为在代码端AutoGeneratingColumn 事件中

private void AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
                   {
                             e.Column.CanUserResize = true;
                             e.Column.Tag = e.PropertyName;
                             if(e.PropertyName == "IsSelected")
                             {
                var templateColumn = new DataGridTemplateColumn();                                  templateColumn.HeaderStyle = WCTDataGrid_CheckBoxHeaderStyle;
                templateColumn.CellTemplate = (DataTemplate)this.Resources["WCTDataGrid_CheckBoxCellDataTemplate"];
                templateColumn.Width = DataGridLength.SizeToHeader;
                e.Column = templateColumn;            
}
}

然而此列没有 AliceBlue 背景,如何设置?

如果可能的话,我更喜欢使用以下设置之一:

<Color x:Key="MyColumnHeaderBackgroundColor">AliceBlue</Color>
<StaticResource x:Key="DataGridColumnHeaderBackgroundColor" ResourceKey="MyColumnHeaderBackgroundColor"/>

此问题由Community toolkit DataGrid ColumnHeader background - Microsoft Q&A总结而来.

通用 Windows 平台 (UWP)
通用 Windows 平台 (UWP)
一个 Microsoft 平台,用于生成和发布适用于 Windows 桌面设备的应用。
50 个问题
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Junjie Zhu - MSFT 18,486 信誉分 Microsoft 供应商
    2024-07-16T08:26:16.6166667+00:00

    你好!

    解决方案是将 CheckBox 放入ContentPresenter ,并将ContentPresenter背景设置为 AliceBlue。

    <Style x:Name="WCTDataGrid_CheckBoxHeaderStyle" TargetType="wctprimitives:DataGridColumnHeader">
         <Setter Property="Template">
             <Setter.Value>
                 <ControlTemplate TargetType="wctprimitives:DataGridColumnHeader">
                     <ContentPresenter Background="AliceBlue" >
                         <CheckBox MaxWidth="40" Margin="5,0,0,0"/>
                     </ContentPresenter>
                 </ControlTemplate>
             </Setter.Value>
         </Setter>
     </Style>
    
    
    

    谢谢


    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    0 个注释 无注释

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。