如何在WPF中将列表项添加到ListView中

本文关键字:添加 ListView 列表 WPF | 更新日期: 2023-09-27 18:06:46

我试图在WPF的ListView中添加图像列表项:

c

for (int i = 0; i < filtered_thumbnails.Count; i++)
{ 
    Image tmp = new Image();
    tmp = filtered_thumbnails.ElementAt(i);
    filtered_thumbnails.RemoveAt(i);  
    SlideTransitionsList.Items.Add(tmp);                    
}

Xaml

<ListView Background ="LightGray" Name="SlideTransitionsList" Grid.Row="10" Grid.Column="1" Grid.ColumnSpan="8" Grid.RowSpan="25" SelectionChanged="SlideTransitionsList_SelectionChanged" ItemsSource="{Binding}">
    <ListView.ItemsPanel>
          <ItemsPanelTemplate>
               <UniformGrid Columns="1"/>
          </ItemsPanelTemplate>
   </ListView.ItemsPanel>
</ListView>

但是我一直得到一个错误,说它不能添加元素,因为它们已经是其他父元素的子元素。所以我试图从列表中删除项目之前,将其添加到ListView,但它仍然给出了相同的错误。有人能帮帮我吗?

如何在WPF中将列表项添加到ListView中

为什么不能像下面这样绑定filtered_thumbnails列表:

SlideTransitionsList.ItemsSource=filtered_thumbnails;

如果迭代filtered_thumbnails并分别分配每个元素,则在第一次迭代期间将图像源分配给集合,因此在第二次迭代中,项源不是空的(它具有第一个分配的元素),因此它不允许更改。但您可以将List作为ItemSource分配给上面提到的列表。

在你的更新ListView定义是缺失的,所以我建议你定义如下:

<ListView name="filtered_thumbnails" ItemsSource="{Binding}">
    <ListView .ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" Stretch="Uniform"></Image>
        </DataTemplate>
    </ListView .ItemTemplate>
</ListView>

如果您正在使用其他解决方案中描述的数据绑定,请将代码更改为。

否则省略以下示例的ItemsSource={Binding}

<ListView Background ="LightGray" Name="SlideTransitionsList" Grid.Row="10" Grid.Column="1" Grid.ColumnSpan="8" Grid.RowSpan="25" SelectionChanged="SlideTransitionsList_SelectionChanged" ItemsSource="{Binding}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" Stretch="Uniform"></Image>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>