资源的依赖继承

时间:2012-12-19 10:53:33

标签: wpf xaml dependency-properties

我有一个特殊问题:我有一个标记扩展,需要检查附加属性。附加属性被定义为可继承。

这在XAML中适用于在Window / UserControl下定义的所有元素,但不适用于资源。例如,给定这个XAML:

<Window MyAttachedProp="...">
    <Window.Resources>
        <FlowDocument x:Key="Doc">
            <Paragraph><Run Text="{MyMarkupExtension}" /></Paragraph>
        </FlowDocument>
    </Window.Resources>

    <FlowDocumentScrollViewer Document="{StaticResource Doc}" />
    ...
</Window>

标记扩展失败,因为调用ProvideValue()函数时,附加属性不是从Window到FlowDocument和Run。派生的。

是否有相同的解决方法可以使其工作?

谢谢, 史蒂芬

1 个答案:

答案 0 :(得分:1)

来自Inheriting Property Values Across Tree Boundaries

  

属性继承通过遍历元素树来工作。这棵树   通常与逻辑树并行

显然资源字典不构成元素树,因此不会继承该值。但是,我想它应该在FlowDocument上设置属性时起作用,因为那是元素树的根:

<Window.Resources>
    <FlowDocument x:Key="Doc" MyAttachedProp="...">
        <Paragraph><Run Text="{MyMarkupExtension}" /></Paragraph>
    </FlowDocument>
</Window.Resources>