在我的应用程序中,我有一个非常奇怪的滚动条行为:底部滚动条在滚动时随机更改其大小。我使用GridView中有很多项目(shoretened代码):
<GridView
Margin="0,-3,0,0"
Padding="116,0,40,46">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<!-- Data Template here -->
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid ItemWidth="250" ItemHeight="250" Orientation="Vertical" Margin="0,0,80,0" MaximumRowsOrColumns="4"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>
我还发现,如果删除填充,行为就会消失。我可以将paddings的值设置为边距,但滚动条也有边缘看起来真的很难看......
我该如何改变? - 我说其他几个应用程序都有这个问题...
感谢您的帮助!
答案 0 :(得分:3)
您所看到的(“随机滚动条大小更改”)是网格中项目虚拟化的结果(实际上在VirtualisingStackPanel内)。当网格视图中的虚拟化容器加载更多要显示的项目时,滚动查看器会根据其内容调整大小。
如果该行为导致您出现问题,请尝试覆盖项目面板模板并为您的元素指定非虚拟化容器。
答案 1 :(得分:0)
我认为你应该将Grid放在ScrollViewer标签中。
<ScrollViewer Height="200" Width="200" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<GridView
Margin="0,-3,0,0"
Padding="116,0,40,46">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<!-- Data Template here -->
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid ItemWidth="250" ItemHeight="250" Orientation="Vertical" Margin="0,0,80,0" MaximumRowsOrColumns="4"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>
</ScrollViewer>
答案 2 :(得分:0)
@ ZombieSheep解释的实际上是非常正确的,但是这种情况只有在你使用gridview / listview的增量加载时才会发生,但是在你的特定情况下滚动条会因为gridview的padding属性而改变大小,如果你能设置正确的话并将左边填充值(填充=“ 116 ,0, 40 ,46”)设置为零或更少,然后您可以看到差异,可能没有必要放置scrollviewer中的gridview