Binding.RelativeSource Propiedad

Definición

Obtiene o establece el origen de enlace especificando su ubicación en relación con la posición del destino de enlace. Esto suele usarse en los enlaces dentro de plantillas de control XAML,

RelativeSource RelativeSource();

void RelativeSource(RelativeSource value);
public RelativeSource RelativeSource { get; set; }
var relativeSource = binding.relativeSource;
binding.relativeSource = relativeSource;
Public Property RelativeSource As RelativeSource
<Binding RelativeSource="{RelativeSource TemplatedParent}"/>
-or-
<Binding RelativeSource="{RelativeSource Self}"/>

Valor de propiedad

Ubicación relativa del origen de enlace que se va a usar. El valor predeterminado es NULL.

Ejemplos

Este ejemplo xaml se toma del archivo generic.xaml que define los estados visuales predeterminados para todos los controles XAML. Este segmento concreto es uno de los estados visuales del control ToggleSwitch . Aquí, una de las animaciones definidas por las propiedades de referencia de estado visual del control que existen específicamente para que las plantillas puedan acceder a ellas y obtener valores en tiempo de ejecución que modifiquen la animación. Para que el XAML de plantilla obtenga propiedades del control donde se aplica la plantilla, el enlace debe usar {RelativeSource TemplatedParent} como valor RelativeSource.

<VisualStateGroup x:Name="ToggleStates">
  <VisualStateGroup.Transitions>
    <VisualTransition x:Name="DraggingToOnTransition"
      From="Dragging"
      To="On"
      GeneratedDuration="0">
      <Storyboard>
        <RepositionThemeAnimation TargetName="SwitchKnob" 
          FromHorizontalOffset="
          {Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.KnobCurrentToOnOffset}"
        />
        <RepositionThemeAnimation TargetName="SwitchCurtain"
          FromHorizontalOffset="
          {Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.CurtainCurrentToOnOffset}"
        />
      </Storyboard>
    </VisualTransition>
...
  </VisualStateGroup.Transitions>
</VisualStateGroup>

Comentarios

Source, RelativeSource y ElementName son mutuamente excluyentes en un enlace. Si has establecido uno de estos atributos, establecer cualquiera de los otros dos en un enlace (a través de XAML o a través de código) provocará una excepción. Establecer RelativeSource en XAML siempre requiere el uso de la extensión de marcado {RelativeSource}. Esto también es cierto si va a crear todo el enlace como una extensión de marcado {Binding}, en cuyo caso la extensión de marcado {RelativeSource} está anidada dentro del componente RelativeSource de la expresión.

No se pueden establecer los valores de propiedad de un objeto Binding después de que ese enlace se haya asociado a un elemento de destino y a una propiedad de destino. Si intenta esto, obtendrá una excepción en tiempo de ejecución.

Se aplica a

Consulte también