Замена элемента в ObservableCollection не обновляет WPF ItemsControl - PullRequest
2 голосов
/ 13 февраля 2011

У меня (я думал) довольно обычное приложение WPF.

Я

<ListBox ItemsSource="{Binding MyList}" ...

MyList - это

ObservableCollection<MyItem>

MyItem не реализует INotifiyPropertyChanged

когда я Add отправляет элементы в OC, пользовательский интерфейс обновляется без проблем. Когда я заменяю предметы, через

MyList[index] = newItem;

интерфейс обновляется только изредка. Иногда помогает выбор другого элемента управления в окне, но часто нет. Обновления достигают примерно 5 в секунду. Если это имеет значение, то это WPF 4 на компьютере с Win7 x64.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2011

Полагаю, вам лучше использовать Remove() и Insert(index, item) вместо присвоения индексируемому элементу.Удаление и вставка элементов должны вызывать делегат CollectionChanged.

2 голосов
/ 13 февраля 2011

Для меня это абсолютно бессмысленно, замены регистрируются ObservableCollections, и у меня до сих пор с этим не было проблем ...

Я подозреваю, что ошибка находится где-то еще.

например, случайнозамена элемента на себя, уничтожение привязки к данным и тому подобное ...

Если вы когда-нибудь столкнетесь с поведением, которое происходит иногда , ошибка, скорее всего, будетв вашей собственной логике кода, потому что иногда указывает на неопределенное поведение, с которым вы обычно не должны сталкиваться ни в каких приличных рамках.

...