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 message d’erreur de validation. À l’aide de la RelativeSource propriété, la valeur du setter est liée au contenu d’erreur de l’élément actif TextBoxTextBox l’aide du 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é de l’objet TextBlock est liée à Value l’objet qui est TemplatedParentle , qui est le NumericUpDown contrôle auquel il 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>

L’exemple suivant retourne la seconde ItemsControl rencontrée sur le chemin vers le haut à partir de 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 simultanément une implémentation d’extension de balisage et un objet de données. Lorsque l’extension se 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’argument variable sous forme d’attribut, afin que le FindAncestor mode puisse être défini en ligne avec les deux arguments supplémentaires pour le type ancêtre et le niveau que les autres modes ne nécessitent pas.

Pour plus d’informations XAML, consultez RelativeSource MarkupExtension.

Constructeurs

Nom Description
RelativeSource()

Initialise une nouvelle instance de la classe RelativeSource.

RelativeSource(RelativeSourceMode, Type, Int32)

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

RelativeSource(RelativeSourceMode)

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

Propriétés

Nom Description
AncestorLevel

Obtient ou définit le niveau d’ancêtre à rechercher, en FindAncestor mode. 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 RelativeSourceMode valeur 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 une RelativeSource construction pour le PreviousData mode.

Self

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

TemplatedParent

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

Méthodes

Nom Description
Equals(Object)

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

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

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

ShouldSerializeAncestorLevel()

Indique si la AncestorLevel propriété doit être conservée.

ShouldSerializeAncestorType()

Indique si la AncestorType propriété doit être conservée.

ToString()

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

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
ISupportInitialize.BeginInit()

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

ISupportInitialize.EndInit()

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

S’applique à

Voir aussi