2011-12-13 14 views
6
<ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True"> 
       <StackPanel Name="basePanel" Orientation="Vertical" Height="450" /> 
      </ScrollViewer> 

Questo è il codice per lo stackpanel che viene riempito in runtime con più WrapPanel. Scroll Viewer scorre i pannelli - uno alla volta - il che lo rende davvero scomodo perché tutti i pannelli hanno dimensioni diverse. Ho provato questo one impostando ScrollViewer.CanContentScroll = "False" proprietà in StackPanel durante l'eliminazione in ScrollViewer, non ha aiutato - barra di scorrimento è scomparso del tutto. Qual è la soluzione per la barra di scorrimento liscia?Scorrimento uniforme all'interno del pannello stack nel wpf

+0

Non sono sicuro, ma forse si StackPanel o qualche altro contenitore utilizza la virtualizzazione. A volte a WPF piace applicare una proprietà predefinita "IsVirtualizing = true" a molti dei suoi contenitori. – Dror

risposta

14

avvolgere la StackPanel in un altro pannello

ScrollViewer di WPF cerca di scorrere interi elementi in vista alla volta, ed è per questo che si vede il comportamento di scorrimento jumpy. Annidando lo StackPanel in un altro pannello, ScrollViewer tenterà di far scorrere l'intero StackPanel in vista, che è troppo grande in modo da utilizzare lo scorrimento uniforme.

Ecco un esempio - Rimozione del DockPanel vi darà una pergamena jumpy, ma con esso si otterrà regolare il comportamento di scorrimento

<ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True" Height="250"> 
    <DockPanel> 
     <StackPanel Name="basePanel" Orientation="Vertical" Width="200"> 
      <Rectangle Height="75" Fill="Red" Width="200" /> 
      <Rectangle Height="50" Fill="Orange" Width="200" /> 
      <Rectangle Height="75" Fill="Yellow" Width="200" /> 
      <Rectangle Height="75" Fill="Green" Width="200" /> 
      <Rectangle Height="75" Fill="Black" Width="200" /> 
      <Rectangle Height="75" Fill="Purple" Width="200" /> 
     </StackPanel> 
    </DockPanel> 
</ScrollViewer> 
+0

Ho impacchettato StackPanel con DockPanel ma la barra di scorrimento è scomparsa del tutto. – Sergey

+0

@Sergey L'impostazione 'Altezza' è impostata su' StackPanel', quindi limita la dimensione di StackPanel. Sposta l'attributo 'Height' al tuo' ScrollViewer' e dovrebbe funzionare. – Rachel

+0

sei una rockstar! grazie mille – Sergey

Problemi correlati