【问题标题】:Why do ListView.HeaderTemplate and ListView.ItemTemplate (UWP XAML) display differently even though I use the exact same XAML?为什么即使我使用完全相同的 XAML,ListView.HeaderTemplate 和 ListView.ItemTemplate (UWP XAML) 的显示也会不同?
【发布时间】: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>

然后它确实更接近我的预期,但我仍然不确定为什么我必须这样做。

【问题讨论】:

    标签: xaml listview uwp


    【解决方案1】:

    默认情况下,ListViewItem 不会拉伸其内容。在ItemContainerStyle 中将HorizontalContentAlignment 设置为Stretch

    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListView.ItemContainerStyle>
    

    【讨论】:

    • 方法 1 效果很好。您从哪里了解到 ItemContainerStyle?如果你没有给我看,我永远不会发现。非常感谢。 XAML / UWP 中似乎有很多未记录(或很少记录)。顺便说一句,方法2不能解决问题。我试过了。
    • @raddevus ItemContainerStyleItemsControl 的一部分。另外,我认为,删除我的免责声明是安全的。
    猜你喜欢
    • 1970-01-01
    • 2019-10-03
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2013-12-01
    相关资源
    最近更新 更多