这个问题在这里已有答案:
我用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);
}
但我认为这不是一个好方法。你可以指导我吗?
首先使用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;