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... и т. д.

Другие вопросы по тегам