Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF ListView复制由同名项替换的项_C#_.net_Wpf_Listview - Fatal编程技术网

C# WPF ListView复制由同名项替换的项

C# WPF ListView复制由同名项替换的项,c#,.net,wpf,listview,C#,.net,Wpf,Listview,我正在开发一个程序,向用户显示他们扫描的所有页面,并允许他们在对页面不满意时重新扫描页面。我用一个显示图像缩略图的列表视图对页面进行了一个小预览 当我重新扫描页面时,旧的预览缩略图不会被删除,新的预览缩略图会出现在页面旁边。我的代码将旧图像替换为同名的新图像 有没有办法解决这个问题?我似乎无法通过索引删除它或刷新视图来修复它。我可以重新加载所有图像,但当我有20多个图像时,我担心性能。如果我有少于11个图像(0到9),我不会遇到这个问题 ListView的XAML: <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;
    }
}
private void UpdateListePreview(int索引)
{
如果(索引>=0&&index
此代码在ObservableCollection中添加图像:

imagelist = new ObservableCollection<ImageData>();
foreach(ImageData data in controleur.ChargerImages())
{
    imagelist.Add(data);
}
listePreview.ItemsSource = imagelist;
imagelist=新的ObservableCollection();
foreach(controleur.ChargerImages()中的图像数据)
{
imagelist.Add(数据);
}
ListPreview.ItemsSource=imagelist;

请看这里:哦,我记得这一点,我必须缓存图像,以使它们不被程序的某个部分占用,知道如何从缓存中删除特定图像吗?我解决了这个问题,我使用另一种方法将项目添加到listview,允许我直接替换它们。