0
我已經對這個問題做了一些研究,但是我找不到解決方法。ListBox不刷新ObservableCollection
Here's問題:
我有我的自定義類ListedNote的一個ObservableCollection。首先ListBox顯示數據,但有些數據是異步加載的,不會被更新。 (例如,用戶圖像)
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ListBox ItemsSource="{Binding Notes, UpdateSourceTrigger=PropertyChanged}" x:Name="Content" ItemTemplate="{StaticResource ListBoxCardFBLikeTemplate}"
HorizontalContentAlignment="Stretch">
</ListBox>
</ScrollViewer>
視圖模型
....
private ObservableCollection<ListedNote> notes;
public ObservableCollection<ListedNote> Notes
{
get { return notes; }
set { notes = value; RaisePropertyChanged(() => this.Notes); }
}
private void LoadAttachmentsAsync(ListedNote note)
{
Async.Call(() => this.ServiceConnector.RetrieveAnnouncementAttachment(note.IdValue),
mm =>
{
if (mm != null)
{
if (mm.MultimediaType.IsPicture)
note.AttachedPicture = mm;
else
note.AttachedFile = mm;
note.AttachmentData = new List<byte>(mm.Data);
var index = this.Notes.IndexOf(note);
if (index >= 0)
this.Notes[index] = note;
}
});
}
任何想法?
ObservableCollection是否不會像我的viewModel中那樣通知重載? – Cr3at0rX 2012-08-06 09:37:50
ObservableCollection'只會在集合中的內容發生變化時纔會通知 - 即,當您添加或刪除某個項目時。更改集合中項目的屬性*不會更改集合中的項目,因此「ObservableCollection」不會幫助您。當* its *屬性更改時,您需要使用「ListedNote」類來通知UI。 – 2012-08-06 09:40:23