ObservableCollection 中的项目替换不会更新 WPF ItemsControl

发布于 2024-10-17 03:10:29 字数 460 浏览 3 评论 0原文

我有(我认为)一个相当传统的 WPF 应用程序。

我的

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

MyList 是一个

ObservableCollection<MyItem>

MyItem 未实现 INotifiyPropertyChanged

当我向 OC 添加项目时, ,UI 更新没有问题。 当我替换项目时,通过

MyList[index] = newItem;

用户界面仅偶尔更新。 有时在窗口上选择另一个控件会有所帮助,但通常没有帮助。更新速度约为每秒 5 次。如果重要的话,这是 Win7 x64 计算机上的 WPF 4。

I have (I thought) a fairly conventional WPF app.

I've

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

MyList is an

ObservableCollection<MyItem>

MyItem does not implement INotifiyPropertyChanged

when I Add items to the OC, the UI updates with out issue.
When I replace items, via

MyList[index] = newItem;

the UI only updates occasionally.
Sometimes selecting another control on the window helps, but often not.Updates are arriving at about 5 per second. If it matters, this is WPF 4 on a Win7 x64 machine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

满意归宿 2024-10-24 03:10:29

我猜你最好使用 Remove()Insert(index, item) 而不是分配给索引项。删除和插入项目必须引发 CollectionChanged 委托。

My guess it that you better use Remove() and Insert(index, item) instead of assigning to an indexed item. Removing and inserting items must raise the CollectionChanged delegate.

抚你发端 2024-10-24 03:10:29

这对我来说绝对没有意义,替换是由 ObservableCollections 注册的,到目前为止我没有遇到任何问题......

我怀疑错误出在其他地方。

例如,不小心用自身替换了该项目,破坏了与数据的绑定,诸如此类的事情...

顺便说一句,如果您遇到有时发生的行为,则错误很可能出在您自己的身上代码逻辑,因为有时指向不确定性行为,您通常不应该在任何像样的框架中遇到这种行为。

This makes absolutely no sense to me, replacements are registered by ObservableCollections and i had no problems with it so far...

I suspect the error lies somwhere else.

e.g. accidentally replacing the item with itself, destroying the binding to the data, things like that...

On a sidenote, if you ever encounter behaviour that occurs sometimes the error is quite likely to be in your own code logic because sometimes points toward indeterministic behaviour which you normally should not encounter in any decent framework.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文