Udostępnij za pośrednictwem


RelativeSource Klasa

Definicja

Implementuje rozszerzenie znaczników opisujące lokalizację źródła powiązania względem położenia obiektu docelowego powiązania.

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

W poniższym przykładzie pokazano wyzwalacz stylu, który tworzy element ToolTip , który zgłasza komunikat o błędzie weryfikacji. RelativeSource Przy użyciu właściwości wartość ustawiającego wiąże się z zawartością błędu bieżącego TextBox (TextBoxprzy użyciu stylu). Aby uzyskać więcej informacji na temat tego przykładu, zobacz How to: Implement Binding Validation (Instrukcje: implementowanie weryfikacji powiązań).

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

Poniższy przykład przedstawia definicję Style kontrolki niestandardowej o nazwie NumericUpDown. Właściwość TextTextBlock obiektu jest powiązana z Value obiektem , który jest TemplatedParentkontrolką NumericUpDown , do Style której jest zastosowana w tym przypadku.

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

Poniższe polecenie zwraca drugi ItemsControl napotkany na ścieżce w górę, zaczynając od elementu docelowego powiązania.

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 . Jest to typ właściwości tej właściwości. RelativeSource jest jednocześnie implementacją rozszerzenia znaczników i obiektem danych. Gdy rozszerzenie zwraca się (zobacz ProvideValue), odpowiednie informacje są zawarte w danych. Głównym celem rozszerzenia znaczników jest zezwolenie na składnię konstruktora argumentu zmiennej w postaci atrybutu, dzięki czemu FindAncestor tryb można zdefiniować w tekście z dwoma dodatkowymi argumentami dla typu i poziomu, że inne tryby nie wymagają.

Aby uzyskać informacje dotyczące języka XAML, zobacz RelativeSource MarkupExtension.

Konstruktory

RelativeSource()

Inicjuje nowe wystąpienie klasy RelativeSource.

RelativeSource(RelativeSourceMode)

Inicjuje RelativeSource nowe wystąpienie klasy w trybie początkowym.

RelativeSource(RelativeSourceMode, Type, Int32)

Inicjuje nowe wystąpienie RelativeSource klasy z trybem początkowym i dodatkowymi kwalifikatorami chodzenia drzewami w celu znalezienia żądanego względnego źródła.

Właściwości

AncestorLevel

Pobiera lub ustawia poziom przodka do wyszukania w FindAncestor trybie. Użyj wartości 1, aby wskazać element docelowy powiązania najbliższego.

AncestorType

Pobiera lub ustawia typ przodka do wyszukania.

Mode

Pobiera lub ustawia wartość, która opisuje lokalizację RelativeSourceMode źródła powiązania względem pozycji obiektu docelowego powiązania.

PreviousData

Pobiera wartość statyczną, która jest używana do zwracania RelativeSource konstrukcji dla PreviousData trybu.

Self

Pobiera wartość statyczną, która jest używana do zwracania RelativeSource konstrukcji dla Self trybu.

TemplatedParent

Pobiera wartość statyczną, która jest używana do zwracania RelativeSource konstrukcji dla TemplatedParent trybu.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ProvideValue(IServiceProvider)

Zwraca obiekt, który należy ustawić jako wartość we właściwości obiektu docelowego dla tego rozszerzenia znaczników. W przypadku RelativeSourceprogramu jest to inny RelativeSourceelement , używając odpowiedniego źródła dla określonego trybu.

ShouldSerializeAncestorLevel()

Wskazuje, czy AncestorLevel właściwość powinna być utrwalone.

ShouldSerializeAncestorType()

Wskazuje, czy AncestorType właściwość powinna być utrwalone.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(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 z kodu.

ISupportInitialize.EndInit()

Ten element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio z kodu.

Dotyczy

Zobacz też