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 oder legt sie fest, indem sie seine Position relativ zur Position des Bindungsziels angibt. Dies wird am häufigsten in Bindungen innerhalb von XAML-Steuerelementvorlagen 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
Die relative Position 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 die Eigenschaften des visuellen Zustands des Steuerelements definiert wurden, die speziell vorhanden sind, damit Vorlagen darauf zugreifen und Laufzeitwerte abrufen können, die die Animation ändern. Damit die Xaml-Vorlage Eigenschaften aus dem Steuerelement abrufen kann, auf das die Vorlage angewendet wird, muss die Bindung als RelativeSource-Wert verwendet werden {RelativeSource TemplatedParent} .
<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 gegenseitig in einer Bindung aus. Wenn Sie eines dieser Attribute festgelegt haben, führt das Festlegen einer der beiden anderen in einer Bindung (über XAML oder durch 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 innerhalb der RelativeSource-Komponente des Ausdrucks geschachtelt.
Sie können die Eigenschaftswerte eines Binding-Objekts nicht festlegen, nachdem diese Bindung an ein Zielelement und eine Zieleigenschaft angefügt wurde. Wenn Sie dies versuchen, erhalten Sie eine Laufzeit ausnahme.