use*_*735 6 wpf binding styles
为了更好地理解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>
Run Code Online (Sandbox Code Playgroud)
当我在多个按钮上使用这个Style时,我认为Style只是实例化的.绑定意味着什么?我只有一个绑定(即一个绑定对象),而button1和button2是否引用了这个绑定对象?如果是这样,当button1和button2被用作不同的My:Control控件的一部分时,何时以及如何确定绑定的来源?我的意思是指源对象而不是源的值?有人能指出一些规范吗?
我假设样式只是实例化的样式
是的,这是使用您的代码的证明

我是否只有一个 Binding(即一个 Binding-Object)并且 Button1 和 Button2 引用了这个 Binding-object?
是的,由于样式保存绑定并且对象是相同的(字面意思),所以绑定必须相同。

如果是这样,当button1和button2用作不同My:Control控件的一部分时,何时以及如何识别绑定源?
何时:渲染可视化树时,通过走到由 指定的控件来评估绑定FindAncestor
如何:现在您正在谈论实施细节。虽然我不知道具体是如何FindAncestor工作的(一种查看方法是通过 .NET Reflector),但它可能使用VisualTreeHelper.GetParent(...)
编辑:
the与对象的BindingExpressionthe 无关,但您可以像这样轻松获得它。Binding

正如预期的那样,两个按钮具有不同BindingExpression但相同的Binding对象。与BindingExpression的关系。在本例中,由于使用查找属性而导致结果为 nullTargetSourceResolvedSourceRelativeSource

| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |