XAML 属性 值:默认值与本地值与环境值

XAML property values: default vs local vs ambient

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

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

如果这里适合提问,有人可以解释和讨论默认、本地和环境之间的区别吗?

是否有一个词可以用来区分这些类型的 属性 值,即 "default" 是 属性 值 "type" 还是什么?

除了这三种之外还有 属性 值类型吗?

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

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

"Default" 本质上意味着没有指定源,因此该值取自某些内置源。请注意,一些默认值是动态生成的,而不是常量。 "Local" 是在该特定依赖对象中显式设置值时,覆盖它将以其他方式继承的任何值。 "Ambient" 是当值来自其他来源(例如样式)时。我将它们之间的区别称为不同的基值来源。

是的,不止这三个。例如,如果将属性 TextBlock.FontFamily="Arial" 放入 Window 标记中,则 window 中的文本块将从中继承该值。当您观察属性面板中的 属性 并在框上滚动时,它会显示 "Inherited." 请注意,框仍然是绿色的,就像 "Ambient."

一样

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