Динамически добавлять элементы в сетку WPF - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть следующая 'Сетка':

<Grid x:Name="ImagesGrid" Grid.Row="1"  >
    <ItemsControl ItemsSource="{Binding FrameViewers}" />
</Grid>

У меня также есть следующая коллекция UserControl предметов:

private ObservableCollection<FrameViewer> m_frameViewers = new ObservableCollection<FrameViewer>();

public ObservableCollection<FrameViewer> FrameViewers
{
    get => m_frameViewers;
    set
    {
        m_frameViewers = value;
        OnPropertyChanged();
    }
}

Я хотел бы динамически добавить FrameViewerна мой экран, чтобы он выглядел как прикрепленное изображение: enter image description here

В настоящее время я вижу их отсортированные по вертикали так: enter image description here

Я смог поиграть с сеткой и добавил StackPanel к ItemSource, но затем все они были измерены по длине заголовка и прикреплены к левой стороне Grid

Что мне здесь не хватает?Чего мне не хватает?

1 Ответ

0 голосов
/ 05 декабря 2018

ItemsControl по умолчанию расположит элементы по вертикали.

Для горизонтального макета вам нужно изменить его ItemsPanel на другой ItemsPanelTemplate - используя либо горизонтальную StackPanel, либо что-то вроде UniformGrid, в зависимости от того, что вы хотите, чтобы в коллекции было более трех элементов FrameViewer.

См. здесь для некоторых примеров.

Затем вам необходимо установитьItemsControl ItemTemplate для соответствующего DataTemplate, чтобы гарантировать, что каждый элемент FrameViewer отображается в необходимом размере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...