0

私はすでにその問題についていくつかの調査を行っていますが、回避策を見つけることができません。

ここに問題があります:

カスタムクラス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;


                    }
                });
        }

何か案が?

4

1 に答える 1

4

ObservableCollectionコレクションのコンテンツが変更されたとき、つまりListedNoteが追加または削除されたときだけ、UI に通知します。ListedNote既にコレクション内にある のプロパティが変更された場合、UI に通知しません。

プロパティが個別に変更されたことを UI が認識できるようにするには、ListedNoteクラスでインターフェイスを実装する必要があります。INotifyPropertyChanged

于 2012-08-06T09:34:27.017 に答える