2013-04-17 120 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

相关问题