爲了更好地理解WPF綁定:樣式和綁定在WPF
<Style x:Key="myButton" TargetType="Button">
<Setter
Property="Content"
Value="{Binding
RelativeSource={RelativeSource FindAncestor,AncestorType=My:Control},
Path=Text}">
</Setter>
</Style>
<Button Name="button1" Style="{StaticResource myButton}"></Button>
<Button Name="button2" Style="{StaticResource myButton}"></Button>
當我使用多個按鈕這種風格,我認爲風格是唯一實例化的。綁定是什麼意思?我是否只有一個綁定(即一個綁定對象),並且button1和button2引用了這個綁定對象?如果是這樣,當button1和button2被用作不同的My:Control控件的一部分時,何時以及如何確定綁定的來源?我的意思是指引用源對象而不是源的值?有人可以指出我對某些規範的描述嗎?
我問了同樣的qestion朋友的結果。他解釋說,BindingExpression和Binding對象是有區別的。我在Style中指定的是一個BindingExpression。由於Style只是一次實例化,所以BindingExpression也可能是一樣的。所以這兩個按鈕引用相同的BindingExpression。在執行期間的某個時刻,評估BindingExpression並創建一個Binding-object。在此創建過程中,FindAncestor將根據樹中按鈕的當前位置進行評估。最後,每個按鈕都有自己的和不同的綁定對象。 – user1182735
一般來說,這個解釋適合你的解釋,但有一個小細節。 Binding-object和BindingExpression-object的區別。 – user1182735
兩個按鈕都引用相同的綁定,但兩個按鈕都不會有相同的'BindingExpression',因爲'BindingExpression'包含有關'Target'的信息。 – Shoe