【问题标题】:Delete Popup in Silverlight for Windows Phone 8删除 Silverlight for Windows Phone 8 中的弹出窗口
【发布时间】:2015-02-25 13:47:15
【问题描述】:

我测试了我的应用程序的内存使用情况,当我加载弹出窗口时,突然发现内存出现峰值,而且在我尝试关闭它后它似乎并没有下降。

我从第一页 cs 文件(我导航离开的那个)添加弹出窗口:

Popup popup;

if (!SecondScreen.SecondScreenLoaded)
{
    Popup PopupTest = new Popup();
    PopupTest.IsOpen = true;
    LayoutRoot.Children.Add(PopupTest);
}

当第二页完成后,我希望删除弹出窗口,从而释放内存 因此我不确定如何在 c# 中正确删除弹出窗口,谁能告诉我这个?

【问题讨论】:

  • 你能添加一些示例代码吗?
  • 我认为他只是指一个常规的弹出控件,您可以使用 treviewhelper 提取它。但至于他,我看不到如何确认删除弹出窗口。 Popup.isopen 并没有像我认为的那样删除它。只是一些澄清,因为我也希望有一个解决方案:)
  • 是的,我的意思是这样
  • 如果离开页面,内存会下降吗?我认为弹出窗口已实例化,但在您离开页面之前不会超出范围。

标签: c# silverlight windows-phone-8 popup windows-phone


【解决方案1】:

我从来没有在 windows phone 上挖掘带有原生弹出窗口的应用程序,也许你可以使用 coding4fun 工具包来实现类似的事情。它包含弹出示例,您可以查看该控件。

http://coding4fun.codeplex.com/

【讨论】:

  • 你在哪里找到示例?
  • 嗨@JonasN89:您可以在here 下载它并打开/source 文件夹,它将包含您可以使用Visual Studio 加载它的.sln 文件。如果您觉得有帮助,请标记我的答案,谢谢:)
  • 我看到您发送的链接中有一些项目,但我似乎找不到他们使用弹出窗口的项目。
  • @JonasN89 打开链接并下载整个源代码,然后导航到/source/Coding4Fun.Toolkit.Test.WindowsPhone8/Samples/Prompts
【解决方案2】:

好的,问题是每次 SeconeScreenLoaded 为 true 时,您都会创建一个新的 Popup 对象。

Popup PopupTest = new Popup();

为了关闭弹出窗口,我猜你正在使用:

PopupTest.IsOpen = false;

通过这样做,您实际上只更改了 IsOpen 属性,但不会将其从内存中删除。我们假设 GC 会处理它,但 GC 只有在不使用它的引用时才会考虑它。所以在关闭弹窗的同时,给对象赋值为null,让GC稍后收集它。

 if(PopupTest!=null && PopupTest.IsOpen = true)
 {
     PopupTest.IsOpen = false;
     PopupTest = null;
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多