如何在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,但它仍然给出了相同的错误。有人能帮帮我吗?
为什么不能像下面这样绑定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>