我有以下用于创建数据网格的 XAML:
<DataGrid CanUserAddRows="False" HorizontalAlignment="Left" Name="Test" AutoGenerateColumns="False" Height="164" Margin="205,264,0,0" VerticalAlignment="Top" Width="511">
<DataGrid.Columns>
<DataGridTextColumn CanUserSort="False" Binding="{Binding Description, Mode=TwoWay}" Header="Description" Width="6*" IsReadOnly="True" />
<DataGridTemplateColumn Width="2.6*" x:Name="Parent" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate >
<Grid ShowGridLines="False" Width="{Binding ElementName=Parent,Path=Width}" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<TextBlock Text="Initial " Grid.Column="0" />
<TextBlock Text="Date " Grid.Column="1" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridCheckBoxColumn CanUserSort="False" Binding="{Binding StepComplete, Mode=TwoWay}" Header="Completed" Width="1.5*" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
我创建了一个 DataGridTemplateColumn.HeaderTemplate,其中包含一个 DataTemplate,因为我想创建一个多标题列。我的问题是我无法让 DataTemplate 拉伸/填充其父单元格。我在下面添加了一张图片来演示我的问题。请注意初始日期文本周围突出显示的区域,因为这是数据模板边框。有谁知道如何更改 DataTemplate 以填充其父单元格?
谢谢卡勒姆
要设置标题单元格对齐方式,您必须使用 ColumnHeaderStyle:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</DataGrid.ColumnHeaderStyle>
我在您的代码中看到两个问题:
- 您正在尝试将 Grid.Width 属性(双精度)绑定到具有值的 DataGridTemplateColumn.Width 属性
2.6*
(数据网格长度)。您无法设置2.6*
到 Grid.Width,因为它不是有效的双精度值。
- DataTemplate 有自己的名称范围 https://msdn.microsoft.com/en-us/library/system.windows.markup.inamescope(v=vs.110).aspx,因此您不能使用 ElementName 引用 DataTemplate 外部的元素。此外,DataGridTemplateColumn 不是 UIElement,也不在 VisualTree 中,因此 DataGridTemplateColumn 不是 DataTemplate 中定义的元素的父级。 DataGridTemplateColumn 仅用于定义列。然后,DataGrid 根据定义生成标题、行和单元格,但 DataGridColumns 永远不会被渲染。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)