我有一个特殊问题:我有一个标记扩展,需要检查附加属性。附加属性被定义为可继承。
这在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。派生的。
是否有相同的解决方法可以使其工作?
谢谢, 史蒂芬
答案 0 :(得分:1)
来自Inheriting Property Values Across Tree Boundaries:
属性继承通过遍历元素树来工作。这棵树 通常与逻辑树并行
显然资源字典不构成元素树,因此不会继承该值。但是,我想它应该在FlowDocument上设置属性时起作用,因为那是元素树的根:
<Window.Resources>
<FlowDocument x:Key="Doc" MyAttachedProp="...">
<Paragraph><Run Text="{MyMarkupExtension}" /></Paragraph>
</FlowDocument>
</Window.Resources>