XAML属性值:default vs local vs ambient

时间:2018-05-08 20:58:37

标签: wpf visual-studio xaml properties ambient

我一直试图在我继承的项目中解释XAML代码,我想弄清楚某些元素中某些值的来源。当我在“属性”面板中查看对象的属性时,我可以看到每个属性旁边的方块。白色方块表示属性值是默认值,黑色方块表示属性值为" local"意味着它已从默认值更改,并且该更改可在XAML标记中看到,绿色方块表示"环境。"

有些样式应用于对象,因此我可以认为环境属性中的值必须来自资源字典。我仍然不确定在哪里寻找值的来源,我想要做的是为了改变它们。环境属性的documentation对我来说很难遵循,并且没有回答我的所有问题,而且我还没有找到任何文档来讨论默认,本地和环境之间的差异。

如果这是一个合适的地方,有人可以解释并讨论默认,本地和环境之间的差异吗?

是否有一个词用于区分这些类型的属性值,即"默认"属性值"类型"或者什么?

除了这三种之外还有任何属性值吗?

1 个答案:

答案 0 :(得分:0)

我的,您的个人资料多么迷人。 ;)

我只想提一下,您可以使用System.Windows命名空间中的静态帮助器方法DependencyPropertyHelper.GetValueSource(DependencyObject, DependencyProperty)获取有关依赖项属性值来源的一些信息。

“默认”实质上意味着未指定任何源,因此该值取自某些内置源。请注意,一些默认值是动态生成的,而不是恒定的。 “本地”是在该特定依赖项对象中显式设置值时,将覆盖该值将继承的所有值。 “环境”是从其他来源(例如样式)派生值时。我将两者之间的区别称为不同的基础价值来源。

是的,不止这三个。例如,如果将属性TextBlock.FontFamily="Arial"放在Window标记中,则该窗口中的文本块将从其继承该值。当您在属性面板中观察该属性并将其移到该框上时,它将显示“继承”。请注意,该框仍然是绿色的,就像带有“环境”的框一样。

实际上有一个枚举可以帮助阐明各种可能的基值来源。称为BaseValueSource

相关问题