5

这是场景:

1)打开Visual Studio 2008,新建项目...

2)选择WPF自定义控件库作为项目类型

3) 打开位于 Themes 文件夹中的 Generic.xaml 资源字典

4)添加一个简单的画笔,例如:

< SolidColorBrush x:Key="BackgroundBrush" Color="Yellow" />

5) 将嵌套 Borer 控件的 Background 属性从

背景="{模板绑定背景}"

背景="{DynamicResource BackgroundBrush}"

现在当你在任何项目中编译和使用这个控件时,背景不会是黄色的。但是,如果您将背景属性更改为 StaticResource

背景="{StaticResource BackgroundBrush}"

......它会工作。为什么是这样?为什么 StaticResource 有效,DynamicResource 无效???

4

1 回答 1

1

如果您在 Xaml 文件中对画笔进行硬编码,那对我来说听起来很静态。

DynamicResource的 MSDN 条目说这是为了当您希望使用在运行时解析资源的名称(即名称存储在另一个资源中),您在编译时知道名称。

听起来很像 C 中的指针与指向指针的指针。

于 2009-12-08T20:46:38.087 回答