这是场景:
1)打开Visual Studio 2008,新建项目...
2)选择WPF自定义控件库作为项目类型
3) 打开位于 Themes 文件夹中的 Generic.xaml 资源字典
4)添加一个简单的画笔,例如:
< SolidColorBrush x:Key="BackgroundBrush"Color="Yellow"/>
5) 将嵌套 Borer 控件的 Background 属性从
背景="{模板绑定(bind)背景}"
到
背景="{DynamicResource BackgroundBrush}"
现在当你在任何项目中编译和使用这个控件时,背景不会是黄色的。但是,如果您将背景属性更改为 StaticResource
背景="{StaticResource BackgroundBrush}"
......它会工作。为什么是这样?为什么 StaticResource 有效,DynamicResource 无效???
最佳答案
如果您在 Xaml 文件中对画笔进行硬编码,那对我来说听起来很静态。
DynamicResource 的 MSDN 条目说这是为了当您希望使用在运行时解析资源的名称(即名称存储在另一个资源中),您在编译时知道名称。
听起来很像 C 中的指针与指向指针的指针。
关于wpf - DynamicResource 不工作,但 StaticResource 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1869646/