奇怪的滚动条行为

时间:2012-10-21 07:36:17

标签: xaml windows-8 microsoft-metro scrollbar

在我的应用程序中,我有一个非常奇怪的滚动条行为:底部滚动条在滚动时随机更改其大小。我使用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的值设置为边距,但滚动条也有边缘看起来真的很难看......

我该如何改变? - 我说其他几个应用程序都有这个问题...

感谢您的帮助!

3 个答案:

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

尝试根据您的应用进行调整。 请参阅ScrollViewer以获取属性和事件here。 做一些新的事情here

答案 2 :(得分:0)

@ ZombieSheep解释的实际上是非常正确的,但是这种情况只有在你使用gridview / listview的增量加载时才会发生,但是在你的特定情况下滚动条会因为gridview的padding属性而改变大小,如果你能设置正确的话并将左边填充值(填充=“ 116 ,0, 40 ,46”)设置为零或更少,然后您可以看到差异,可能没有必要放置scrollviewer中的gridview