列表框每秒更新一次,在工作期间,我需要选择其中的一些项目并执行命令,这是不可能的,因为列表框已更新并丢失了其选定的项目。
ObservableCollection 是我列表中的 ViewModel。
我心里有一些选择,也许还有更好的解决方案:
检测要传播的列表中的新项目并将新项目添加到 ObservableCollection,而无需重新初始化 ObservableCollection
检测旧项目中的更改并在必要时更新其字段。
这有点麻烦,虽然不难,但是还有其他选择吗?
更新,我有的解决方案
我选择了 3 维部分:在更新开始之前,我保存已排序集合的选定索引并加载新集合并与旧集合进行比较。我知道,这效率不高,但对于当前的应用程序来说,这非常适合:集合永远不会超过数百个,通常不会超过 100 个。集合的每个元素都支持急切加载和延迟加载。如果有更改的项目,它们会从服务器加载其内容,而其他项目则保持不变。然后我更新可观察集合,更新服务器中更改的项目并在视图模型中设置选定的索引。手动选择项目解决了更新后失去焦点的问题。
在更新列表之前保存所选项目的密钥。
在新版本的列表中找到它,然后重新选择它。
不要依赖原始参考,并允许其他人将其从新列表中删除以供选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)