绑定和设置数据网格列标题的样式
本文关键字:标题 样式 网格 置数据 绑定 | 更新日期: 2023-09-27 18:34:31
>我有一个像这样的DataGridColumn:
<DataGridTextColumn
Binding="{Binding
Path=Name,
UpdateSourceTrigger=PropertyChanged}"
HeaderStyle="{StaticResource HeaderWrapped}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock
Text="{Binding
Path=DataContext.Name,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
HeaderWrapped 样式位于控件中导入的资源字典中。它看起来像这样:
<Style x:Key="HeaderWrapped" TargetType="DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{TemplateBinding Content}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
当我运行应用程序时,标题文本已正确绑定,但未设置文本换行。我猜 DataGridTextColumn.HeaderTemplate 覆盖了我的 ResourceDictionary 中的模板。有没有办法让我在资源字典中保留标题的样式,但仍绑定标题的 Text 属性?
您尝试做的基本上是首先为标题设置样式,然后告诉它忘记它并为标题使用全新的模板。 不能同时设置DataGridTextColumn.HeaderStyle.ContentTemplate
和DataGridTextColumn.HeaderTemplate
但是,我可以想到解决此问题的一种解决方法:
<DataGridTextColumn
Binding="{Binding
Path=Name,
UpdateSourceTrigger=PropertyChanged}"
Tag="{Binding
Path=DataContext.Name,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
HeaderStyle="{StaticResource HeaderWrapped}">
</DataGridTextColumn>
<Style x:Key="HeaderWrapped" TargetType="DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{TemplateBinding Tag}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>