更新foreach循环WPF中的ItemSource

时间:2019-02-13 12:15:29

标签: c# wpf binding observablecollection

我通过这种方式将信息与itemsource绑定

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);
}

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

1 个答案:

答案 0 :(得分:0)

首先使用Dispatcher不会立即显示更改。您可以了解有关here

的更多信息

对于您来说,您不需要在ItemsSource循环内更新foreach。由于是ObservableCollection,对集合的更改应在您的用户界面中自动更新。

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

cover.ItemSource = data;