首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Silverlight 2.0:在更改属性之前确定是否设置了依赖项属性

Silverlight 2.0:在更改属性之前确定是否设置了依赖项属性
EN

Stack Overflow用户
提问于 2009-08-13 17:12:04
回答 2查看 1.7K关注 0票数 2

我在从Control继承的自定义控件上有一个依赖项属性(前台)。在加载控件时,在为控件设置值之前,希望查看用户是否设置了依赖项属性,还是使用了其默认值。这个问题比这里要复杂一点:

该控件位于用户添加到其项目中的自定义控件库中。当他们设置项目时,我可以让他们用给定的x:key向他们的app.xaml文件中添加一行,其中包含我在设置控件默认值时读取的设置。但是,如果它们在代码中或在xaml中设置值,则我不希望使用此全局值设置值。这里有几个案例可以帮助我想象一下我在说什么:

  1. 用户从我的库中创建一个控件,并将其放在他们的页面上。然后,他们将前景设为绿色。我希望这个控件的前景值是绿色的。
  2. 用户在其app.xaml中添加一条特殊行,表示希望所有特定类型的控件都具有红色前景。我希望所有这种控件的前景值为红色。
  3. 用户在其app.xaml中添加一条特殊行,表示希望所有特定类型的控件都具有红色前景。然后,将单个控件(在xaml中)的前景值设置为黄色。我希望所有这类控件的前景值都是红色的,除非它们指定为黄色。

加载控件时,我希望读取依赖项属性,以查看它们是否设置了值,或者它是否是在样式中定义的默认值。如果它是默认值,那么我想从app.xaml文件中读取它们的特殊行,并将最前面的位置设置为该颜色。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-13 17:20:15

我做了更多的研究,相信我找到了答案。在加载控件(或更新)时,我检查ReadLocalValue(ForegroundProperty)的类型,如果该类型是System.Object,则在xaml中没有设置它。但是,如果这种类型不是System.Object (比如System.Windows.Media.Brush),那么它是在xaml中设置的。

票数 1
EN

Stack Overflow用户

发布于 2009-10-14 16:00:32

MSDN页面ReadLocalValue扩展您的解决方案以完成

代码语言:javascript
运行
复制
if (ReadLocalValue(FontSizeProperty) == DependencyProperty.UnsetValue)
    // Do your thing...

也就是说,存在检查是否设置了值的DependencyProperty.UnsetValue。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1273349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档