このように、BitmapImagesをListBoxに追加する作業を、私の仕事全体のほとんどで行っています。ここに私のコードは次のとおりです。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));
}
}
}
あなたは私がListOfImagesと呼ばれるBitmapImagesのリストにファイル拡張子「.JPG」を持っているフォルダ「イメージ」内のすべての画像を追加している見ることができるように。そして、その後、私はそうのようにXAMLでのListBoxにバインド:
<ListBox ItemsSource="{Binding ListOfImages}"/>
問題があるが、私はそれを実行したとき、私はこのエラーを取得することです:「別のスレッドが所有しているので、呼び出し元のスレッドがこのオブジェクトにアクセスすることはできませんそれ"。今私はこのStackOverflowスレッドを見てから何をしなければならないかを知っています:The calling thread cannot access this object because a different thread owns it.How do i edit the image?しかし、私はそれに従うことができませんでした。誰かが私にこのDispatcher.Invokeの使い方を教えてもらえますか?
EDIT:今は、画像のURIをリストに表示させようとしています。