我有一个这样的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样式位于在控件中导入的ResourceDictionary中。它看起来是这样的:
<Style x:Key="HeaderWrapped" TargetType="DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{TemplateBinding Content}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>当我运行应用程序时,标题文本被正确绑定,但TextWrapping没有设置。我猜是DataGridTextColumn.HeaderTemplate覆盖了我的ResourceDictionary中的模板。有没有一种方法可以让我在ResourceDictionary中保留标题的样式,同时仍然绑定标题的Text属性?
发布于 2013-10-10 03:03:28
你要做的基本上就是首先为标题设置一个样式,然后告诉它忘记它,并为标题使用一个全新的模板。不能同时设置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>https://stackoverflow.com/questions/19276958
复制相似问题