首页 > 解决方案 > WPF ListView 重复项目替换为同名项目

问题描述

我正在开发一个程序,该程序向用户显示他们扫描的所有页面,如果他们不满意,允许他们重新扫描页面。我使用显示图像缩略图的列表视图对页面进行了小预览。

当我重新扫描一个页面时,旧的预览缩略图没有被删除,新的预览缩略图出现在它旁边。我的代码用同名的新图像替换旧图像。

关于如何解决这个问题的任何想法?我似乎无法通过索引删除它或刷新视图来修复它。我可以重新加载所有图像,但是当我有超过 20 张图像时,我担心性能。如果我的图片少于 11 张(0 到 9),我不会遇到这个问题。

预览外观的示例,新图像是彩色的。

ListView 的 XAML:

<ListView.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Vertical" 
        VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                        <Image Source="{Binding image}" 
        HorizontalAlignment="Center" VerticalAlignment="Top" Stretch="Fill" />
                        <TextBlock Text="{Binding titre}" 
        HorizontalAlignment="Center" VerticalAlignment="Bottom" />
                        <TextBlock Text="{Binding index}" Visibility="Visible"/>
        </StackPanel>
    </DataTemplate>
</ListView.ItemTemplate>

此代码替换正确的图像:

private void UpdateListePreview(int index)
{
    if (index >= 0 && index < imagelist.Count)
    {
        imagelist[index] = controleur.ChargerImageSelectionnee(index, 320, 480);
        listePreview.SelectedIndex = index;
    }
}

此代码在 ObservableCollection 中添加图像:

imagelist = new ObservableCollection<ImageData>();
foreach(ImageData data in controleur.ChargerImages())
{
    imagelist.Add(data);
}
listePreview.ItemsSource = imagelist;

标签: c#.netwpflistview

解决方案


推荐阅读