我有一个带有ItemsControl的ScrollViewer。 ItemsControl的ItemSource绑定到ObservableCollection。
问题是它将所有内容默认为一列。我希望根据窗口的大小,子项目可以适应所有可用区域。
WrapPanel会起作用。请看下面的图片。在左侧,项目排列在ItemsPanel内,右侧则排列在WrapPanel内。
但遗憾的是WrapPanel没有ItemSource属性,所以我可以绑定我的项目。有没有办法让ItemsSource有更多列或将我的ObservableCollection绑定到WrapPanel?
答案 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个等等(每个项目的宽度播放)