Binding.RelativeSource Propriedade

Definição

Obtém ou define a origem da associação, especificando seu local com relação à posição do destino da associação. Isso geralmente é usado em associações em modelos de controle 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 da propriedade

O local relativo da origem da associação a ser usada. O padrão é nulo.

Exemplos

Este exemplo XAML é obtido do arquivo generic.xaml que define os estados visuais padrão para todos os controles XAML. Esse segmento específico é um dos estados visuais para o controle ToggleSwitch . Aqui, uma das animações definidas pelo estado visual faz referência às propriedades do controle que existem especificamente para que os modelos possam acessá-las e obter valores de tempo de execução que modificam a animação. Para que o modelo XAML obtenha propriedades do controle em que o modelo é aplicado, a associação deve usar {RelativeSource TemplatedParent} como o 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>

Comentários

Source, RelativeSource e ElementName são mutuamente exclusivos em uma associação. Se você tiver definido um desses atributos, definir um dos outros dois em uma associação (por meio de XAML ou por meio de código) causará uma exceção. Definir RelativeSource em XAML sempre requer o uso da extensão de marcação {RelativeSource}. Isso também será verdadeiro se você estiver criando toda a associação como uma extensão de marcação {Binding}, caso em que a extensão de marcação {RelativeSource} está aninhada dentro do componente RelativeSource da expressão.

Você não pode definir os valores de propriedade de um objeto Binding depois que essa associação tiver sido anexada a um elemento de destino e à propriedade de destino. Se você tentar isso, receberá uma exceção em tempo de execução.

Aplica-se a

Confira também