通用 Windows 平台 (UWP)
一个 Microsoft 平台,用于生成和发布适用于 Windows 桌面设备的应用。
50 个问题
你好
我正在用这种样式设置 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总结而来.
你好!
解决方案是将 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>
谢谢
如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。