Sdílet prostřednictvím


RelativeSource Třída

Definice

Implementuje rozšíření značek, které popisuje umístění zdroje vazby vzhledem k pozici cíle vazby.

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
Dědičnost
RelativeSource
Atributy
Implementuje

Příklady

Následující příklad ukazuje trigger stylu, který vytvoří chybovou ToolTip zprávu o ověření. RelativeSource Pomocí vlastnosti se hodnota setter vytvoří vazbu na obsah chyby aktuálního TextBox (TextBoxpomocí stylu). Další informace o tomto příkladu najdete v tématu Postupy: Implementace ověření vazby.

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

Následující příklad ukazuje definici Style vlastního ovládacího prvku s názvem NumericUpDown. Vlastnost TextTextBlock je vázána na Value objekt , který je TemplatedParent, což je NumericUpDown ovládací prvek, na který Style se v tomto případě použije.

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

Následující vrátí druhý ItemsControl nalezený na cestě nahoru počínaje cílovým prvkem vazby.

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)

Poznámky

Jedním ze způsobů, jak určit zdroj vazby, je použít Binding.RelativeSource vlastnost . Toto je typ vlastnosti této vlastnosti. RelativeSource je současně implementace rozšíření značek a datový objekt. Když se rozšíření vrátí samo (viz ProvideValue), jsou v datech obsaženy příslušné informace. Hlavním účelem rozšíření značek je povolit syntaxi konstruktoru argumentu proměnné ve formě atributu FindAncestor , aby bylo možné režim definovat přímo se dvěma argumenty navíc pro nadřazený typ a úroveň, kterou ostatní režimy nevyžadují.

Informace o XAML najdete v tématu RelativeSource MarkupExtension.

Konstruktory

RelativeSource()

Inicializuje novou instanci RelativeSource třídy.

RelativeSource(RelativeSourceMode)

Inicializuje novou instanci RelativeSource třídy s počátečním režimem.

RelativeSource(RelativeSourceMode, Type, Int32)

Inicializuje novou instanci RelativeSource třídy s počátečním režimem a další stromové kvalifikátory pro vyhledání požadovaného relativního zdroje.

Vlastnosti

AncestorLevel

Získá nebo nastaví úroveň nadřazenosti, která se má hledat, v FindAncestor režimu. Použijte 1 k označení toho, který je nejblíže k cílovému elementu vazby.

AncestorType

Získá nebo nastaví typ nadřazeného, který chcete hledat.

Mode

Získá nebo nastaví RelativeSourceMode hodnotu, která popisuje umístění zdroje vazby vzhledem k pozici cíle vazby.

PreviousData

Získá statickou hodnotu, která se používá k vrácení RelativeSource vytvořené pro PreviousData režim.

Self

Získá statickou hodnotu, která se používá k vrácení RelativeSource vytvořené pro Self režim.

TemplatedParent

Získá statickou hodnotu, která se používá k vrácení RelativeSource vytvořené pro TemplatedParent režim.

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ProvideValue(IServiceProvider)

Vrátí objekt, který by měl být nastaven jako hodnota ve vlastnosti cílového objektu pro toto rozšíření značek. V případě RelativeSourcese jedná o jiný RelativeSourcezdroj s použitím příslušného zdroje pro zadaný režim.

ShouldSerializeAncestorLevel()

Určuje, zda AncestorLevel má být vlastnost trvalá.

ShouldSerializeAncestorType()

Určuje, zda AncestorType má být vlastnost trvalá.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

ISupportInitialize.BeginInit()

Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určen k použití přímo z vašeho kódu.

ISupportInitialize.EndInit()

Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určen k použití přímo z vašeho kódu.

Platí pro

Viz také