0

我有以下“网格”:

<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到我的屏幕,使其看起来像附加的图像:在此处输入图像描述

目前我看到它们像这样垂直排序:在此处输入图像描述

我能够使用“网格”并在 中添加了一个StackPanelItemSource但随后它们都按标题的长度调整大小,并附加到Grid

我在这里想念什么?我错过了什么?

4

1 回答 1

0

默认情况下,ItemsControl 将垂直排列项目。

对于水平布局,您需要将其ItemsPanel, 更改为不同的ItemsPanelTemplate- 使用水平 StackPanel 或 UniformGrid 之类的东西,具体取决于您希望在集合中有超过三个 FrameViewer 项目时发生的情况。

有关一些示例,请参见此处

然后,您需要将 ItemsControl 设置ItemTemplate为适当的DataTemplate,以确保每个 FrameViewer 项目都以所需的大小显示。

于 2018-12-05T15:15:54.963 回答