2015-11-24 67 views
1

我正在嘗試爲按鈕創建一個ControlTemplate,並將CommandParameter綁定到按鈕Content的某些屬性。按鈕樣式內的內容的訪問屬性

這目前看起來是這樣的:

<Style x:Key="MyStyleKey" TargetType="{x:Type Button}"> 
    <Setter Property="controls:ButtonHelper.CornerRadius" Value="3"/> 
    // stuck here 
    <Setter Property="CommandParameter" Value="{Binding ((SomeDataClass)Content).Id}" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      // ... 
     </Setter.Value> 
    </Setter> 
</Style> 

被稱爲

<Button Command="{Binding SetActive}" Content="{Binding SomeDataObject}" Style="{DynamicResource MyStyleKey}" /> 

通常我會設置CommandParameter直接

<Button Command="{Binding SetActive}" CommandParameter="{Binding SomeDataObject.Id}" Content="{Binding SomeDataObject}" Style="{DynamicResource MyStyleKey}" /> 

我的理解模板的是不重複你自己。 從Id開始 - 屬性是按鈕Content的一部分,將它作爲CommandParameter傳遞給模板是完全有意義的。

+0

目前還不清楚你問什麼,至少對我來說。 –

+0

@FarhanAnam:如何訪問屬性'Id'的按鈕綁定'Content'屬性被傳遞給'CommandParameter' – KingKerosin

+0

你問題的最後兩行讓我困惑。 –

回答

1

您需要設置relative source

<Setter Property="CommandParameter" Value="{Binding Content.Id, RelativeSource={RelativeSource Mode=Self}}"/> 
+0

這是行得通的。謝謝。 輸入「Content.」或任何在SO [here](http://stackoverflow.com/questions/16560550/wpf-binding-casting-in-binding-path)上描述的內容時,任何可能啓用智能感知的機會辦法? – KingKerosin

+0

@KingKerosin:您提到的解決方案不適用於此綁定表達式。 – Dennis

+0

使用'{Binding Content。(someNameSpace:SomeDataClass.Id),RelativeSource = {RelativeSource Self}}'正在工作。在設計時給予我intellisense,並在運行時正確綁定。爲什麼不呢? – KingKerosin