2011-11-26 55 views
3

我正在使用具有三列DataGridTemplateColumn類型的數據網格。這些列共享幾乎相同的行爲,因此使用幾乎相同的模板。這些模板是複製粘貼,並且有一些資源被更改。將值傳遞給具有附加屬性的DataTemplates

我想將模板重構爲使用附加屬性提供必要數據的通用版本。我試過,但一直無法從CellTemplate.

方法我試過內訪問屬性是:

  • 綁定使用的RelativeSource:TemplatedParent。
  • 使用RelativeSource與各種AncestorTypes綁定。
  • FrameworkPropertyMetadataOptions.Inherits添加到所附屬性的FrameworkPropertyMetadata

CellTemplate似乎與周圍環境存在奇怪的分離程度。我錯過了什麼。如果沒有,那麼這個問題的適當解決方案是什麼?

+2

你可以顯示一個代碼,你試圖達到這個目的嗎? –

+0

請粘貼代碼或分享您提出的解決方案,我想我在這裏看到同樣的問題。我無法將行爲附加到分層數據模板 – RichardJohnn

回答

0

從你的代碼示例將是有益的,但假設你已經連接你的財產的DataGrid,你應該能夠使用以下(未經測試)從CellTemplate綁定到它:

<TextBlock Text="{Binding Path=(YourNamespace:YourClassName.YourAttachedPropertyName), 
RelativeSource={RelativeSource AncestorType=DataGrid}, FallbackValue=''}" /> 

如果扣押的財產到DataGridTemplateColumn,你可以使用:

<TextBlock Text="{Binding Path=(YourNamespace:YourClassName.YourAttachedPropertyName), 
RelativeSource={RelativeSource AncestorType=DataGridTemplateColumn}, FallbackValue=''}" /> 

不是必需的FallbackValue屬性,但它是一個很好的做法,用它來避免,如果結合蛋白綁定錯誤g來源無法找到。