我有4种不同的视图,具有不同类型的操作。我使用DateTemplate创建视图用DataTemplate创建的UserControl处理问题
<DateTemplate DateType={X:Type HomeViewModel}" >
<HomeView>
</DateTemplate>
<DateTemplate DateType={X:Type DeviceDateViewModel}" >
<DeviceDateView>
</DateTemplate>
,我有ContentControl中,所有的ViewModels绑定到Content属性,说“活动视图”
我已创建的所有视图模型,并保存在字典。当我想改变视图时,我只是将ActiveView分配给我想要显示的新视图。
void ActiveteView(ViewType viewType)
{
ActiveView = GetViewFromDictionary(viewType);
}
我们的一个控件不支持DataBinding,所以我在View的后面代码中创建了一些新的控件。
我的问题是:当我更改ActiveView时,它会在ContentControl中创建新的视图和显示。因此,我遇到了问题。我的旧视图仍在记忆中。如何摧毁他们?
在这个时候,我们不能改变设计。我们正处在与之共存的状态中。
我我没有配置虚拟机,当应用程序还活着时我不需要这样做。我的问题是,当我更改ActiveView时,WPF DateTemplate(我相信IOC会这样做)创建新视图并尝试销毁旧视图。这里我们参考了3'r零件控制。所以这个观点不会被破坏。 – Mohanavel
它是如何去试图摧毁旧的?它是否调用IDisposable.Dispose或〜终结器?也许把代码放在其中任何一个去取消参考部分控制都可以。这似乎不是一个很好的理由来使用〜终结器,但正如你所说,你不能改变设计。 –
好吧,我没有IDispose。即使添加IDisposable接口,我也不会获得任何好处。我没有任何查看权限。实际上,我无法访问View对象。 〜终结者也没有打。 – Mohanavel