在 WPF 中使用画笔、模板和样式等资源时,可以将它们指定为 StaticResources
<Rectangle Fill="{StaticResource MyBrush}" />
或作为动态资源
<ItemsControl ItemTemplate="{DynamicResource MyItemTemplate}" />
大多数时候(总是?),只有一个有效,另一个会在运行时抛出异常。但我想知道为什么:
- 主要区别是什么。比如内存或性能影响
- WPF 中是否有“画笔始终是静态的”和“模板始终是动态的”等规则?
I assume静态与动态之间的选择并不像看起来那么随意......但我看不到其中的模式。
A 静态资源 https://msdn.microsoft.com/en-gb/library/cc189045(v=vs.95).aspx将在应用程序实际运行之前加载 XAML 期间解析并分配给该属性。它只会被分配一次,并且对资源字典的任何更改都会被忽略。
A 动态资源 https://msdn.microsoft.com/en-us/library/vstudio/ms748942(v=vs.100).aspx在加载期间将 Expression 对象分配给属性,但直到运行时要求 Expression 对象提供值时才实际查找资源。这会推迟查找资源,直到运行时需要为止。一个很好的例子是对稍后在 XAML 中定义的资源的前向引用。另一个例子是直到运行时才存在的资源。如果源资源字典发生更改,它将更新目标。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)