0

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

这在 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。

是否有相同的解决方法来完成这项工作?

谢谢,史蒂文

4

1 回答 1

1

跨树边界继承属性值

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

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

<Window.Resources>
    <FlowDocument x:Key="Doc" MyAttachedProp="...">
        <Paragraph><Run Text="{MyMarkupExtension}" /></Paragraph>
    </FlowDocument>
</Window.Resources>
于 2012-12-19T12:17:35.190 回答