2012-12-19 90 views
0

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

在XAML中,所有在Window/UserControl下定义的元素都可以正常工作,但不适用于资源。例如,给定此XAML:因为当ProvideValue()

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

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

标记扩展失败 - 功能被调用时,附加属性不从窗口到的FlowDocument和运行的。

有没有相同的解决方法,使这项工作?

感谢, 史蒂芬

回答

1

Inheriting Property Values Across Tree Boundaries

财产继承的工作方式是遍历元素树。此树 通常与逻辑树平行

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

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