2013-08-07 9 views
9

Ho uno ItemsControl, ho creato gli elementi che sto visualizzando in esso (views:DisplayGroupView) in modo tale che si espandano orizzontalmente per mostrare tutto il loro contenuto e non in verticale (solo con l'altezza disponibile)Scorrimento in un ItemsControl mentre utilizzo uno StackPanel orizzontale come ItemsPanel

ho cambiato ItemsPanel del ItemsControl di utilizzare una StackPanel con Orientation="Horizontal"

layout saggio è perfetto, ma non importa quello che faccio, non posso farlo per scorrere orizzontalmente in modo da poter vedere tutto.

Questo è il codice XAML per il ItemsControl:

<ItemsControl ItemsSource="{Binding DisplayGroups}" Grid.Row="1" Margin="120,20,120,20" VerticalContentAlignment="Stretch"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate > 
       <StackPanel Orientation="Horizontal" ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.HorizontalScrollBarVisibility="Visible"/> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 

     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <views:DisplayGroupView Margin="0,0,20,0" DataContext="{Binding}" VerticalAlignment="Stretch"></views:DisplayGroupView> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

Questo stabilisce tutto fuori posto, ma non scorre. Ho anche provato a cambiare il modello ItemsControls per includere uno ScrollViewer, ma questo impila le cose solo in senso verticale:

  <ItemsControl.Template> 
       <ControlTemplate> 
        <ScrollViewer x:Name="ScrollViewer" Padding="{TemplateBinding Padding}" VerticalContentAlignment="Stretch" ScrollViewer.HorizontalScrollMode="Enabled" ScrollViewer.VerticalScrollMode="Disabled"> 
         <ItemsPresenter VerticalAlignment="Stretch"/> 
        </ScrollViewer> 
       </ControlTemplate> 
      </ItemsControl.Template> 

Come posso ottenere il layout orizzontale pur essendo in grado di scorrere?

+0

Hai provato a estrarlo dal modello e inserirlo da solo? Come , suona sciocco lo so, ma vale la pena provare. –

+0

@ Chrishr. Quando lo faccio, ItemsControl utilizza più spazio verticale e non espone più come voglio io. Anche con PhonicUK

+0

@ChrisW. Alla fine ho capito usando il tuo suggerimento, ho solo preso un po 'di modifiche con gli allineamenti. Se vuoi pubblicarlo come risposta, lo accetto :) – PhonicUK

risposta

8

Se si estrae da ItemsControl e lo si incorpora da solo, per qualche motivo che spesso funge da soluzione alternativa, quindi qualcosa di simile;

<ScrollViewer VerticalScrollBarVisibilty="Disabled" HorizontalScrollBarVisibility="Auto"> 
    <ItemsControl/> 
</ScrollViewer> 
Problemi correlati