在foreach循环中更新itemsource wpf [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我用itemssource以这种方式绑定信息

public class Items
{
    public BitmapImage Content {get; set;}
}

ObservableCollection<Items> data = new ObservableCollection<Items>();

void load()
{   
    foreach(item in myList)
    {   
        data.Add(new Items{ Content = new BitmapImage(new Uri(item, UriKind.Abslote)) });
        cover.ItemSource = data;
    }
}

myList包括数千个项目并计算和显示这些项目需要一些时间当然,我试图在Dispatcher的帮助下立即显示更改

foreach (var item in myList)
{
    Dispatcher.Invoke(() =>
    {
        data.Add(new Items{ Content = new BitmapImage(new Uri(item, UriKind.Abslote)) });
        cover.ItemSource = data;
    }, DispatcherPriority.Background);
}

但我认为这不是一个好方法。你可以指导我吗?

c# wpf binding observablecollection
1个回答
0
投票

首先使用Dispatcher无助于立即显示更改。你可以阅读更多有关here的信息

在您的情况下,您不需要更新ItemsSource循环中的foreach。因为它是ObservableCollection,所以应该在UI中自动更新对集合的更改。

foreach (var item in myList)
{
    data.Add(new Items{ Content = new BitmapImage(new Uri(item, UriKind.Abslote)) });
}

cover.ItemSource = data;
© www.soinside.com 2019 - 2024. All rights reserved.