我想将列标题的Width
绑定到定义的标头的Width
。但是代码不起作用。如果我明确指定Width
(宽度=“100”),它可以正常工作。有人能说清楚,并告诉我下面的代码有什么问题吗?
<dataGrid:DataGridTemplateColumn x:Name="pdpCol" Width="100">
<dataGrid:DataGridTemplateColumn.Header>
<Grid HorizontalAlignment="Stretch">
<TextBlock Text="PDP" VerticalAlignment="Center" HorizontalAlignment="Center"
TextWrapping="Wrap" Width="{Binding ElementName=pdpCol,Path=ActualWidth }" TextAlignment="Center" />
</Grid>
</dataGrid:DataGridTemplateColumn.Header>
</dataGrid:DataGridTemplateColumn>
答案 0 :(得分:5)
从TextBlock中删除HorizontalAlignment="Center"
或将属性设置为Stretch
。然后TextBlock将自动消耗所有可用宽度。此外,如果您没有显示除文本块之外的任何内容,则删除网格并仅使用TextBlock。您还需要直接设置HeaderTemplate而不是Header。
<dataGrid:DataGridTemplateColumn x:Name="pdpCol" Width="100" Header="PDP">
<dataGrid:DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" TextAlign="Center" />
</DataTemplate>
</dataGrid:DataGridTemplateColumn.HeaderTemplate>
</dataGrid:DataGridTemplateColumn>
最诚挚的问候,
Oliver Hanappi
答案 1 :(得分:1)
尝试下面的标记。请注意使用HeaderStyle
拉伸模板,HeaderTemplate
实际定义Header="PDP"
项目的可视模板。
<dataGrid:DataGridTemplateColumn x:Name="pdpCol" Width="100" Header="PDP">
<dataGrid:DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type Primitives:DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
</dataGrid:DataGridTemplateColumn.HeaderStyle>
<dataGrid:DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" TextAlignment="Center" />
</DataTemplate>
</dataGrid:DataGridTemplateColumn.HeaderTemplate>
</dataGrid:DataGridTemplateColumn>
答案 2 :(得分:0)
检查是否设置了ActualWidth
,我认为只要您使用Path=Width
就行。