RelativeSource Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Implementa uma extensão de marcação que descreve a localização da fonte de ligação em relação à posição do alvo de ligaçã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 seguinte mostra um disparador de estilo que cria uma ToolTip e que reporta uma mensagem de erro de validação. Usando esta RelativeSource propriedade, o valor do setter liga-se ao conteúdo de erro da corrente TextBox (o TextBox usando o estilo). Para mais informações sobre este exemplo, veja Como: Implementar a Validação de Vinculaçã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 seguinte mostra a Style definição de um controlo personalizado chamado NumericUpDown. A Text propriedade do TextBlock está ligada ao Value do objeto que é o TemplatedParent, que é o controlo NumericUpDown a que isto Style é aplicado neste 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 devolve o segundo ItemsControl encontrado no caminho ascendente começando no elemento alvo da ligaçã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)
Observações
Uma das formas de especificar uma fonte de ligação é usar a Binding.RelativeSource propriedade. Este é 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 própria (ver ProvideValue), a informação relevante está contida nos dados. O principal objetivo da extensão de marcação é permitir uma sintaxe construtora de argumentos variáveis em forma de atributo, de modo que o FindAncestor modo possa ser definido em linha com os dois argumentos extra para o tipo e nível do ancestral que os outros modos não requerem.
Para informações sobre XAML, consulte RelativeSource MarkupExtension.
Construtores
| Name | Description |
|---|---|
| RelativeSource() |
Inicializa uma nova instância da RelativeSource classe. |
| RelativeSource(RelativeSourceMode, Type, Int32) |
Inicializa uma nova instância da RelativeSource classe com um modo inicial e qualificadores adicionais de caminhada na árvore para encontrar a fonte relativa desejada. |
| RelativeSource(RelativeSourceMode) |
Inicializa uma nova instância da RelativeSource classe com um modo inicial. |
Propriedades
| Name | Description |
|---|---|
| AncestorLevel |
Obtém ou define o nível do ancestral a procurar, no FindAncestor modo. Use o 1 para indicar o que está mais próximo do elemento alvo de ligação. |
| AncestorType |
Obtém ou define o tipo de antepassado a procurar. |
| Mode |
Obtém ou define um RelativeSourceMode valor que descreve a localização da fonte de ligação em relação à posição do alvo de ligação. |
| PreviousData |
Obtém um valor estático que é usado para devolver um RelativeSource construído para o PreviousData modo. |
| Self |
Obtém um valor estático que é usado para devolver um RelativeSource construído para o Self modo. |
| TemplatedParent |
Obtém um valor estático que é usado para devolver um RelativeSource construído para o TemplatedParent modo. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ProvideValue(IServiceProvider) |
Devolve um objeto que deve ser definido como valor na propriedade do objeto alvo para esta extensão de marcação. Para RelativeSource, isto é outro RelativeSource, usando a fonte apropriada para o modo especificado. |
| ShouldSerializeAncestorLevel() |
Indica se a AncestorLevel propriedade deve ser mantida. |
| ShouldSerializeAncestorType() |
Indica se a AncestorType propriedade deve ser mantida. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| ISupportInitialize.BeginInit() |
Este membro suporta a infraestrutura Windows Presentation Foundation (WPF) e não foi concebido para ser usado diretamente a partir do seu código. |
| ISupportInitialize.EndInit() |
Este membro suporta a infraestrutura Windows Presentation Foundation (WPF) e não foi concebido para ser usado diretamente a partir do seu código. |