动态将项目添加到网格WPF

时间:2018-12-05 15:07:05

标签: c# wpf binding user-controls itemsource

我有以下“网格”:

<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 :(得分:0)

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

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

有关示例,请参见here

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