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

ScrollViewer タグに Grid を配置する必要があると思います。

<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が説明したことは実際には非常に正しかったですが、そのシナリオはグリッドビュー/リストビューの増分ロードを利用した場合にのみ発生しますが、特定のケースでは、左右のパディングを設定できる場合、グリッドビューのパディングプロパティのためにスクロールバーのサイズが変わります値 (Padding=" 116 ,0, 40 ,46") をゼロまたはそれ以下にすると、違いがわかります。グリッドビューをスクロールビューアー内に配置する必要はないかもしれません

于 2013-04-10T04:50:29.947 に答える