ListBox不刷新ObservableCollection

时间:2012-08-06 09:30:55

标签: c# wpf xaml data-binding listbox

我已经对这个问题做了一些研究,但我找不到解决方法。

问题在于:

我有一个我的自定义类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;


                    }
                });
        }

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

ObservableCollection仅在收集内容发生变化时通知用户界面:即添加或删除ListedNote时。如果集合中已有ListedNote的属性发生更改,它将不会通知UI。

您的ListedNote课程需要实现INotifyPropertyChanged界面,以便用户界面知道某个属性在个人注释中发生了变化。