2012-12-19 88 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>