具有多列的WPF ItemsControl

时间:2015-08-07 14:16:28

标签: wpf itemscontrol wrappanel

我有一个带有ItemsControl的ScrollViewer。 ItemsControl的ItemSource绑定到ObservableCollection。

问题是它将所有内容默认为一列。我希望根据窗口的大小,子项目可以适应所有可用区域。

WrapPanel会起作用。请看下面的图片。在左侧,项目排列在ItemsPanel内,右侧则排列在WrapPanel内。

enter image description here

但遗憾的是WrapPanel没有ItemSource属性,所以我可以绑定我的项目。有没有办法让ItemsSource有更多列或将我的ObservableCollection绑定到WrapPanel?

2 个答案:

答案 0 :(得分:4)

简单地反过来:保持ItemsControl并更改其面板模板以使用WrapPanel进行项目布局:

<ItemsControl ItemsSource="{Binding YourObservableCollection}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            ...
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

答案 1 :(得分:0)

给包裹面板一个没有方向的宽度,你自动每行有2个项目或3个等等(每个项目的宽度播放)