gpt4 book ai didi

wpf - 操作 ObservableCollection 与替换列表

转载 作者:行者123 更新时间:2023-12-04 00:24:22 25 4
gpt4 key购买 nike

我有一个用于同步的后端字典(即同步到文件存储和网络服务)。

最重要的是,我需要为 WPF 前端生成要使用的列表/枚举。将可枚举对象挂接到字典和在更新为使用 ObservableCollection 时调用 PropertyChanged 并让它自动调用其 CollectionChanged 之间有什么区别。

同步在后台自动发生,一些元素可能会被删除,其他元素可能会被更新。我想顺利地将此信息传播到 WPF 前端和用户。 (即,如果删除了一项,则不必重新初始化整个显示)。我还想在添加和删除项目时添加动画(即淡入和淡出)- 如果我替换整个列表,这是否可能,或者它会导致每个项目再次淡入吗?

我也应该:

1) 使用可观察集合并在字典和集合之间编写一些奇特的同步逻辑?

2) 使用 linq 扩展方法将字典转换为可枚举对象,并在可枚举对象更改时简单地调用 propertychanged?

3) 在字典和列表之间同步,通过在列表更新时替换列表?

此外,这些中的任何一个如何处理仅为 UI 执行的排序和过滤操作? (即,如果我需要根据用户选择从字典中过滤出一些元素,我是否应该使用与您推荐的方法类似的方法?)

最佳答案

如果您“替换”任何IEnumerable<T>当您进行更改时,整个列表将在 UI 中刷新。

为了避免这种情况,您需要实现 INotifyCollectionChanged ,并提供一个实现它的集合。您无需替换集合,而是处理元素,这些元素又会触发相应的事件。

ObservableCollection<T>为你处理这个。就个人而言,如果您需要将其保存在字典中,但又想将其同步到列表中,您可能需要考虑制作一个自定义集合,可能基于 SortedDictionary。 .标准字典没有顺序感,这意味着无法实现 INotifyCollectionChanged。适本地。

关于wpf - 操作 ObservableCollection 与替换列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com