Per una migliore comprensione di attacchi WPF:stili e binding in 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>
Quando uso questo stile su più pulsanti, io assumono lo stile viene istanziata solo quelli. Cosa significa per il legame? Ho un solo Binding (cioè un oggetto Binding) e il pulsante 1 e il pulsante 2 fanno riferimento a questo oggetto Binding? In tal caso, quando e come viene identificata la Sorgente del legame quando button1 e button2 vengono utilizzati come parte di diversi controlli My: Control? Con ciò intendo il riferimento all'oggetto sorgente e non il valore della fonte? Qualcuno può indicarmi delle specifiche in cui è indicato?
ho chiesto la stessa Qestion ad un amico. Ha spiegato che esiste una differenza tra BindingExpression e Binding-object. Quello che ho specificato nello stile è un'espressione vincolante. E poiché lo stile viene solo istanziato una volta, probabilmente anche BindingExpression. Quindi entrambi i pulsanti fanno riferimento alla stessa BindingExpression. Ad un certo punto durante l'esecuzione viene valutata l'espressione BindingExpression e viene creato un oggetto Binding. In questo processo di creazione, FindAncestor viene valutato in base alla posizione corrente del pulsante nella struttura.Alla fine ogni pulsante ha il suo oggetto Binding diverso. – user1182735
In generale questa spiegazione si adatta alla tua spiegazione, ma con un dettaglio minore. La distinzione tra oggetto Binding-oggetto e oggetto BindingExpression. – user1182735
Entrambi i pulsanti fanno riferimento allo stesso binding, ma entrambi i pulsanti non avranno lo stesso 'BindingExpression' perché' BindingExpression' contiene le informazioni su 'Target'. – Shoe