5

Ho problemi nel far scorrere gli stackpanel orizzontali da uno scrollviewer. Quello che sto cercando di fare è più complesso del mio esempio, ma dopo aver rimosso le variabili penso di poter capire tutto se riesco a risolvere questo ultimo problema.XAML Horizontal Stackpanel Scrolling

Fondamentalmente, non riesco a far scorrere lo scrollviewer orizzontalmente quando contiene uno stackpanel orizzontale.

Ecco il codice XAML del campione:

<ScrollViewer> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="test.png" Width="400" Height="400"/> 
      <Image Source="test.png" Width="400" Height="400"/> 
      <Image Source="test.png" Width="400" Height="400"/> 
      <Image Source="test.png" Width="400" Height="400"/> 
      <Image Source="test.png" Width="400" Height="400"/> 
      <Image Source="test.png" Width="400" Height="400"/> 
      <Image Source="test.png" Width="400" Height="400"/> 
     </StackPanel> 
    </ScrollViewer> 

Stranamente, se mi limito a scambiare l'orientamento da orizzontale a verticale, scorre bene. Ho letto su più post che gli stackpanel hanno problemi che possono renderli inadatti agli scrollviewer, quindi l'ho provato anche con una griglia, ma ottengo gli stessi risultati.

<ScrollViewer> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="400"/> 
       <ColumnDefinition Width="400"/> 
       <ColumnDefinition Width="400"/> 
       <ColumnDefinition Width="400"/> 
       <ColumnDefinition Width="400"/> 
       <ColumnDefinition Width="400"/> 
      </Grid.ColumnDefinitions>     
      <Image Source="test.png" Width="400" Height="400" Grid.Column="0"/> 
      <Image Source="test.png" Width="400" Height="400" Grid.Column="1"/> 
      <Image Source="test.png" Width="400" Height="400" Grid.Column="2"/> 
      <Image Source="test.png" Width="400" Height="400" Grid.Column="3"/> 
      <Image Source="test.png" Width="400" Height="400" Grid.Column="4"/> 
      <Image Source="test.png" Width="400" Height="400" Grid.Column="5"/> 
     </Grid> 
    </ScrollViewer> 

Sembra così semplice che ho la sensazione di fraintendere qualcosa di fondamentale. Se qualcuno può dare una mano, sarei estremamente grato.

risposta

8

Devi solo attivare lo scorrimento orizzontale. It's hidden by default (ma quello verticale non lo è, da qui la confusione).

<ScrollViewer HorizontalScrollBarVisibility="Auto"> 
+2

Grazie! Ho sfogliato innumerevoli post riguardo a HorizontalScrollBarVisibility e ho persino guardato il link MSDN che hai postato, ma non ho mai realizzato che la visibilità della barra di scorrimento sia necessaria per lo scorrimento del lavoro. Grazie mille, ho trascorso giorni su questo. – Riot9

+1

La cosa strana è che 'HorizontalScrollBarVisibility' deve essere abilitato affinché lo scrolling basato sul tocco funzioni, anche quando' HorizontalScrollMode' è abilitato. –