因此,我几乎整个工作日都在努力将 BitmapImages 添加到 ListBox 中。这是我的代码:
public class SomeClassViewModel : ViewModelBase
{
public SomeClassViewModel(EnhanceImage image)
{
LoadImages();
}
public List<BitmapImage> ListOfImages { get; set; }
public void LoadImages()
{
ListOfImages = new List<BitmapImage>();
DirectoryInfo imageDir = new DirectoryInfo(@"..\..\Images");
foreach (FileInfo imageFile in imageDir.GetFiles("*.jpg"))
{
Uri uri = new Uri(imageFile.FullName);
ListOfImages.Add(new BitmapImage(uri));
}
}
}
如您所见,我将“Images”文件夹中具有文件扩展名“.jpg”的所有图像添加到名为 ListOfImages 的 BitmapImages 列表中。然后,我将它绑定到 XAML 中的 ListBox,如下所示:
<ListBox ItemsSource="{Binding ListOfImages}"/>
问题是当我运行它时,我得到这个错误:“调用线程无法访问这个对象,因为另一个线程拥有它”。现在我通过查看这个 StackOverflow 线程知道我必须做什么:调用线程无法访问这个对象,因为不同的线程拥有它。如何编辑图像?,但我就是跟不上。有人可以告诉我如何使用这个 Dispatcher.Invoke 吗?
编辑:现在我只是想让图像的 URI 显示在列表中。