如何在UWP GridView上启用Scrollbars

时间:2016-01-09 18:36:23

标签: xaml gridview uwp

我有一个UWP,我从XML文件加载并在GridView中显示它,我试图以允许我在所有可用空间中堆叠和包装项目的方式启用Scrollbars,如下图所示。我遇到的问题是我无法弄清楚如何启用滚动条,以便我可以滚动框直到我到达列表的末尾。

enter image description here

到目前为止,我已经完成了你在图片中看到的内容,它按照我想要的方式包装,但它填充了所有可用空间,并且不允许您垂直或水平滚动(我只想滚动一个方式,但我试图看看我是否可以去任何一种方式)。通过大量的试验和错误,我能够让它一次滚动一行或一列到列表的末尾,但这也不是理想的结果。这是我现在使用XAML的地方(屏幕截图的修剪版本)。

<GridView x:Name="DataGrid1">
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <ItemsWrapGrid Orientation="Horizontal"
                            ScrollViewer.HorizontalScrollBarVisibility="Visible"
                            ScrollViewer.VerticalScrollBarVisibility="Disabled" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
    <GridView.ItemTemplate>
        <DataTemplate>
            <Border Width="270"
                    Height="200"
                    Margin="5"
                    BorderBrush="Black"
                    BorderThickness="2">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="70" />
                        <ColumnDefinition Width="100*" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" />
                    </Grid.RowDefinitions>

                    <StackPanel Grid.Row="0"
                                Grid.Column="0"
                                Grid.ColumnSpan="2"
                                Background="#87CEFA">
                        <TextBlock Margin="2"
                                    HorizontalAlignment="Center"
                                    FontSize="16"
                                    FontWeight="Bold"
                                    Text="{Binding Company}" />
                    </StackPanel>

                    <TextBlock Grid.Row="1"
                                Grid.Column="0"
                                Margin="2"
                                HorizontalAlignment="Right"
                                FontWeight="Bold"
                                Text="Code: " />
                    <TextBlock Grid.Row="1"
                                Grid.Column="1"
                                Margin="2"
                                Text="{Binding Code}" />
                </Grid>
            </Border>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

那么我需要做什么才能按照我想要的方式启用滚动条?

3 个答案:

答案 0 :(得分:4)

确保您的GridView位于网格中,而不是StackPanel。它不会在StackPanel中扩展。 要使其在StackPanel中滚动,您必须指定GridView的高度。这是我的问题:)

答案 1 :(得分:1)

据我所知,没有自动显示滚动条的网格视图是由于stackpanel的存在。所以我的解决方案是尝试删除stackpanel,如果有的话,如果我发现负责的stackpanel将其替换为其他类型的面板并以我的方式备份。它完全是一种蛮力的方法,但它在大多数时间都有效。 另一条建议。在更换stackpanel的过程中,尝试用网格替换它,并尝试将宽度和高度设置为自动或星形大小的行和列分开,而不是用实际数字指定它以查看它是否以这种方式工作。如果它有效,那就按照实际数字进行表达。

答案 2 :(得分:0)

这是您的问题,在ItemsWrapGrid的定义中:

 ScrollViewer.VerticalScrollBarVisibility="Disabled" 

这意味着即使显示滚动条也无法正常工作。

删除此行,您应该有一个工作滚动条。