관찰 가능한 사진 개체 컬렉션을 표시하는 WPF 응용 프로그램의 목록 상자가 있습니다. 컬렉션에 사진을 추가하면 UI에 새로운 이미지가 바로 표시됩니다. CollectionChanged 이벤트를 사용하여 처리 할 수 있음을 이해합니다. 핸들 컬렉션 변경 이벤트를 사용하는 방법에 대한 예제를 둘러 보았지만 효과가있는 것은 찾지 못했습니다. 누구든지 좋은 예를 알고 있습니까?Observable 컬렉션에서 컬렉션 변경 이벤트의 예
또 다른 것은 이미지가 내 컴퓨터의 디렉토리에서 나오고 파일 시스템 감시자가 새 사진을 추가하거나 삭제할 수있는 디렉토리를보고 있다는 것입니다. 현재 파일 시스템 이벤트 처리기를 사용하여 사진을 추가하거나 삭제할 때 컬렉션을 업데이트하지만 문제는 디렉토리에 새 사진을 추가 할 때 스레드가 아닌 컬렉션에서 컬렉션을 수정할 수 없다는 예외가 발생합니다. 주 스레드. 누구든지이 문제를 해결하는 방법을 알고 있습니까?
public class PhotoList : ObservableCollection<Photo>
{
DirectoryInfo _directory;
private FileSystemWatcher _watcher;
public PhotoList()
{
_watcher = new FileSystemWatcher();
MessageBox.Show("Watching..");
_watcher.Filter = "*.jpg";
_watcher.Path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
_watcher.EnableRaisingEvents = true;
_watcher.Created += new FileSystemEventHandler(FileSystemWatcher_Created);
_directory = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
}
public void Update()
{
foreach(FileInfo f in _directory.GetFiles("*.jpg"))
{
Add(new Photo(f.FullName));
}
}
public string Path
{
set
{
_directory = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
Update();
}
get
{
return _directory.FullName;
}
}
public void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
Add(new Photo(e.FullPath));
}
}
대단히 감사합니다! – MBU