0

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

这是问题所在:

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


                    }
                });
        }

任何的想法?

4

1 回答 1

4

ObservableCollection仅当集合的内容发生更改时才会通知 UI:即ListedNote添加或删除 a 时。ListedNote如果集合中已经存在的属性发生变化,它不会通知 UI 。

您的ListedNote类需要实现INotifyPropertyChanged接口,以便 UI 知道某个属性已在单个注释上发生更改。

于 2012-08-06T09:34:27.017 回答