为什么即使我使用完全相同的XAML,ListView.HeaderTemplate和ListView.ItemTemplate(UWP XAML)的显示方式也不同?
我的表单上有一个ListView,我正在设置ListView.HeaderTemplate,它看起来就像我期望的那样 但是,如果我将确切的网格定义复制到ListView.ItemTemplate中,它的布局将不相同 更改了两种列值颜色(青色和绿色) 我已经改变了两个项目列值的颜色,以便您可以区分每个项目的显示位置。我定义了两个为什么即使我使用完全相同的XAML,ListView.HeaderTemplate和ListView.ItemTemplate(UWP XAML)的显示方式也不同?,xaml,listview,uwp,Xaml,Listview,Uwp,我的表单上有一个ListView,我正在设置ListView.HeaderTemplate,它看起来就像我期望的那样 但是,如果我将确切的网格定义复制到ListView.ItemTemplate中,它的布局将不相同 更改了两种列值颜色(青色和绿色) 我已经改变了两个项目列值的颜色,以便您可以区分每个项目的显示位置。我定义了两个值,因此数据将显示在VisualStudio的预览布局中,但当它运行时,这两个布局看起来仍然不同,即使它们定义相同 没有网格。在ItemTemplate文本块上定义了行
值,因此数据将显示在VisualStudio的预览布局中,但当它运行时,这两个布局看起来仍然不同,即使它们定义相同
没有网格。在ItemTemplate文本块上定义了行
在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>
然后它确实更接近我的期望,但我仍然不确定为什么我必须以不同的方式来做
默认情况下,
ListViewItem
不会拉伸其内容。在ItemContainerStyle
中将HorizontalContentAlignment
设置为Stretch
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
方法1非常有效。您从哪里了解到ItemContainerStyle?如果你没有给我看,我永远也不会发现。非常感谢。XAML/UWP中似乎有很多未记录的(或很少记录的)。顺便说一句,方法2并不能解决问题。我试过了。@raddevus是
ItemsControl
的一部分。此外,我认为,删除我的免责声明是安全的。