繁体   English   中英

打开和关闭绑定

[英]Turn the binding on and off

假设您有一个带有ObservableCollection(OC)的ViewModel,该模型绑定到View内的某些控件。

有没有一种方法可以在不删除绑定的情况下临时禁用OC和控件之间的绑定? 我希望能够在不通知View的情况下修改我的ObservableCollection。

这样做的原因很简单:我在OC上做了很多Add()和Insert()操作。 在大多数情况下,一切正常,但有时我经常调用Add(),以至于视图中的更新看起来不愉快。 在这些时间段内,我想先“关闭”装订,然后再“打开”装订。

是否有人处于类似情况/有人给小费吗?

只需包装ObservableCollection (甚至继承自ObservableCollection ),然后通过添加自定义逻辑来覆盖mthod OnCollectionChanged ,这将考虑您的要求推迟事件触发,我相信这是实现自己的可观观察性集合的相当标准的方法。

当集合中有很多项目时,我更喜欢使用List <>作为CollectionViewSource的源。 然后,视图绑定到CollectionViewSource.View。 CollectionViewSource具有DeferRefresh()和Refresh()方法,使您无需更改通知即可完成更改源列表的所有后台工作。 CollectionViewSource的性能比ObservableCollection更好,并且它支持过滤。 如果您要不断添加和删除项目,则可能需要过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM