C# 在内存中保持用户控制
我的应用程序是一个带有主网格的窗口,其中将包含我的页面(用户控件) 我希望能够在显示的以前用户控件的历史记录中导航 这就是为什么我将显示的最后30个用户控件存储在内存中。显示新UC时,我的代码如下所示:C# 在内存中保持用户控制,c#,wpf,C#,Wpf,我的应用程序是一个带有主网格的窗口,其中将包含我的页面(用户控件) 我希望能够在显示的以前用户控件的历史记录中导航 这就是为什么我将显示的最后30个用户控件存储在内存中。显示新UC时,我的代码如下所示: MyHistoryPage page = new MyHistoryPage(); page.AssociatedUC = (UserControl)this.mainGrid.Children[0]; this.mainGrid.Children.Clear(); this.mainGrid.
MyHistoryPage page = new MyHistoryPage();
page.AssociatedUC = (UserControl)this.mainGrid.Children[0];
this.mainGrid.Children.Clear();
this.mainGrid.Children.Add(new MyCustomUC());
我所有的“MyHistoryPage”都存储在一个静态列表中
这非常有效,我能够在相同的状态下获得以前的Ucs(相同的排序、选中相同的复选框、相同的滚动、选择相同的选项卡等),并为用户提供良好的体验
然而,它似乎会导致内存泄漏,或者至少会减慢我的应用程序的速度。鼠标悬停的效果越来越慢
点记忆显然告诉我所用的记忆已经变大了
在内存中存储大量的UI组件以便以后使用,这样好吗?管理历史记录并使我的UCs处于相同状态的更好解决方案是什么?尝试将应用程序迁移到MVVM模式如何 ViewModels不会在每次访问以前的userControl时重新创建,因此状态可能相同,并且不会出现内存问题
如果您不习惯使用此模式,则可以使用许多可用的工具包开始,如MVVM Light、Caliburn.Micro、也许您可以对控件进行序列化和反序列化。