2013-08-07 8 views
9

Ich habe einen ItemsControl, ich habe die Elemente, die ich darin anzeigen (views:DisplayGroupView), so gebaut, dass sie horizontal expandieren, um alle ihre Inhalte anzuzeigen und nicht vertikal (nur unter Verwendung der verfügbaren Höhe)Scrollen in einem ItemsControl bei Verwendung eines horizontalen StackPanels als ItemsPanel

ich habe änderte meine ItemsPanel der ItemsControl zu verwenden, um eine StackPanel mit Orientation="Horizontal"

Layout-weise ist es perfekt, aber egal was ich tue, kann ich es nicht bekommen horizontal scrollen, damit ich alles sehen kann.

Dies ist das XAML für die 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> 

Dies legt alles schon ganz gut, aber nicht bewegen. Ich habe versucht, verändern sich auch die ItemsControls Vorlage einen Scroll enthalten, aber diese stapelt nur Dinge vertikal:

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

Wie kann ich das horizontale Layout erhalten, während noch in der Lage zu bewegen?

+0

Haben Sie versucht, es aus dem Template zu ziehen und es selbst einzubetten? Wie klingt albern, weiß ich, aber einen Versuch wert. –

+0

@ ChrisW. Wenn ich das mache, verbraucht ItemsControl mehr vertikalen Platz und legt nicht mehr so ​​wie ich es möchte. Auch mit PhonicUK

+0

@ChrisW. Ich habe es schließlich mit Ihrem Vorschlag, nur ein paar Feinheiten mit den Ausrichtungen gemacht. Wenn du es als Antwort posten willst, akzeptiere ich es :) – PhonicUK

Antwort

8

Wenn Sie es aus der ItemsControl herausziehen und es selbst einbetten, aus irgendeinem Grund, die oft als Workaround so etwas wie fungiert;

<ScrollViewer VerticalScrollBarVisibilty="Disabled" HorizontalScrollBarVisibility="Auto"> 
    <ItemsControl/> 
</ScrollViewer> 
Verwandte Themen