WPF 使用frame加载page内存暴涨问题 【坑】
发现问题
最近做的WPF的项目,项目框架使用的是window窗口中使用frame嵌入page,实现页面的切换,属于前辈自己写的简单框架小项目用起来也不错,不过程序后期测试发现页面内容比较多的时候(后来发现可能是页面使用了后台生成页面内容造成的),频繁切换内存呈指数增长👆,程序打开时90+M,频繁操作后接近500MBG😱。原始代码如下:
internal partial class MainWindowsViewModel : ViewModelBaseN { public MainWindowsViewModel() { } [RelayCommand] private void SelectionChanged(object[] obj) { var listbar = obj[0] as ListBox; var SelectedItem = listbar.SelectedItem as NavButton; var frame = obj[1] as Frame; frame.Navigate(SelectedItem.NavLink);//导致内存暴涨 } }
页面跳转是通过NavigationService来控制的,
在Frame和Page中都有该名为NavigationService的对象,
可以通过它的Navigate函数来实现页面跳转。
例如前面在Frame中设置Source = "Page1.xaml"实际上就是通过如下函数实现的跳转:
frame.NavigationService.Navigate(new Uri(SelectedItem.NavLink, UriKind.Relative));
因此每次点击按钮 进行页面切换时,就等于新建了一个页面。因此导致内存暴涨
编程是个人爱好
分类:
WPF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构