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));

因此每次点击按钮 进行页面切换时,就等于新建了一个页面。因此导致内存暴涨

posted @   小林野夫  阅读(752)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
原文链接:https://www.cnblogs.com/cdaniu/
点击右上角即可分享
微信分享提示