使用水平StackPanel作为ItemsPanel滚动ItemsControl

时间:2013-08-07 22:50:23

标签: c# xaml winrt-xaml

我有一个ItemsControl,我已经构建了我正在其中显示的项目(views:DisplayGroupView),这样他们将水平扩展以显示所有内容而不是垂直(只使用可用的高度)

我已更改ItemsPanel的{​​{1}}以使用ItemsControl StackPanel

布局明智它是完美的,但无论我做什么,我都无法让它水平滚动,所以我可以看到一切。

这是Orientation="Horizontal"

的XAML
ItemsControl

这样可以解决所有问题,但不会滚动。我也尝试更改ItemsControls模板以包含一个scrollviewer,但这只是垂直堆叠的东西:

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

如何在能够滚动的同时获得水平布局?

1 个答案:

答案 0 :(得分:8)

如果你将它从ItemsControl中拉出来并自行嵌入,由于某些原因,这通常会起到解决方法的作用,例如;

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