具有多列的 WPF ItemsControl
WPF ItemsControl with multiple columns
我有一个 ScrollViewer,里面有一个 ItemsControl。 ItemsControl 的 ItemSource 绑定到 ObservableCollection。
问题是它将所有内容默认为一栏。我希望根据 window 的大小,子项目将适应所有可用区域。
WrapPanel 可以。请看下图。在左侧,项目排列在 ItemsPanel 内,在右侧,它们排列在 WrapPanel 内。
但不幸的是 WrapPanel 没有 ItemSource 属性 所以我可以绑定我的项目。有没有办法让 ItemsSource 有更多列或将我的 ObservableCollection 绑定到 WrapPanel?
反其道而行之:保留 ItemsControl
并更改其面板模板以使用 WrapPanel
进行项目布局:
<ItemsControl ItemsSource="{Binding YourObservableCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
...
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
给包裹面板一个没有方向的宽度,你会自动每行有 2 个项目或 3.. 等等(玩每个项目的宽度)
我有一个 ScrollViewer,里面有一个 ItemsControl。 ItemsControl 的 ItemSource 绑定到 ObservableCollection。
问题是它将所有内容默认为一栏。我希望根据 window 的大小,子项目将适应所有可用区域。
WrapPanel 可以。请看下图。在左侧,项目排列在 ItemsPanel 内,在右侧,它们排列在 WrapPanel 内。
但不幸的是 WrapPanel 没有 ItemSource 属性 所以我可以绑定我的项目。有没有办法让 ItemsSource 有更多列或将我的 ObservableCollection 绑定到 WrapPanel?
反其道而行之:保留 ItemsControl
并更改其面板模板以使用 WrapPanel
进行项目布局:
<ItemsControl ItemsSource="{Binding YourObservableCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
...
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
给包裹面板一个没有方向的宽度,你会自动每行有 2 个项目或 3.. 等等(玩每个项目的宽度)