Binding.RelativeSource Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die Bindungsquelle ab, indem deren Speicherort relativ zur Position des Bindungsziels angegeben wird, oder legt diese fest. Dies wird am häufigsten in Bindungen innerhalb von XAML-Steuervorlagen verwendet.
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}"/>
Eigenschaftswert
Der relative Speicherort der zu verwendenden Bindungsquelle. Der Standardwert ist NULL.
Beispiele
Dieses XAML-Beispiel stammt aus der Datei generic.xaml, die die standardmäßigen visuellen Zustände für alle XAML-Steuerelemente definiert. Dieses bestimmte Segment ist einer der visuellen Zustände für das ToggleSwitch-Steuerelement . Hier verweist eine der Animationen, die durch den visuellen Zustand definiert sind, auf Eigenschaften des Steuerelements, die speziell vorhanden sind, damit Vorlagen darauf zugreifen und Laufzeitwerte abrufen können, die die Animation ändern. Damit der Vorlagen-XAML-Code Eigenschaften aus dem Steuerelement abrufen kann, in dem die Vorlage angewendet wird, muss die Bindung als RelativeSource-Wert verwendet {RelativeSource TemplatedParent}
werden.
<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>
Hinweise
Source, RelativeSource und ElementName schließen sich in einer Bindung gegenseitig aus. Wenn Sie eines dieser Attribute festgelegt haben, führt das Festlegen eines der beiden anderen Attribute in einer Bindung (über XAML oder code) zu einer Ausnahme. Das Festlegen von RelativeSource in XAML erfordert immer die Verwendung der {RelativeSource}-Markuperweiterung. Dies gilt auch, wenn Sie die gesamte Bindung als {Binding}-Markuperweiterung erstellen. In diesem Fall wird die {RelativeSource}-Markuperweiterung in der RelativeSource-Komponente des Ausdrucks geschachtelt.
Sie können die Eigenschaftswerte eines Binding-Objekts nicht festlegen, nachdem diese Bindung einem Zielelement und einer Zieleigenschaft angefügt wurde. Wenn Sie dies versuchen, erhalten Sie eine Laufzeit-Ausnahme.