Dla lepszego zrozumienia powiązań WPF:Style i Wiązania w 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>
Kiedy używam tego stylu na wielu przycisków, Zakładam, że styl jest tworzony tylko te. Co to oznacza dla wiązania? Czy mam tylko jedno wiązanie (tj. Jeden obiekt wiążący), a przycisk 1 i przycisk 2 odwołują się do tego obiektu wiążącego? Jeśli tak, to kiedy i jak zidentyfikowano źródło powiązania, gdy przyciski 1 i 2 są używane jako część różnych elementów sterujących My: Control? Mam tu na myśli odniesienie do obiektu źródłowego, a nie do wartości źródła? Czy ktoś może wskazać mi jakieś specyfikacje, jeśli tak jest powiedziane?
Poprosiłem samą qestion do znajomego. Wyjaśnił, że istnieje różnica między obiektem BindingExpression a obiektem Binding. To, co określiłem w stylu, to BindingExpression. A ponieważ styl jest tworzony tylko raz, prawdopodobnie istnieje również BindingExpression. Więc oba przyciski odnoszą się do tej samej BindingExpression. W pewnym momencie podczas wykonywania oceniany jest obiekt BindingExpression i tworzony jest obiekt Binding. W tym procesie tworzenia FindAncestor jest oceniany na podstawie aktualnej pozycji przycisku w drzewie.Na końcu każdy przycisk ma własny i inny obiekt wiązania. – user1182735
Ogólnie to wyjaśnienie pasuje do Twojego wyjaśnienia, ale z jednym drobnym szczegółem. Rozróżnienie między obiektem Binding-object a obiektem BindingExpression. – user1182735
Oba przyciski odnoszą się do tego samego wiązania, ale oba przyciski nie będą miały tego samego wyrażenia "BindingExpression", ponieważ "BindingExpression" zawiera informacje o "Target". – Shoe