【发布时间】:2015-09-03 07:37:13
【问题描述】:
我目前正在使用 ContentPresenter 在 UserControl 中显示不同的视图,如下所示:
<ContentPresenter Content="{Binding ContentSourceVm}"/>
设置为 ContentSourceVm 的每个值都映射到 DataTemplates:
<DataTemplate DataType="{x:Type adminViewModel:AdminAccountViewModel}">
<administration:AdminAccountView/>
</DataTemplate>
<DataTemplate DataType="{x:Type adminViewModel:AdminCalibrationViewModel}">
<administration:AdminCalibrationView/>
</DataTemplate>
当我将新 VM 设置为 ContentSourceVm 时,视图已正确更改,但不幸的是,即使经过一定时间后第一个视图也没有释放。 (上一个视图的析构函数没有被调用)
管理此问题的最佳做法是什么?
我一直在寻找使用 DataTemplateSelector 的解决方案,但没有成功。 我已经看到了一些示例,它使用信使发送视图类型,以在处置此视图模型期间释放与视图模型关联的视图,但我不想在我的 VM 和我的视图之间创建强关系。
谢谢!
【问题讨论】:
标签: c# wpf memory datatemplate