Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Spécifie les propriétés d’une RelativeSource source de liaison, à utiliser dans une extension de balisage de liaison ou lors de la définition de la RelativeSource propriété d’un Binding élément établi en XAML.
Utilisation des attributs XAML
<Binding RelativeSource="{RelativeSource modeEnumValue}" ... />
Utilisation des attributs XAML (imbriquée dans l’extension de liaison)
<object property="{Binding RelativeSource={RelativeSource modeEnumValue} ...}" ... />
Utilisation des éléments d’objet XAML
<Binding>
<Binding.RelativeSource>
<RelativeSource Mode="modeEnumValue"/>
</Binding.RelativeSource>
</Binding>
- ou -
<Binding>
<Binding.RelativeSource>
<RelativeSource
Mode="FindAncestor"
AncestorType="{x:Type typeName}"
AncestorLevel="intLevel"
/>
</Binding.RelativeSource>
</Binding>
Valeurs XAML
| Valeur | Descriptif |
|---|---|
modeEnumValue |
L’une des opérations suivantes : - Le jeton de chaîne Self correspond à un RelativeSource créé avec sa propriété Mode définie à Self.- Le jeton de chaîne TemplatedParent correspond à un RelativeSource créé avec sa propriété Mode définie à TemplatedParent.- Le jeton de chaîne PreviousData correspond à un RelativeSource créé avec sa propriété Mode définie à PreviousData.- Voir ci-dessous pour plus d’informations sur le FindAncestor mode. |
FindAncestor |
Jeton de texte FindAncestor. L'utilisation de ce jeton active un mode dans lequel un type d'ancêtre est spécifié par RelativeSource et éventuellement un niveau d'ancêtre. Cela correspond à un RelativeSource tel qu’il a été créé avec sa Mode propriété définie sur FindAncestor. |
typeName |
Obligatoire pour le FindAncestor mode. Nom d’un type, qui remplit la AncestorType propriété. |
intLevel |
Facultatif pour le mode FindAncestor. Niveau ancêtre (évalué vers la direction parente dans l’arborescence logique). |
Remarques
{RelativeSource TemplatedParent} les utilisations de liaison sont une technique clé qui traite un concept plus large de la séparation de l’interface utilisateur d’un contrôle et de la logique d’un contrôle. Cela permet de lier à partir de la définition du modèle au parent du modèle (l’instance de l’objet d’exécution où le modèle est appliqué). Dans ce cas, l’extension de balisage TemplateBinding est en fait un raccourci pour l’expression de liaison suivante : {Binding RelativeSource={RelativeSource TemplatedParent}}. Les utilisations de TemplateBinding ou {RelativeSource TemplatedParent} sont uniquement importantes dans le code XAML qui définit un modèle. Pour plus d’informations, consultez l’extension de balisage TemplateBinding.
{RelativeSource FindAncestor} est principalement utilisé dans les modèles de contrôle ou les compositions d’interface utilisateur autonomes prévisibles, pour les cas où un contrôle est toujours censé se trouver dans une arborescence visuelle d’un certain type ancêtre. Par exemple, les éléments d’un contrôle d’éléments peuvent utiliser FindAncestor pour établir une liaison aux propriétés de leur ancêtre dans le contrôle d’éléments. Ou bien, les éléments qui font partie de la composition de contrôle dans un modèle peuvent utiliser FindAncestor des liaisons aux éléments parents de cette même structure de composition.
Dans la syntaxe de l’élément objet pour le mode FindAncestor présenté dans les sections de Syntaxe XAML, la deuxième syntaxe d’élément objet est utilisée spécifiquement pour le mode FindAncestor.
FindAncestor le mode nécessite une valeur AncestorType. Vous devez définir AncestorType comme attribut à l’aide d’une référence x :Type Markup Extension au type d’ancêtre à rechercher. La AncestorType valeur est utilisée lorsque la demande de liaison est traitée au moment de l’exécution.
Pour le mode FindAncestor, la propriété facultative AncestorLevel peut aider à lever l'ambiguïté de la recherche des ancêtres dans les cas où il pourrait y avoir plusieurs ancêtres de ce type dans l'arbre d'éléments.
Pour plus d’informations sur l’utilisation du FindAncestor mode, consultez RelativeSource.
{RelativeSource Self} est utile pour les scénarios où une propriété d’une instance doit dépendre de la valeur d’une autre propriété de la même instance, et aucune relation de propriété de dépendance générale (telle que la contrainte) existe déjà entre ces deux propriétés. Bien qu’il soit rare que deux propriétés existent sur un objet de sorte que les valeurs soient littéralement identiques (et sont typées de façon identique), vous pouvez également appliquer un Converter paramètre à une liaison qui a {RelativeSource Self}, et utiliser le convertisseur pour convertir entre les types source et cible. Un autre scénario est {RelativeSource Self} dans le cadre d’un MultiDataTrigger.
Par exemple, le code XAML suivant définit un Rectangle élément de sorte que, quelle que soit la valeur entrée Width, il Rectangle s’agit toujours d’un carré : <Rectangle Width="200" Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}" .../>
{RelativeSource PreviousData} est utile dans les modèles de données ou dans les cas où les liaisons utilisent une collection comme source de données. Vous pouvez utiliser {RelativeSource PreviousData} pour mettre en évidence les relations entre les éléments de données adjacents de la collection. Une technique associée consiste à établir une MultiBinding entre les éléments actuels et précédents de la source de données, et à utiliser un convertisseur sur cette liaison pour déterminer la différence entre les deux éléments et leurs propriétés.
Dans l’exemple suivant, la première TextBlock dans le modèle d’éléments affiche le numéro courant. La deuxième TextBlock liaison est une MultiBinding qui comporte Binding deux constituants : l’enregistrement actif et une liaison qui utilise délibérément l’enregistrement de données précédent à l’aide de {RelativeSource PreviousData}. Ensuite, un convertisseur sur le MultiBinding calcule la différence et la renvoie dans la liaison.
<ListBox Name="fibolist">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}"/>
<TextBlock>, difference = </TextBlock>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource DiffConverter}">
<Binding/>
<Binding RelativeSource="{RelativeSource PreviousData}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
La description de la liaison de données en tant que concept n’est pas abordée ici, consultez Vue d’ensemble de la liaison de données.
Dans l’implémentation du processeur XAML WPF, la gestion de cette extension de balisage est définie par la classe RelativeSource.
RelativeSource est une extension de balisage. Les extensions de balisage sont généralement implémentées lorsqu'il est nécessaire d'empêcher que les valeurs d'attributs ne soient uniquement des valeurs littérales ou des noms de gestionnaires, et lorsque cette exigence est plus générale que de simplement installer des convertisseurs de type sur certains types ou propriétés. Toutes les extensions de balisage en XAML utilisent les caractères { et } dans leur syntaxe d’attribut, c’est-à-dire la convention selon laquelle un processeur XAML reconnaît qu’une extension de balisage doit traiter l’attribut. Pour plus d’informations, consultez les extensions de balisage et le XAML WPF.
Voir aussi
.NET Desktop feedback