Sco*_*ott 2 user-controls controls dependency-properties silverlight-2.0 control-library
我在自定义控件上有一个依赖属性(Foreground),它继承自Control.当我加载控件时,我想查看用户是否已设置依赖项属性,或者在我为其设置值之前是否使用其默认值.这个问题有点复杂,这里是:
该控件位于用户添加到其项目中的自定义控件库中.当他们设置项目时,我可以让他们使用给定的x:key在app.xaml文件中添加一行,其中包含我在设置控件的默认值时读取的设置.但是,如果他们在代码或xaml中设置值,我不想使用此全局值设置值.以下是一些有助于想象我正在谈论的内容的案例:
用户从我的库中创建一个控件并将其放在他们的页面上.然后他们将前景设置为绿色.我希望该控件的前景值为绿色.
用户在app.xaml中添加一条特殊行,表示他们希望特定类型的所有控件都具有红色前景.我希望这种控件的前景值为红色.
用户在app.xaml中添加一条特殊行,表示他们希望特定类型的所有控件都具有红色前景.然后,他们将单个控件(在xaml中)的前景值设置为黄色.我希望那种类型的所有控件的前景值都是红色的,除了它们另外指定为黄色的那个.
加载控件时,我想读取依赖项属性以查看它们是否已设置值,或者它是否是样式中定义的默认值.如果它是默认值,我想从app.xaml文件中读取它们的特殊行,并将前景设置为该颜色.
从MSDN页面ReadLocalValue扩展您的解决方案以完成:
if (ReadLocalValue(FontSizeProperty) == DependencyProperty.UnsetValue)
// Do your thing...
Run Code Online (Sandbox Code Playgroud)
也就是说,存在DependencyProperty.UnsetValue,用于检查是否设置了值.