2012-12-28 55 views
1

沒問題通過PlacementTarget綁定到依賴屬性失敗 - 錯誤的路徑語法?

我創建了一個具有字符串值的依賴項屬性。我把它放在一個TextBlock和它的作品:

<TextBlock dp:ElementDataContext.ElementName="LvMain"> 

我覈實,該屬性ElementDataContext.ElementName設置爲「LvMain」。

問題

現在,這裏的問題是:在TextBlock的上下文菜單,我想通過PlacementTarget綁定到這個依賴屬性

以下是我如何嘗試做到這一點。這是一個包含TextBlockContextMenu我的XAML的摘錄:

<TextBlock dp:ElementDataContext.ElementName="LvMain"> 
    <TextBlock.ContextMenu> 
     <ContextMenu Tag="{Binding PlacementTarget.(dp:ElementDataContext.ElementName), RelativeSource={RelativeSource Self}}"> 

這無法在運行。當打開上下文菜單它會給我一個「BindingExpression路徑錯誤」:

BindingExpression path error: '(dp:ElementDataContext.ElementName)' property not found on 'object' ''TextBlock' (Name='')'. BindingExpression:Path=PlacementTarget.(dp:ElementDataContext.ElementName); DataItem='ContextMenu' (Name='contextMenu'); target element is 'ContextMenu' (Name='contextMenu'); target property is 'Tag' (type 'Object') 

我懷疑我的綁定路徑是錯誤的。我試圖

  • PlacementTarget.(dp:ElementDataContext.ElementName)
  • PlacementTarget.dp:ElementDataContext.ElementName
  • PlacementTarget.ElementDataContext.ElementName

沒有什麼工作。什麼是正確的語法?這甚至有可能嗎?

+0

看看這個:http://wpftutorial.net/DebugDataBinding.html可能可以幫助你找到關於錯誤的更多信息 –

回答

2

屬性路徑語法PlacementTarget.(dp:ElementDataContext.ElementName)是正確的,但你也必須明確地寫在物業表達Path=...部分:

<ContextMenu Tag="{Binding Path=PlacementTarget.(dp:ElementDataContext.ElementName), 
          RelativeSource={RelativeSource Self}}"> 

然而,在Binding Markup Extension隱路徑部分並沒有提到這個問題。

+0

Narf。就是這樣,非常感謝你!如此簡單和錯誤信息如此沒有幫助。 –