Partager via


RelativeSource Classe

Définition

Implémente une extension de balisage qui décrit l’emplacement de la source de liaison par rapport à la position de la cible de liaison.

public ref class RelativeSource : System::Windows::Markup::MarkupExtension, System::ComponentModel::ISupportInitialize
[System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))]
public class RelativeSource : System.Windows.Markup.MarkupExtension, System.ComponentModel.ISupportInitialize
[<System.Windows.Markup.MarkupExtensionReturnType(typeof(System.Windows.Data.RelativeSource))>]
type RelativeSource = class
    inherit MarkupExtension
    interface ISupportInitialize
Public Class RelativeSource
Inherits MarkupExtension
Implements ISupportInitialize
Héritage
RelativeSource
Attributs
Implémente

Exemples

L’exemple suivant montre un déclencheur de style qui crée un ToolTip qui signale un message d’erreur de validation. À l’aide de la RelativeSource propriété, la valeur du setter est liée au contenu d’erreur du actuel TextBox (à l’aide du TextBox style). Pour plus d’informations sur cet exemple, consultez Guide pratique pour implémenter la validation de liaison.

<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
  <Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
      <Setter Property="ToolTip"
        Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors)/ErrorContent}"/>
    </Trigger>
  </Style.Triggers>
</Style>

L’exemple suivant montre la Style définition d’un contrôle personnalisé appelé NumericUpDown. La Text propriété du TextBlock est liée au Value de l’objet qui est le TemplatedParent, qui est le NumericUpDown contrôle auquel cela Style est appliqué dans ce cas.

<!--ControlTemplate for NumericUpDown that inherits from
    Control.-->
<Style TargetType="{x:Type local:NumericUpDown}">
  <Setter Property="HorizontalAlignment" Value="Center"/>
  <Setter Property="VerticalAlignment" Value="Center"/>
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type local:NumericUpDown}">
        <Grid Margin="3">
          <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
          </Grid.ColumnDefinitions>

          <Border BorderThickness="1" BorderBrush="Gray" 
                  Margin="2" Grid.RowSpan="2" 
                  VerticalAlignment="Center" HorizontalAlignment="Stretch">
                  
            <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Value}" 
                       Width="60" TextAlignment="Right" Padding="5"/>
          </Border>
          
          <RepeatButton Command="{x:Static local:NumericUpDown.IncreaseCommand}"  
                        Grid.Column="1" Grid.Row="0">Up</RepeatButton>
                        
          <RepeatButton Command="{x:Static local:NumericUpDown.DecreaseCommand}"
                        Grid.Column="1" Grid.Row="1">Down</RepeatButton>

        </Grid>

      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Ce qui suit retourne le deuxième ItemsControl rencontré sur le chemin vers le haut en commençant à l’élément cible de la liaison.

Binding myBinding = new Binding();
// Returns the second ItemsControl encountered on the upward path
// starting at the target element of the binding
myBinding.RelativeSource = new RelativeSource(
    RelativeSourceMode.FindAncestor, typeof(ItemsControl), 2);
Dim myBinding As New Binding()
' Returns the second ItemsControl encountered on the upward path
' starting at the target element of the binding
myBinding.RelativeSource = New RelativeSource(RelativeSourceMode.FindAncestor, GetType(ItemsControl), 2)

Remarques

L’une des façons de spécifier une source de liaison consiste à utiliser la Binding.RelativeSource propriété . Il s’agit du type de propriété de cette propriété. RelativeSource est à la fois une implémentation d’extension de balisage et un objet de données. Lorsque l’extension retourne elle-même (voir ProvideValue), les informations pertinentes sont contenues dans les données. L’objectif principal de l’extension de balisage est d’autoriser une syntaxe de constructeur d’arguments variables sous forme d’attribut, afin que le FindAncestor mode puisse être défini en ligne avec les deux arguments supplémentaires pour le type et le niveau ancêtres que les autres modes n’exigent pas.

Pour plus d’informations XAML, consultez RelativeSource MarkupExtension.

Constructeurs

RelativeSource()

Initialise une nouvelle instance de la classe RelativeSource.

RelativeSource(RelativeSourceMode)

Initialise une nouvelle instance de la classe RelativeSource avec un mode initial.

RelativeSource(RelativeSourceMode, Type, Int32)

Initialise une nouvelle instance de la classe RelativeSource avec un mode initial et des qualificateurs de marche d'arborescence supplémentaires pour rechercher la source relative souhaitée.

Propriétés

AncestorLevel

Obtient ou définit le niveau d’ancêtre à rechercher, en mode FindAncestor. Utilisez 1 pour indiquer celui le plus proche de l’élément cible de liaison.

AncestorType

Obtient ou définit le type d'ancêtre à rechercher.

Mode

Obtient ou définit une valeur RelativeSourceMode qui décrit l’emplacement de la source de liaison par rapport à la position de la cible de liaison.

PreviousData

Obtient une valeur statique utilisée pour retourner un RelativeSource construit pour le mode PreviousData.

Self

Obtient une valeur statique utilisée pour retourner un RelativeSource construit pour le mode Self.

TemplatedParent

Obtient une valeur statique utilisée pour retourner un RelativeSource construit pour le mode TemplatedParent.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ProvideValue(IServiceProvider)

Retourne un objet qui doit être défini comme la valeur sur la propriété de l'objet cible pour cette extension de balisage. Pour RelativeSource, il s'agit d'un autre RelativeSource qui utilise la source appropriée pour le mode spécifié.

ShouldSerializeAncestorLevel()

Indique si la propriété AncestorLevel doit être rendue persistante.

ShouldSerializeAncestorType()

Indique si la propriété AncestorType doit être rendue persistante.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

ISupportInitialize.BeginInit()

Ce membre prend en charge l’infrastructure Windows Presentation Foundation (WPF) et n’est pas destiné à être utilisé directement à partir de votre code.

ISupportInitialize.EndInit()

Ce membre prend en charge l’infrastructure Windows Presentation Foundation (WPF) et n’est pas destiné à être utilisé directement à partir de votre code.

S’applique à

Voir aussi