WPF ItemsControl с несколькими столбцами
У меня есть ScrollViewer с ItemsControl внутри. ItemSource элемента ItemsControl привязывается к коллекции ObservableCollection.
Проблема в том, что по умолчанию все содержимое в один столбец. Мне бы хотелось, чтобы в соответствии с размером окна дочерние элементы размещались по всей доступной области.
WrapPanel будет работать. Пожалуйста, смотрите изображение ниже. Слева элементы расположены внутри ItemsPanel, справа они расположены внутри WrapPanel.
Но, к сожалению, у WrapPanel нет свойства ItemSource, поэтому я мог связывать свои элементы. Есть ли способ сделать так, чтобы ItemsSource имел больше столбцов или привязал мою коллекцию ObservableCollection к WrapPanel?
2 ответа
Просто сделайте это наоборот: ItemsControl
и измените шаблон панели, чтобы использовать WrapPanel
для размещения элементов:
<ItemsControl ItemsSource="{Binding YourObservableCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
...
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Придайте ширине панели обтекания ширину без ориентации, автоматически у вас будет 2 элемента на строку или 3... и т. д.