RelativeSource Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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. |