Compartilhar via


RelativeSource Classe

Definição

Implementa uma extensão de marcação que descreve a localização da origem da associação com relação à posição do destino da associação.

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
Herança
RelativeSource
Atributos
Implementações

Exemplos

O exemplo a seguir mostra um gatilho de estilo que cria um ToolTip que relata uma mensagem de erro de validação. Usando a RelativeSource propriedade , o valor do setter se associa ao conteúdo de erro do atual TextBox (o TextBox usando o estilo ). Para obter mais informações sobre este exemplo, consulte Como implementar a validação de associação.

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

O exemplo a seguir mostra a Style definição de um controle personalizado chamado NumericUpDown. A Text propriedade do TextBlock é associada ao Value do objeto que é o TemplatedParent, que é o NumericUpDown controle ao qual isso Style é aplicado nesse caso.

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

O seguinte retorna o segundo ItemsControl encontrado no caminho para cima, começando no elemento de destino da associação.

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)

Comentários

Uma das maneiras de especificar uma fonte de associação é usar a Binding.RelativeSource propriedade . Esse é o tipo de propriedade dessa propriedade. RelativeSource é simultaneamente uma implementação de extensão de marcação e um objeto de dados. Quando a extensão retorna a si mesma (consulte ProvideValue), as informações relevantes estão contidas nos dados. A principal finalidade da extensão de marcação é permitir uma sintaxe de construtor de argumento variável no formato de atributo, para que o FindAncestor modo possa ser definido embutido com os dois argumentos extras para o tipo ancestral e o nível que os outros modos não exigem.

Para obter informações sobre XAML, consulte RelativeSource MarkupExtension.

Construtores

RelativeSource()

Inicializa uma nova instância da classe RelativeSource.

RelativeSource(RelativeSourceMode)

Inicializa uma nova instância da classe RelativeSource com um modo inicial.

RelativeSource(RelativeSourceMode, Type, Int32)

Inicializa uma nova instância da classe RelativeSource com um modo inicial e qualificadores adicionais de verificação de árvore para localizar a origem relativa desejada.

Propriedades

AncestorLevel

Obtém ou define o nível de ancestral a ser procurado, em modo FindAncestor. Use 1 para indicar o mais próximo ao elemento de destino da associação.

AncestorType

Obtém ou define o tipo de ancestral a ser procurado.

Mode

Obtém ou define um valor de RelativeSourceMode que descreve o local da origem da associação com relação à posição do destino da associação.

PreviousData

Obtém um valor estático usado para retornar uma RelativeSource construída para o modo PreviousData.

Self

Obtém um valor estático usado para retornar uma RelativeSource construída para o modo Self.

TemplatedParent

Obtém um valor estático usado para retornar uma RelativeSource construída para o modo TemplatedParent.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ProvideValue(IServiceProvider)

Retorna um objeto que deve ser definido como o valor na propriedade do objeto de destino para esta extensão de marcação. Para RelativeSource, este é outro RelativeSource, usando a origem apropriada para o modo especificado.

ShouldSerializeAncestorLevel()

Indica se a propriedade AncestorLevel deve ser persistente.

ShouldSerializeAncestorType()

Indica se a propriedade AncestorType deve ser persistente.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

ISupportInitialize.BeginInit()

Esse membro dá suporte à infraestrutura de Windows Presentation Foundation (WPF) e não se destina a ser usado diretamente do seu código.

ISupportInitialize.EndInit()

Esse membro dá suporte à infraestrutura de Windows Presentation Foundation (WPF) e não se destina a ser usado diretamente do seu código.

Aplica-se a

Confira também