RelativeSource Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Implementa una extensión de marcado que describe la ubicación del origen del enlace con respecto a la posición de destino del enlace.
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
- Herencia
- Atributos
- Implementaciones
Ejemplos
En el ejemplo siguiente se muestra un desencadenador de estilo que crea un ToolTip que notifica un mensaje de error de validación. Con la RelativeSource propiedad , el valor del establecedor se enlaza al contenido de error del actual TextBox (el TextBox que usa el estilo ). Para obtener más información sobre este ejemplo, vea How to: Implement Binding Validation.
<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>
En el ejemplo siguiente se muestra la Style definición de un control personalizado denominado NumericUpDown
. La Text propiedad de TextBlock está enlazada al Value
del objeto que es TemplatedParent
, que es el NumericUpDown
control al que Style se aplica en este 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>
A continuación se devuelve el segundo ItemsControl encontrado en la ruta de acceso ascendente a partir del elemento de destino del enlace.
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)
Comentarios
Una de las formas de especificar un origen de enlace es usar la Binding.RelativeSource propiedad . Este es el tipo de propiedad de esa propiedad. RelativeSource es simultáneamente una implementación de extensión de marcado y un objeto de datos. Cuando la extensión se devuelve a sí misma (vea ProvideValue), la información pertinente se incluye en los datos. El propósito principal de la extensión de marcado es permitir una sintaxis de constructor de argumento variable en forma de atributo, de modo que el FindAncestor modo se pueda definir en línea con los dos argumentos adicionales para el tipo antecesor y el nivel que los demás modos no requieren.
Para obtener información de XAML, consulta RelativeSource MarkupExtension.
Constructores
RelativeSource() |
Inicializa una nueva instancia de la clase RelativeSource. |
RelativeSource(RelativeSourceMode) |
Inicializa una nueva instancia de la clase RelativeSource con un modo inicial. |
RelativeSource(RelativeSourceMode, Type, Int32) |
Inicializa una nueva instancia de la clase RelativeSource con un modo inicial y tres calificadores de recorrido de árbol para buscar el origen relativo deseado. |
Propiedades
AncestorLevel |
Obtiene o establece el nivel del antecesor que se va a buscar, en el modo FindAncestor. Use 1 para indicar el más próximo al elemento de destino de enlace. |
AncestorType |
Obtiene o establece el tipo de antecesor que se va a buscar. |
Mode |
Obtiene o establece un valor RelativeSourceMode que describe la ubicación del origen de enlace con respecto a la posición del destino de enlace. |
PreviousData |
Obtiene un valor estático que se usa para devolver el objeto RelativeSource construído para el modo PreviousData. |
Self |
Obtiene un valor estático que se usa para devolver el objeto RelativeSource construído para el modo Self. |
TemplatedParent |
Obtiene un valor estático que se usa para devolver el objeto RelativeSource construído para el modo TemplatedParent. |
Métodos
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ProvideValue(IServiceProvider) |
Devuelve un objeto que se debe establecer como el valor en la propiedad del objeto de destino para esta extensión de marcado. Para RelativeSource, éste es otro objeto RelativeSource, utilizando el origen adecuado del modo especificado. |
ShouldSerializeAncestorLevel() |
Indica si la propiedad AncestorLevel debe persistir. |
ShouldSerializeAncestorType() |
Indica si la propiedad AncestorType debe persistir. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
ISupportInitialize.BeginInit() |
Este miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no está pensada para usarse directamente desde el código. |
ISupportInitialize.EndInit() |
Este miembro admite la infraestructura de Windows Presentation Foundation (WPF) y no está pensada para usarse directamente desde el código. |