RelativeSource Klasa

Definicja

Implementuje rozszerzenie znaczników, które opisuje lokalizację źródła powiązania względem pozycji elementu docelowego powiązania.Implements a markup extension that describes the location of the binding source relative to the position of the binding target.

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
Dziedziczenie
RelativeSource
Atrybuty
Implementuje

Przykłady

Poniższy przykład pokazuje wyzwalacz stylu, który tworzy ToolTip raport, który wyświetla komunikat o błędzie walidacji.The following example shows a style trigger that creates a ToolTip that reports a validation error message. Przy użyciu RelativeSource właściwości, wartość metody ustawiającej tworzy powiązanie z zawartością błędu bieżącej TextBox ( TextBox przy użyciu stylu).Using the RelativeSource property, the value of the setter binds to the error content of the current TextBox (the TextBox using the style). Aby uzyskać więcej informacji na temat tego przykładu, zobacz How to: Implementuj sprawdzanie poprawności powiązań.For more information on this example, see How to: Implement Binding Validation.

<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>

W poniższym przykładzie przedstawiono Style definicję kontrolki niestandardowej o nazwie NumericUpDown .The following example shows the Style definition of a custom control called NumericUpDown. TextWłaściwość TextBlock jest powiązana z Value obiektem, który jest, który jest TemplatedParent NumericUpDown formantem, Style do którego jest stosowany w tym przypadku.The Text property of the TextBlock is bound to the Value of the object that is the TemplatedParent, which is the NumericUpDown control that this Style is applied to in this case.

<!--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>

Aby zapoznać się z kompletnym przykładem, zobacz NumericUpDown Custom Control with motyw i Obsługa automatyzacji interfejsu użytkownika.For the complete sample, see NumericUpDown Custom Control with Theme and UI Automation Support Sample.

Poniższe zwraca sekundę w ItemsControl ścieżce do góry, rozpoczynając od elementu docelowego powiązania.The following returns the second ItemsControl encountered on the upward path starting at the target element of the binding.

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)

Uwagi

Jednym ze sposobów określenia źródła powiązania jest użycie Binding.RelativeSource właściwości.One of the ways to specify a binding source is to use the Binding.RelativeSource property. Jest to typ właściwości tej właściwości.This is the property type of that property. RelativeSource jest jednocześnie implementacją rozszerzenia znacznika i obiektem danych.RelativeSource is simultaneously a markup extension implementation and a data object. Gdy rozszerzenie zwróci sam siebie (zobacz ProvideValue ), odpowiednie informacje są zawarte w danych.When the extension returns itself (see ProvideValue), the relevant information is contained in the data. Głównym celem rozszerzenia znacznika jest umożliwienie składni konstruktorów argumentów w postaci atrybutu, tak aby FindAncestor można było zdefiniować tryb wbudowany z dwoma dodatkowymi argumentami dla typu nadrzędnego i poziomu, który inne tryby nie są wymagane.The main purpose of the markup extension is to allow a variable-argument constructor syntax in attribute form, so that the FindAncestor mode can be defined inline with the two extra arguments for ancestor type and level that the other modes do not require.

Aby uzyskać informacje na temat języka XAML, zobacz RelativeSource MarkupExtension.For XAML information, see RelativeSource MarkupExtension.

Konstruktory

RelativeSource()

Inicjuje nowe wystąpienie klasy RelativeSource.Initializes a new instance of the RelativeSource class.

RelativeSource(RelativeSourceMode)

Inicjuje nowe wystąpienie RelativeSource klasy z trybem początkowym.Initializes a new instance of the RelativeSource class with an initial mode.

RelativeSource(RelativeSourceMode, Type, Int32)

Inicjuje nowe wystąpienie RelativeSource klasy z trybem wstępnym i dodatkowymi kwalifikatorami przeszukiwania drzewa do znajdowania żądanego źródła względnego.Initializes a new instance of the RelativeSource class with an initial mode and additional tree-walking qualifiers for finding the desired relative source.

Właściwości

AncestorLevel

Pobiera lub ustawia poziom elementu nadrzędnego, który ma być wyszukiwany, w FindAncestor trybie.Gets or sets the level of ancestor to look for, in FindAncestor mode. Użyj wartości 1, aby wskazać jeden najbliższy elementowi docelowemu powiązania.Use 1 to indicate the one nearest to the binding target element.

AncestorType

Pobiera lub ustawia typ elementu nadrzędnego, który ma być wyszukiwany.Gets or sets the type of ancestor to look for.

Mode

Pobiera lub ustawia RelativeSourceMode wartość opisującą lokalizację źródła powiązania względem pozycji elementu docelowego powiązania.Gets or sets a RelativeSourceMode value that describes the location of the binding source relative to the position of the binding target.

PreviousData

Pobiera wartość statyczną, która jest używana do zwrócenia RelativeSource skonstruowanego dla PreviousData trybu.Gets a static value that is used to return a RelativeSource constructed for the PreviousData mode.

Self

Pobiera wartość statyczną, która jest używana do zwrócenia RelativeSource skonstruowanego dla Self trybu.Gets a static value that is used to return a RelativeSource constructed for the Self mode.

TemplatedParent

Pobiera wartość statyczną, która jest używana do zwrócenia RelativeSource skonstruowanego dla TemplatedParent trybu.Gets a static value that is used to return a RelativeSource constructed for the TemplatedParent mode.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ProvideValue(IServiceProvider)

Zwraca obiekt, który powinien zostać ustawiony jako wartość właściwości obiektu docelowego dla tego rozszerzenia znacznika.Returns an object that should be set as the value on the target object's property for this markup extension. W przypadku RelativeSource , jest to kolejna RelativeSource , przy użyciu odpowiedniego źródła dla określonego trybu.For RelativeSource, this is another RelativeSource, using the appropriate source for the specified mode.

ShouldSerializeAncestorLevel()

Wskazuje, czy AncestorLevel Właściwość powinna być utrwalona.Indicates whether the AncestorLevel property should be persisted.

ShouldSerializeAncestorType()

Wskazuje, czy AncestorType Właściwość powinna być utrwalona.Indicates whether the AncestorType property should be persisted.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Jawne implementacje interfejsu

ISupportInitialize.BeginInit()

Ten element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio w kodzie.This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

ISupportInitialize.EndInit()

Ten element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio w kodzie.This member supports the Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

Dotyczy

Zobacz też