首页 > 解决方案 > 更改视图时填充 RAM

问题描述

我不小心在我的应用程序中发现了一个问题。我正在使用模板 MVVM。如果我开始在视图之间切换 RAM 开始填满并且不释放。

https://imgur.com/Z48GPpU之前

经过 1 分钟的简单视图更改 https://imgur.com/9r6ULJZ

我真的不知道如何找到问题所在。我会给你尽可能多的信息

我初始化 MainWindowViewModel 中的所有视图(它在应用程序启动时首先初始化)

  private static ViewModel1 VM1;
  private static ViewModel2 VM2;

public MainWindowViewModel()
{
   VM1 = VM1?? new ViewModel1();
   VM2 = VM2?? new ViewModel2();
}

要获取任何视图的实例,我使用这个

  public static ViewMidel1 GetVM1()
  {
      if (VM1 == null)
          VM1 = new ViewMidel1();
      return VM1 ;
  }

换个角度看

ViewMidel1 vm = MainWindowViewMidel.GetVM1();

所有视图都是用户控件。当视图更改时,所有视图都会触发属性。

也许我做错了什么?

视图的构造函数仅在程序启动时调用。

诊断会话 https://gofile.io/?c=pamZlT

更新 1:

我从所有 VM 中删除了所有代码,但它没有帮助。xaml 有问题。 https://imgur.com/2oS6d7h

更新 2: 每次我选择视图时,这个 xaml 都会在 RAM 中添加 ~15-20 mb。图像大小 108kb

<Ellipse Grid.Column="1" Grid.Row="2" Grid.ColumnSpan="2" Grid.RowSpan="2" Margin="5,5,5,5">
    <Ellipse.Fill>
        <ImageBrush ImageSource="/Resources/Images/image.jpg"  Stretch="UniformToFill"/>
    </Ellipse.Fill>
</Ellipse>

标签: c#wpfmvvmram

解决方案


推荐阅读