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ří ToolTip zprávu o chybě ověření. RelativeSource Pomocí vlastnosti setter hodnota vytvoří vazbu k chybovému obsahu aktuálního TextBox objektu (TextBoxpomocí stylu). Další informace o tomto příkladu naleznete v tématu Postupy: Implementace ověřování 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 volaného NumericUpDown. Vlastnost TextTextBlock je vázána na Value objekt, který je , což je TemplatedParentNumericUpDown ovládací prvek, který se použije Style v tomto případě.

<!--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í sekundu ItemsControl , která byla zjištěna na vzestupné cestě 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ě implementací rozšíření značek a datovým objektem. Když se rozšíření vrátí sám (viz), ProvideValuepříslušné informace jsou obsaženy v datech. Hlavním účelem rozšíření značek je povolit syntaxi konstruktoru argumentu proměnné ve formuláři atributu, aby FindAncestor režim mohl být definován vložený se dvěma nadbytečnými argumenty pro nadřazený typ a úroveň, kterou ostatní režimy nevyžadují.

Informace o XAML naleznete v tématu RelativeSource MarkupExtension.

Konstruktory

Name Description
RelativeSource()

Inicializuje novou instanci RelativeSource třídy.

RelativeSource(RelativeSourceMode, Type, Int32)

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

RelativeSource(RelativeSourceMode)

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

Vlastnosti

Name Description
AncestorLevel

Získá nebo nastaví úroveň předku hledat, v FindAncestor režimu. Pomocí 1 označíte nejbližší k cílovému prvku vazby.

AncestorType

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

Mode

Získá nebo nastaví RelativeSourceMode hodnotu popisující 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

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

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

Slouží jako výchozí funkce hash.

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

Získá Type aktuální instance.

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

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

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

Vrátí objekt, který by měl být nastaven jako hodnota vlastnosti cílového objektu pro toto rozšíření značek. Pro RelativeSource, to je další RelativeSource, pomocí vhodného zdroje pro zadaný režim.

ShouldSerializeAncestorLevel()

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

ShouldSerializeAncestorType()

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

ToString()

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

(Zděděno od Object)

Explicitní implementace rozhraní

Name Description
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é