滚动条ItemsControl垂直填充,然后水平滚动

时间:2014-03-24 12:17:22

标签: c# wpf

我有一个带项目的ItemsControl。我希望像照片中那样订购物品。如果有更多元素,那个空格,应该有一个水平滚动条。我如何存档?

enter image description here 相关代码:

 <ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
      <ScrollViewer PanningMode="Both" >
        <ItemsPresenter />
       </ScrollViewer>
      </ControlTemplate>
  </ItemsControl.Template>
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>

编辑: 很抱歉,报告建议的解决方案不起作用,结果是项目的高度在运行时动态变化,导致只有一个项目的垂直空间。

3 个答案:

答案 0 :(得分:1)

会是这样的吗?

<ItemsControl.Template>
    <ControlTemplate TargetType="ItemsControl">
      <ScrollViewer HorizontalScrollBarVisibility="Auto"
           VerticalScrollBarVisibility="Disabled" >

如果这不起作用,请尝试这个

<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel Height="{Binding RelativeSource={RelativeSource 
          Mode=FindAncestor, AncestorType={x:Type ScrollViewer}}, 
          Path=ActualHeight}" />

修改

请勿忘记制作WrapPanel Orientation="Vertical"

答案 1 :(得分:1)

问题的示例代码

<ItemsControl.Template>
                <ControlTemplate>
                <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" Height="100" Width="200">
                        <ItemsPresenter />
                    </ScrollViewer>
                </ControlTemplate>
            </ItemsControl.Template>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Vertical" Height="100"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>

希望这是你要找的东西!!!

答案 2 :(得分:1)

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" >
    <ItemsControl>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Vertical" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</ScrollViewer>

使用ListBox简单地说:

<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled" >
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Vertical"  />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>