【问题标题】:When change content of tab, how to dispose the old content automatically更改标签内容时,如何自动处理旧内容
【发布时间】:2014-12-25 22:57:52
【问题描述】:

例子:

view = new viewOld();
view.Datacontext = new viewModelOld();
tabItem.Content = viewOld;

现在我想在更改选项卡的新内容时处理旧内容:

tabItem.Content = viewNew;

如何自动处理 viewModelOld

【问题讨论】:

    标签: wpf silverlight tabcontrol tabitem


    【解决方案1】:

    TabItem 不会保存对旧视图的引用,如果您没有保存对它的任何其他引用,则框架的 GarbageCollector 将从内存中删除您的旧视图。

    如果您的视图实现了IDisposable,那么您必须显式调用其Dispose 方法,请参阅Dispose。

    【讨论】:

    • 感谢您的知识!!!我正在使用进程监视器来测试内存,当我从重内容更改为轻内容时,内存仍然会增加!!!
    • 正如 Martin 所说的“如果您没有对它的任何其他引用”,请仔细检查您的旧 VM 是否没有被其他地方引用。此外,GC 不会在您更改该 VM 后立即发生,因此不要指望仅仅因为您切换 VM 就会立即看到内存减少。不过,您可以根据需要强制执行即时 GC。
    • @Thinh:可能还会增加,GarbageCollector 按自己的计划运行。一旦您发布了对它的所有引用(并在 IDisposable 上调用 Dispose),您的工作就完成了。
    • 谢谢马丁!我明白了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2011-01-16
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多