2013-08-07 4 views
9

私はItemsControlを持っています。私はそれをすべての内容を表示するように水平方向に拡大するように表示しています(views:DisplayGroupView)そして、ではない垂直(のみ利用可能高さを使用して)ItemsPanelとして水平StackPanelを使用しているときにItemsControl内をスクロール

私はStackPanel

Orientation="Horizontal"とレイアウトが賢明それは完璧だが、関係なく、私は何をすべきか、私はそれを得ることはできません使用する ItemsControlの私の ItemsPanelを変更しました私はすべてを見ることができるように水平にスクロールします。

これはItemsControlためのXAMLです:

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

これは大丈夫、すべてアウトを産むが、スクロールしないであろう。私はまた、ScrollViewerのを含めるようにItemsControlsテンプレートを変更しようとしたが、これは垂直方向にのみ物事をスタック:私はまだスクロールすることができることながら、横のレイアウトを取得できますか

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

+0

あなたはそれをテンプレートから引き出してそれを埋め込むことを試みましたか? のように、私は知っていますが、一発の価値があります。 –

+0

@ChrisW。私がそうするとき、ItemsControlはより多くの垂直空間を使い、もはや私が望む方法をレイアウトしません。 PhonicUK

+0

@ChrisW。私は最終的にあなたの提案を使用してそれを得ました、ちょうどアライメントと少し微調整を取った。答えとして投稿したい場合は、私はそれを受け入れるでしょう:) – PhonicUK

答えて

8

ItemsControlから取り出してそれを埋め込むと、なんらかの理由で回避策として動作することがよくあります。

<ScrollViewer VerticalScrollBarVisibilty="Disabled" HorizontalScrollBarVisibility="Auto"> 
    <ItemsControl/> 
</ScrollViewer> 
関連する問題