在我的項目中,我有一個視圖,用戶可以看到ImageCollections具有子文件夾和圖像(通過MVVM和模型設置)。我想要實現的功能之一是一個小圖像保持器,其中顯示未看到的下一幅圖像。我已經在下面的ImageCollection模型中設置了它,它工作的一個治療但是:它不會實時更新。Model中的項目不會在實時查看中更新
我的意思是,當我單擊圖像作爲查看時,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);
}
}
編輯:
試圖實現Sheridan的回答後,我有以下的(這我相信,我以某種方式balzed了),這給我什麼也沒有(或者至少在那個視圖中什麼也沒有顯示)
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; }
}
嗨,也許你的問題不在ViewModel,但在視圖。你使用TwoWay BindMode嗎? –
爲了通過視圖更新ViewModel(實時),您需要在View側指定TwoWay Binding,作爲@Piotr Czarnecki指出的。 –
什麼是'folder.Images'?請給出定義。 – Dennis