首页 > 解决方案 > 保存 UI 控件/页面状态

问题描述

我们有一个像 Telegram Desktop 这样的聊天风格的应用程序:在窗口的右侧是通讯员列表,在左侧 - 与所选通讯员的对话消息的按日期分组列表。现在我们使用 Dictionary 来保存每个对话的当前状态。通过选择通讯员,我们可以控制显示对话框,或者创建新的,并将其绑定到 ContentPresenter:

    <ContentPresenter Content="{x:Bind ViewModel.DetailsDialog, Mode=OneWay}"/>

在字典中添加三个或更多控件后,UI 开始冻结(禁用滚动等),内存和处理器没有过载(大约 6% 的处理器和 50 mb 的 RAM)。

所以我的问题是我们如何通过保存控件或页面的 UI 状态来实现最佳性能?

标签: c#xamluwpdesktop-application

解决方案


与其保存资源昂贵的 UI 元素,不如将状态存储在包含所有数据的视图模型类中,然后使用数据绑定将状态数据绑定到“新”的新 UI 实例。


推荐阅读