私のプロジェクトでは、ユーザーがサブフォルダーと画像 (MVVM とモデルを介して設定) を持つ ImageCollections を表示できるビューがあります。私が実装したかった機能の 1 つは、まだ表示されていない次の画像が表示される小さな画像ホルダーです。以下の ImageCollection モデルで設定しましたが、うまく動作しますが、リアルタイムで更新されません。
つまり、表示されている画像をクリックしても、ShowNextToWatchImage 画像はビューで自動的に更新されません (アプリを終了して再起動するか、フォルダーを再度開くと、正しい新しい画像が表示されます)。
どうすればこれを修正できますか?
モデルでは:
public Image ShowNextToWatchImage
{
get
{
var found = false;
Image nextToWatchImage = null;
foreach (var folder in Folders)
{
foreach (var image in folder.Images)
{
if (!image.ImageHasBeenViewed)
{
nextToWatchImage = image;
found = true;
break;
}
nextToWatchImage = image;
}
if (found)
{
break;
}
}
return nextToWatchImage;
}
set
{
_showNextToWatchImage = value;
NotifyOfPropertyChange(() => ShowNextToWatchImage);
}
}
編集:
シェリダンの答えを実装しようとした後、私は何も与えない(または少なくともそのアイテムのビューに何も表示しない)次のものを持っています(何らかの方法でバルジングしたと確信しています)。
public class Collection : PropertyChangedBase
{
private Image _showNextToWatchImage;
public Collection()
{
Folders = new List<Folder>();
}
public Image ShowNextToWatchImage
{
get { return _showNextToWatchImage; }
set
{
_showNextToWatchImage = value;
UpdateNextToWatchImage();
NotifyOfPropertyChange(() => ShowNextToWatchImage);
}
}
public void UpdateNextToWatchImage()
{
var found = false;
Image nextToWatchImage = null;
foreach (var folder in Folders)
{
foreach (var image in folder.Images)
{
if (!image.ImageHasBeenViewed)
{
nextToWatchImage = image;
found = true;
break;
}
nextToWatchImage = image;
}
if (found)
{
break;
}
}
ShowNextToWatchImage = nextToWatchImage;
}
public List<Folder> Folders { get; set; }
}