【问题标题】:Property Value Inheritance属性值继承
【发布时间】:2010-10-05 06:11:39
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: silverlight dependency-properties


    【解决方案1】:

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

    文本块

    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 之间传输值。

    【讨论】:

      【解决方案2】:

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

      MaxHeight

      FontSize


      来自MSDN webpage

      属性值继承

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

      注意:

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


      【讨论】:

      • 以上链接适用于 WPF,而不适用于 Silverlight。 Silverlight 属性文档,例如对于TextBlock.FontSize,不表示该属性是否被继承。
      • “MSDN 网页”的链接也指与 MaxHeight 完全相同的链接。复制/粘贴错误?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      相关资源
      最近更新 更多