2013-04-17 61 views
4

我們使用ResourceDictionaries存儲我們的應用程序的佈局信息。惰性初始化非常好,因爲只有在創建元素時才能獲取元素的所需佈局。問題是每個元素都從ResourceDictionary獲取共享佈局的每個元素的實例(或者如果它超出了範圍並且稍後需要,那麼它們是相同的)。WPF ResourceDictionary是否可以爲每個請求返回一個新實例

我們可以將模板存儲在字典中,然後共享它們並不重要,但如果不是用於此緩存行爲,我們會有相當不錯的系統。

有沒有方法可以改變字典的這種行爲,或者我將不得不編寫自己的類來根據需要從XAML創建項目?

+0

「ResourceDictionary」是否包含另一個「ResourceDictionary」中的項目? 'x:Shared =「false」'在這種情況下不起作用 –

+0

@JRoughan它的*緩存行爲有什麼問題*?我不明白,你爲什麼要關閉它?你能說明一下你的問題嗎?這只是爲了我的好奇心。謝謝。 – DHN

+0

我想關閉它,因爲它沒有保存模板,它保留了應該基於提供的密鑰實例化的實際框架元素 – JRoughan

回答

4

嘗試應用x:Shared =「false」屬性。然後每個資源應該分開復制。

+0

我應該提到我試過了,對不起。從我觀察到的沒有影響 – JRoughan

+0

@JRoughan它應該工作,因爲它被記錄[這裏](http://msdn.microsoft.com/en-us/library/aa970778.aspx) – Jehof

+0

@Jehof確實它_should_但我wouldn'在這裏,如果它_did_ :)可能還有其他特定於我的場景,但我還沒有找到它是什麼。這裏有很多移動部件來隔離最簡單的情況。如果我可以在示例中重現該行爲,將更新該問題 – JRoughan

相關問題