我已经对这个问题做了一些研究,但我找不到解决方法。
问题在于:
我有一个我的自定义类ListedNote的observableCollection。首先,ListBox显示数据,但有些数据被加载为异步并且不会更新。 (例如用户图片)
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ListBox ItemsSource="{Binding Notes, UpdateSourceTrigger=PropertyChanged}" x:Name="Content" ItemTemplate="{StaticResource ListBoxCardFBLikeTemplate}"
HorizontalContentAlignment="Stretch">
</ListBox>
</ScrollViewer>
ViewModel
....
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;
}
});
}
有什么想法吗?
答案 0 :(得分:4)
ObservableCollection
仅在收集内容发生变化时通知用户界面:即添加或删除ListedNote
时。如果集合中已有ListedNote
的属性发生更改,它将不会通知UI。
您的ListedNote
课程需要实现INotifyPropertyChanged
界面,以便用户界面知道某个属性在个人注释中发生了变化。