Binding.RelativeSource Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit la source de liaison en spécifiant son emplacement par rapport à la position de la cible de liaison. Cela est le plus souvent utilisé dans les liaisons dans les modèles de contrôle 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}"/>
Valeur de propriété
Emplacement relatif de la source de liaison à utiliser. La valeur par défaut est Null.
Exemples
Cet exemple XAML est extrait du fichier generic.xaml qui définit les états visuels par défaut pour tous les contrôles XAML. Ce segment particulier est l’un des états visuels du contrôle ToggleSwitch . Ici, l’une des animations définies par l’état visuel référence les propriétés du contrôle qui existent spécifiquement afin que les modèles puissent y accéder et obtenir des valeurs d’exécution qui modifient l’animation. Pour que le code XAML du modèle obtienne les propriétés du contrôle où le modèle est appliqué, la liaison doit être utilisée {RelativeSource TemplatedParent} comme valeur 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>
Remarques
Source, RelativeSource et ElementName s’excluent mutuellement dans une liaison. Si vous avez défini l’un de ces attributs, la définition de l’un des deux autres dans une liaison (via XAML ou via du code) entraîne une exception. La définition de RelativeSource en XAML nécessite toujours l’utilisation de l’extension de balisage {RelativeSource}. Cela est également vrai si vous créez la liaison entière en tant qu’extension de balisage {Binding}, auquel cas l’extension de balisage {RelativeSource} est imbriquée dans le composant RelativeSource de l’expression.
Vous ne pouvez pas définir les valeurs de propriété d’un objet Binding après que cette liaison a été attachée à un élément cible et à une propriété cible. Si vous tentez cette opération, vous obtiendrez une exception d’exécution.