5

在对 MSDN 和其他来源进行大量搜索之后,我基本上发现“一些”依赖属性确实支持类似于 WPF 的属性值继承。但是,据我所知,没有明确的清单列出哪些属性可以,哪些不可以。例如,我知道字体属性;然而 Horizo​​ntalContentAlignment 没有。我还在这个论坛中看到了另一个线程,它指出 DP 优先级列表不包括值继承(http://msdn.microsoft.com/en-us/library/cc265148(VS.95).aspx#listing)。

此外,似乎甚至不可能将可继承的元数据应用于任何自定义 DP,因此 Silverlight 框架似乎已经针对特定属性对其进行了自定义破解。我需要确切知道哪些依赖属性确实支持属性值继承。如果我错过了关于此的明显文章或线程,那么我很抱歉,但我的搜索非常彻底。

谢谢。

4

2 回答 2

4

你提到字体属性支持这一点,所以我在反射器中做了一些挖掘,发现这很有趣:

文本块

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x40003714, typeof(double));

控制

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x80003714, typeof(double));

排队

public static readonly DependencyProperty FontSizeProperty = DependencyProperty.RegisterCoreProperty(0x3714, typeof(double));

所以这三个类都定义了一个 FontSizeProperty 并且使用的 id 看起来非常相似,就好像第一位只是某种标志一样。因此,也许在幕后发生了一些事情,允许您所谓的属性继承,因为框架可能会在这些相似的 dp id 之间传输值。

于 2009-02-03T22:32:59.350 回答
2

请参阅 MaxHeight (不继承父值)和 FontSize (如您所描述的那样传播)的“依赖属性信息”部分:

最大高度

字体大小


MSDN 网页

属性值继承

元素可以从树中的父级继承依赖属性的值。

笔记:

属性值继承行为并非对所有依赖属性全局启用,因为继承的计算时间确实会对性能产生一些影响。属性值继承通常仅对特定场景表明属性值继承是合适的属性启用。您可以通过查看 SDK 参考中该依赖属性的 Dependency Property Information 部分来确定依赖属性是否继承


于 2009-05-14T14:37:51.567 回答