【发布时间】:2017-12-12 14:34:20
【问题描述】:
我的表单上有一个 ListView,我正在设置 ListView.HeaderTemplate,它看起来就像我期望的那样。
但是,如果我将确切的 Grid 定义复制到我的 ListView.ItemTemplate 中,它的布局就不一样了。
更改了两种列值颜色(青色和绿色)
我更改了两个 Item 列值的颜色,以便您区分每个值的显示位置。我定义了两个 <x:String> 值,因此数据将显示在 Visual Studio 的预览布局中,但是当它运行时,这两个布局看起来仍然不同,即使它们定义相同。
没有在 ItemTemplate TextBlocks 上定义 Grid.Row
您会在 XAML 中注意到的一个区别是 ItemTemplate TextBlocks 每个都只有其 Grid.Column 集(没有 Grid.Row 集)。那是一个测试,无论哪种方式看起来都一样。
从字面上复制/粘贴 HeaderTemplate 到 ItemTemplate
我确实将 HeaderTemplate 复制到了 ItemTemplate 并只进行了提到的更改。
为什么它们的布局不一样?
<ListView.HeaderTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Margin="7 0 0 0" Grid.Row="0" Grid.Column="0" Foreground="#ff0000" Text="Date" />
<TextBlock Margin="0 0 15 0" Grid.Row="0" Grid.Column="1" Foreground="#ff0000" Text="Entry Count" />
</Grid>
</DataTemplate>
</ListView.HeaderTemplate>
编辑
如果我将 ItemTemplate ColumnDefinitions 更改为如下所示:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
然后它确实更接近我的预期,但我仍然不确定为什么我必须这样做。
【问题讨论】: