我有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