【问题标题】:UWP Listview in Gridview not increasingGridview中的UWP Listview没有增加
【发布时间】: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="&#x1f382;" 
                                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


【解决方案1】:

这个问题的正确答案是(根据 JustinXL 的提示)

<GridView ItemsSource="{Binding}" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="1080">
<GridView.ItemTemplate>
    <DataTemplate>
        <ItemsControl ItemsSource="{Binding ListData, Converter={StaticResource DataBindingDebugConverter}}" x:Name="BirthdayListView" HorizontalAlignment="Center" Margin="0,20,0,0">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="&#x1f382;" 
                                    FontSize="16" 
                                    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>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemContainerStyle>
    <Style TargetType="ContentControl">
        <Setter Property="Padding" Value="0"/>
        <Setter Property="Margin" Value="0,20,0,0"/>
        <Setter Property="Width" Value="360" />
        <Setter Property="VerticalContentAlignment" Value="Top" />
    </Style>
</GridView.ItemContainerStyle>
</GridView>

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2019-11-04
    • 2016-01-26
    • 1970-01-01
    相关资源
    最近更新 更多