我有一个UWP,我从XML文件加载并在GridView中显示它,我试图以允许我在所有可用空间中堆叠和包装项目的方式启用Scrollbars,如下图所示。我遇到的问题是我无法弄清楚如何启用滚动条,以便我可以滚动框直到我到达列表的末尾。
到目前为止,我已经完成了你在图片中看到的内容,它按照我想要的方式包装,但它填充了所有可用空间,并且不允许您垂直或水平滚动(我只想滚动一个方式,但我试图看看我是否可以去任何一种方式)。通过大量的试验和错误,我能够让它一次滚动一行或一列到列表的末尾,但这也不是理想的结果。这是我现在使用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>
那么我需要做什么才能按照我想要的方式启用滚动条?
答案 0 :(得分:4)
确保您的GridView位于网格中,而不是StackPanel。它不会在StackPanel中扩展。 要使其在StackPanel中滚动,您必须指定GridView的高度。这是我的问题:)
答案 1 :(得分:1)
据我所知,没有自动显示滚动条的网格视图是由于stackpanel的存在。所以我的解决方案是尝试删除stackpanel,如果有的话,如果我发现负责的stackpanel将其替换为其他类型的面板并以我的方式备份。它完全是一种蛮力的方法,但它在大多数时间都有效。 另一条建议。在更换stackpanel的过程中,尝试用网格替换它,并尝试将宽度和高度设置为自动或星形大小的行和列分开,而不是用实际数字指定它以查看它是否以这种方式工作。如果它有效,那就按照实际数字进行表达。
答案 2 :(得分:0)
这是您的问题,在ItemsWrapGrid
的定义中:
ScrollViewer.VerticalScrollBarVisibility="Disabled"
这意味着即使显示滚动条也无法正常工作。
删除此行,您应该有一个工作滚动条。