DynamicResource 不工作,但 StaticResource 可以吗?
Posted
技术标签:
【中文标题】DynamicResource 不工作,但 StaticResource 可以吗?【英文标题】:DynamicResource not working, but StaticResource does? 【发布时间】:2010-12-24 14:06:42 【问题描述】:这是场景:
1) 打开 Visual Studio 2008,新建项目...
2) 选择WPF自定义控件库作为项目类型
3) 打开位于 Themes 文件夹中的 Generic.xaml 资源字典
4) 添加一个简单的画笔如:
5) 更改嵌套 Borer 控件的背景属性
Background="TemplateBinding 背景"
到
Background="DynamicResource BackgroundBrush"
现在当你在任何项目中编译和使用这个控件时,背景不会是黄色的。但是,如果您将背景属性更改为这样的静态资源
Background="StaticResource BackgroundBrush"
...它会工作的。为什么是这样?为什么 StaticResource 有效,DynamicResource 无效???
【问题讨论】:
这里有同样的问题。 Expression Blend 默认创建 DynamicResource,这是由于程序运行不正确造成的。这很奇怪!发布问题后,您有什么发现吗? 【参考方案1】:如果您在 Xaml 文件中对画笔进行硬编码,那对我来说听起来很静态。
DynamicResource 的 MSDN 条目说这是为了当您希望使用在运行时解析资源的名称(即名称存储在另一个资源中)时,您在编译时知道名称。
听起来很像 C 中的指针与指向指针的指针。
【讨论】:
我不明白你的回答。没有硬编码,这是定义资源的方式。这里没有关于指针的内容。以上是关于DynamicResource 不工作,但 StaticResource 可以吗?的主要内容,如果未能解决你的问题,请参考以下文章
2022-04-20 WPF面试题 WPF中StaticResource和DynamicResource之间有什么区别?
在 ResourceDictionary 中交换 DynamicResource
DynamicResource 和 StaticResource
StaticResource和DynamicResource