Binding.RelativeSource Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta l'origine di associazione specificandone il percorso in relazione alla posizione della destinazione del binding. Viene usata più spesso nei binding all'interno dei modelli di controllo XAML.
RelativeSource RelativeSource();
void RelativeSource(RelativeSource value);
public RelativeSource RelativeSource { get; set; }
var relativeSource = binding.relativeSource;
binding.relativeSource = relativeSource;
Public Property RelativeSource As RelativeSource
<Binding RelativeSource="{RelativeSource TemplatedParent}"/>
-or-
<Binding RelativeSource="{RelativeSource Self}"/>
Valore della proprietà
Posizione relativa dell'origine di associazione da usare. Il valore predefinito è Null.
Esempio
Questo esempio XAML viene tratto dal file generic.xaml che definisce gli stati di visualizzazione predefiniti per tutti i controlli XAML. Questo particolare segmento è uno degli stati visivi per il controllo ToggleSwitch . In questo caso, una delle animazioni definite dalle proprietà dello stato visivo fa riferimento alle proprietà del controllo esistente in modo che i modelli possano accedervi e ottenere valori di runtime che modificano l'animazione. Per il modello XAML per ottenere le proprietà dal controllo in cui viene applicato il modello, l'associazione deve essere usata {RelativeSource TemplatedParent}
come valore RelativeSource.
<VisualStateGroup x:Name="ToggleStates">
<VisualStateGroup.Transitions>
<VisualTransition x:Name="DraggingToOnTransition"
From="Dragging"
To="On"
GeneratedDuration="0">
<Storyboard>
<RepositionThemeAnimation TargetName="SwitchKnob"
FromHorizontalOffset="
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobCurrentToOnOffset}"
/>
<RepositionThemeAnimation TargetName="SwitchCurtain"
FromHorizontalOffset="
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.CurtainCurrentToOnOffset}"
/>
</Storyboard>
</VisualTransition>
...
</VisualStateGroup.Transitions>
</VisualStateGroup>
Commenti
Source, RelativeSource e ElementName si escludono a vicenda in un'associazione. Se è stato impostato uno di questi attributi, l'impostazione di uno degli altri due in un'associazione (tramite XAML o tramite codice) causerà un'eccezione. L'impostazione di RelativeSource in XAML richiede sempre l'uso dell'estensione di markup {RelativeSource}. Questo vale anche se si sta creando l'intera associazione come estensione di markup {Binding}, nel qual caso l'estensione di markup {RelativeSource} viene annidata all'interno del componente RelativeSource dell'espressione.
Non è possibile impostare i valori delle proprietà di un oggetto Binding dopo che tale associazione è stata associata a un elemento di destinazione e a una proprietà di destinazione. Se si tenta di ottenere un'eccezione di runtime.