【发布时间】:2010-09-17 01:58:07
【问题描述】:
在 WPF 中使用画笔、模板和样式等资源时,可以将它们指定为 StaticResources
<Rectangle Fill="{StaticResource MyBrush}" />
或作为动态资源
<ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" />
大多数时候(总是?),只有一个有效,另一个会在运行时抛出异常。但我想知道为什么:
- 主要区别是什么。比如内存或性能影响
- WPF 中是否存在“画笔始终为静态”和“模板始终为动态”等规则?
我假设静态与动态之间的选择并不像看起来那么随意......但我看不到这种模式。
【问题讨论】:
-
需要注意的是,Windows 8 应用程序开发人员没有 DyanmicResource 作为选项,只有 StaticResource。
-
@Jerry Nixon 感谢上帝,我已经记不清有多少次因为我使用的是 DynamicResource 而不是 StaticResource 而无法工作,反之亦然。从程序员的角度来看,这是不必要的复杂性。类比是变量定义,我是否必须明确指定它是位于堆上还是栈上?如果我弄错了,它会引发灾难性的运行时错误?
-
有关 StaticResource 和 DynamicResource 的更详尽说明,以及何时使用它们,请参阅msdn.microsoft.com/en-us/library/ms750613%28v=vs.100%29.aspx。