谁说在运行时改变资源就要使用DynamicResource?
本文讨论StaticResource和DynamicResource众多区别中的一项——关于修改资源的问题。关于向前引用什么的问题,请参考Google。
点击三个按钮查看效果。
可以发现
点击按钮1,1、2两个TextBlock背景颜色都改变。
点击按钮2,只有第二个TextBlock背景颜色改变。
点击按钮3,第三个TextBlock获得背景颜色。
所以,不论用StaticResource还是DynamicResource,修改资源的属性时,修改都会反映在使用此资源的元素上。如果修改资源本身,修改只会反映在用DynamicResource引用此资源的元素上。
另外需要注意的是,根据调试输出,这些资源都没有冻结!
可以这么冻结它:
xmlns:PresentationOptions="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
PresentationOptions:Freeze="true"