更新列表框而不丢失所选项目,WPF

2024-04-10

列表框每秒更新一次,在工作期间,我需要选择其中的一些项目并执行命令,这是不可能的,因为列表框已更新并丢失了其选定的项目。

ObservableCollection 是我列表中的 ViewModel。

我心里有一些选择,也许还有更好的解决方案:

  1. 检测要传播的列表中的新项目并将新项目添加到 ObservableCollection,而无需重新初始化 ObservableCollection

  2. 检测旧项目中的更改并在必要时更新其字段。

这有点麻烦,虽然不难,但是还有其他选择吗?

更新,我有的解决方案

我选择了 3 维部分:在更新开始之前,我保存已排序集合的选定索引并加载新集合并与旧集合进行比较。我知道,这效率不高,但对于当前的应用程序来说,这非常适合:集合永远不会超过数百个,通常不会超过 100 个。集合的每个元素都支持急切加载和延迟加载。如果有更改的项目,它们会从服务器加载其内容,而其他项目则保持不变。然后我更新可观察集合,更新服务器中更改的项目并在视图模型中设置选定的索引。手动选择项目解决了更新后失去焦点的问题。


在更新列表之前保存所选项目的密钥。 在新版本的列表中找到它,然后重新选择它。 不要依赖原始参考,并允许其他人将其从新列表中删除以供选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新列表框而不丢失所选项目,WPF 的相关文章

随机推荐

  • 检测字符是简体字还是繁体字

    我找到了这个question https stackoverflow com questions 2727804 how to determine if a character is a chinese character这使我能够检查字符
  • KarmaJS、Jasmine、RequireJS 等:如何使用 Require 测试模块

    使用 RequireJS 运行 Karma Jasmine 测试 起步 帮助 求救 目前 我有一个练习项目 旨在熟悉 KarmaJS 以及整个单元测试 广泛的问题是 我对 Karma 在幕后所做的事情确实没有透明的了解 而且我似乎无法在相关
  • 使用 boost::karma 格式化纬度/经度字符串

    我需要格式化double值转换为具有非常特定格式的坐标字符串 DDMMSS SSX where DD 是完整的学位 MM 是完整的分钟 SS SS 是带有小数的秒 X 是 N 或 S 具体取决于半球 这些字段需要用零填充 不能接受空格 格式
  • Service Worker 注册时出错

    我正在尝试注册服务工作者 但出现以下错误 注册ServiceWorker失败 当前的URL协议 不支持原点 null 我在 localhost 下使用 Node js 我有我的索引 html and service worker js在同一
  • 使用 es2017 的 async wait 重构 Promise 和 Promise.all

    我有一个照片上传处理程序的工作版本 但我想看看它如何与异步等待一起工作 在下面的内容之前是我使用 Promise 的工作代码 onChangePhotos e gt e preventDefault let files e target f
  • 如果单元测试失败则 make 失败

    我有一个用于编译静态库的 makefile 该生成文件具有编译与静态库关联的单元测试套件的规则 编译测试套件后 将调用 python 脚本来运行测试并记录结果 它看起来像这样 unit MAKE C cXbase unit python T
  • 如何在ssl连接期间加载客户端证书以进行相互身份验证?

    我无法在 ssl 连接上加载客户端证书 以便服务器可以对其进行身份验证 可能是什么问题 LoadCertificates 函数可以正常加载服务器证书 我能够在客户端获取服务器证书 但无法在服务器端获取客户端证书 我还想验证证书是否由正确的
  • Javascript?:如何动态添加文本输入/表单字段到 HTML 表单?

    我正在构建一个网络表单 其中有一个输入列表 到目前为止 一切都很好 但是 如何添加链接 按钮以将另外 5 个字段添加到列表中 例如
  • Xcode 4 卡在“扫描工作副本”上

    我刚刚归档并提交了一个项目 当我返回打开该项目时 它挂在 扫描工作副本 上 我可以导航 但无法查看项目文件 这实际上只是一个链接问题 选择您的项目并确保您已打开 身份和类型 它位于右侧编辑器栏中 使用 查看 按钮切换打开和关闭 您可以在那里
  • FFmpeg 支持哪些编解码器和格式? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我需要 FFmpeg 支持的编解码器和格式列表 我在哪里可以找到它 正确的编解码器 ffmpeg codecs Formats ffm
  • findOrCreate 与 include -sequelize.js

    我想创建一个比赛 如果不存在 以及Match 如果不存在 与锦标赛关联 let match created await Match findOrCreate where scoreHome 97 Tournament name USA So
  • PhpStorm 资源根的相对路径

    我使用 PhpStorm 9 并且我的项目结构与此类似 src elements element alfa element alfa html element alfa scss templates application html ind
  • 无法删除 nav_host_fragment 顶部的空间

    我刚刚实现了底部导航 AS 的默认设置 文件 gt 新建 gt 活动 gt 底部导航活动 除了顶部的空格之外 一切都很好nav host fragment 由于它是在 ConstraintLayout 中生成的 我尝试清理约束并设置顶部约束
  • 为什么 file_get_contents 不起作用?

    为什么file get contents not为我工作 在下面的测试文件代码中 似乎我搜索过的每个示例都列出了此函数 但它从未被执行 这是网络托管服务的问题吗 有人可以在他们的服务器上测试这段代码只是为了看看地理编码数组输出是否真的作为字
  • 无法通过 ngrok ssh 进入远程 Linux

    远程Linux计算机位于内部网络中 没有公共IP地址 所以我安装了ngrok ngrok tcp 22 ngrok by inconshreveable Ctrl C 退出 在线隧道状态版本2 0 19 2 0 17网页界面http 127
  • 如何在 django 评论中包含用户个人资料的图像/徽标

    我已将其发布在 django users 上 但尚未收到回复 所以我有自己的用户配置文件对象 用户的子类 其中一个字段是 imagefield 它 显然 用于用户上传他们的徽标 缩略图 问题是我如何才能将其包含在他们的评论中 有任何想法吗
  • phpMyAdmin 4.0.5 导出错误错误 - 有人知道它是否正在得到解决吗?

    phpMyAdmin 宣布 在 2013 年 9 月 1 日的几天内 他们将关闭其他资源 例如邮件列表和论坛 并推迟我们使用 StackOverflow StackExchange 我为小型 cPanel 托管服务提供一般支持 我的部分职责
  • Entity Framework Core - 未找到设计时服务

    我有一个非常基本的迁移文件 我正在执行dotnet ef database update verbose在包管理器控制台窗口中 SQL Server 中没有生成任何内容 包管理器控制台窗口中的最后几行输出如下所示 Finding desig
  • Nexus 5 上启动器图标的实际大小是多少?

    As the doc http developer android com design style iconography html launcher提到的 启动器图标是48 48dp 所以我认为我的 Nexus 5 上的启动器图标应该是
  • 更新列表框而不丢失所选项目,WPF

    列表框每秒更新一次 在工作期间 我需要选择其中的一些项目并执行命令 这是不可能的 因为列表框已更新并丢失了其选定的项目 ObservableCollection 是我列表中的 ViewModel 我心里有一些选择 也许还有更好的解决方案 检