为了更好地理解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