c# - 保存 UI 控件/页面状态
问题描述
我们有一个像 Telegram Desktop 这样的聊天风格的应用程序:在窗口的右侧是通讯员列表,在左侧 - 与所选通讯员的对话消息的按日期分组列表。现在我们使用 Dictionary 来保存每个对话的当前状态。通过选择通讯员,我们可以控制显示对话框,或者创建新的,并将其绑定到 ContentPresenter:
<ContentPresenter Content="{x:Bind ViewModel.DetailsDialog, Mode=OneWay}"/>
在字典中添加三个或更多控件后,UI 开始冻结(禁用滚动等),内存和处理器没有过载(大约 6% 的处理器和 50 mb 的 RAM)。
所以我的问题是我们如何通过保存控件或页面的 UI 状态来实现最佳性能?
解决方案
与其保存资源昂贵的 UI 元素,不如将状态存储在包含所有数据的视图模型类中,然后使用数据绑定将状态数据绑定到“新”的新 UI 实例。
推荐阅读
- javascript - 如何在 promise.all 中异步等待
- nextcloud - nexcloud 错误:上传一些内容或与您的设备同步
- c# - hololens 2 和计算机上的统一应用程序之间的 TCP 连接只能工作一次
- ssis - 获取上一行的数据并计算 SSIS 脚本组件中的增长
- django - Django - 使用 `@api_view` 将 Django Rest Swagger 模式添加到 DRF 标记函数
- ios - 当我启动系统拍照时,ios画中画变暗
- python - 在 Google Colab 上使用 spacy 训练 NER
- python - 如何使用输入不同的文件和输出不同的文件运行相同的代码?与 SAS 宏相同
- python - 如何根据条件拆分一些减号运算符?
- node.js - 使用 res.header express node js 的数组的正确方法是什么