限制GridView C#UWP中的项目数

Limiting number of items in a GridView C# UWP(限制GridView C#UWP中的项目数)
本文介绍了限制GridView C#UWP中的项目数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用绑定到集合的网格视图。该集合包含未知数量的项目,我希望将GridView限制为在一行中仅显示5个项目。每一项都保存在一个堆叠面板中,该面板包含一个文本块和一幅图像。 A.如何限制GridView项目数? B.如果我不想限制它,我怎么才能创建一个1行的网格视图,用一个小箭头将网格滚动到一边?

以下是我的XAML代码:

 <GridView Name="ListViewGrid" Background="Azure" 
              Grid.Row="2" 
              ItemsSource="{x:Bind ForeCasts}" 
              Foreground="Chartreuse" 
              HorizontalAlignment="Stretch" >
        <GridView.ItemTemplate>
            <DataTemplate x:DataType="data:ForeCast">
                <StackPanel Orientation="Vertical" Margin="20,20,20,20" Height="260" Width="260">
                    <TextBlock HorizontalAlignment="Center" Margin="10,10,10,10">
                        <Run Text="{x:Bind TempString}" FontSize="24" Foreground="Black"/>
                        <Run Text="&#x00B0;" FontFamily="Segoe Print" FontSize="24"/>
                        <Run Text="C" FontSize="24"/>
                    </TextBlock>
                    <Image Source="{x:Bind ImageString}" Width="60" Height="60"/>
                </StackPanel>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

推荐答案

该集合包含未知数量的项目,我希望将GridView限制为在一行中仅显示5个项目。

GridView使用ItemsWrapGrid作为默认ItemsPanel。并且ItemsWrapGrid有一个MaximumRowsOrColumns property。使用此属性,我们可以限制在换行之前显示的最大行数或列数。此属性与Orientation属性一起使用。如果一行只显示5项,可以进行如下设置:

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <ItemsWrapGrid MaximumRowsOrColumns="5" Orientation="Horizontal" />
    </ItemsPanelTemplate>
</GridView.ItemsPanel>

请注意,MaximumRowsOrColumns仅限制最大数量,如果GridView不够大,您可能会看到较少的项目。

如果我不想限制它,我如何创建一个用小箭头将网格滚动到一侧的1行网格视图?

要显示水平堆叠的集合,我们通常使用ListView。如果您确实想使用GridView,可以使用ItemsStackPanel而不是ItemsWrapGrid,如下所示:

<GridView.ItemsPanel>
    <ItemsPanelTemplate>
        <ItemsStackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
</GridView.ItemsPanel>

要启用滚动,您可能还需要设置ScrollViewer.HorizontalScrollBarVisibility属性和ScrollViewer.HorizontalScrollMode属性,如下所示:

<GridView Name="ListViewGrid"
          Grid.Row="2"
          HorizontalAlignment="Stretch"
          Background="Azure"
          Foreground="Chartreuse"
          ItemsSource="{x:Bind ForeCasts}"
          ScrollViewer.HorizontalScrollBarVisibility="Visible"
          ScrollViewer.HorizontalScrollMode="Enabled">
    <GridView.ItemTemplate>
        <DataTemplate x:DataType="data:ForeCast">
            <StackPanel Width="260"
                        Height="260"
                        Margin="20,20,20,20"
                        Orientation="Vertical">
                <TextBlock Margin="10,10,10,10" HorizontalAlignment="Center">
                    <Run FontSize="24" Foreground="Black" Text="{x:Bind TempString}" />
                    <Run FontFamily="Segoe Print" FontSize="24" Text="&#x00B0;" />
                    <Run FontSize="24" Text="C" />
                </TextBlock>
                <Image Width="60" Height="60" Source="{x:Bind ImageString}" />
            </StackPanel>
        </DataTemplate>
    </GridView.ItemTemplate>
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <ItemsStackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
</GridView>

这篇关于限制GridView C#UWP中的项目数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)