【发布时间】:2017-06-18 16:56:07
【问题描述】:
我有一个 GridView 来显示一些数据。每个 GridView 项目都是一个 ListView,它在运行时不断增加。 我希望 GridView 也增加 - 但它只在 GridView 项目内显示滚动条。 另一个要求是每个 GridView 项目都应该在项目的顶部对齐。
<GridView ItemsSource="{Binding}" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="1080">
<GridView.ItemTemplate>
<DataTemplate>
<ListView ItemsSource="{Binding ListData}" HorizontalAlignment="Center">
<ListView.ItemTemplate>
<DataTemplate >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="🎂"
FontSize="20"
Grid.Column="0"
Margin="0,0,10,10"
FontFamily="Sergoe UI"
Style="{StaticResource BasicTextBlock}"/>
<TextBlock Text="{Binding NameString, Converter={StaticResource DataBindingDebugConverter}}"
Grid.Column="2"
Margin="10,0,0,0"
FontSize="16"
Style="{StaticResource BasicTextBlock}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0,0,0,0"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0,20,0,0"/>
<Setter Property="Width" Value="360" />
</Style>
</GridView.ItemContainerStyle>
</GridView>
【问题讨论】:
-
不要这样做。在
GridView中包含ListViews 是个坏主意。请改用ItemsControl。 -
@JustinXL ItemsControl 是完成它的提示。谢谢!我刚刚发现的是 ListBox 和 ListView 占用了父级可用的所有空间,仅此而已。这是我的问题。
-
是的,还要记住 ListView 是一个复杂而繁重的控件。您通常只在页面上使用一个。 :)
-
我在这个话题上走得更远了,今天它又没用了。但我也发现了原因:GridView 项目高度基于第一个项目,就像这里描述的那样:link 所以问题不在于 ListView,而在于 Gridview 本身。我需要根据连续最大的项目设置 gridView 的高度。有任何想法吗?我会为此提出一个新问题。
标签: xaml listview gridview uwp