4

在我的应用程序中,我有一个非常奇怪的滚动条行为:底部滚动条在滚动时会随机改变其大小。我使用了一个 GridView,里面有很多项目(支持代码):

<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>

我还发现如果我删除填充,行为就会消失。我可以将填充的值设置为边距,但是滚动条也有边距,看起来真的很难看......

我该如何改变呢?- 我注意到其他几个应用程序有这个问题......

谢谢你的帮助!

4

3 回答 3

3

您所看到的(“随机滚动条大小变化”)是网格内项目虚拟化的结果(实际上是在 VirtualisingStackPanel 内)。随着网格视图中的虚拟化容器加载更多显示项目,滚动查看器会根据其内容调整大小。

如果该行为导致您出现问题,请尝试覆盖项目面板模板并为您的元素指定一个非虚拟化容器。

于 2012-10-21T15:21:18.747 回答
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>

尝试根据您的应用进行调整。请参阅 ScrollViewer 了解此处的属性和事件。在这里做一些新的事情。

于 2012-10-21T14:47:08.340 回答
0

@ZombieSheep 解释的内容实际上是非常正确的,但是这种情况仅在您使用 gridview/listview 的增量加载时才会发生,但是在您的特定情况下,如果您可以设置左右填充,则滚动条会由于 gridview 的填充属性而改变大小值 (Padding=" 116 ,0, 40 ,46") 为零或小于你可以看到差异,可能不需要将 gridview 放在滚动查看器内

于 2013-04-10T04:50:29.947 回答