Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Fornece um meio de especificar a origem de uma associação em termos de uma relação relativa no grafo de objeto em tempo de execução.
Uso do atributo XAML (modo autônomo)
<Binding RelativeSource="{RelativeSource Self}" .../>
-or-
<object property="{Binding RelativeSource={RelativeSource Self} ...}" .../>
Uso do atributo XAML (modo TemplatedParent)
<Binding RelativeSource="{RelativeSource TemplatedParent}" .../>
-or-
<object property="{Binding RelativeSource={RelativeSource TemplatedParent} ...}" .../>
Valores XAML
| Prazo | Description |
|---|---|
| {RelativeSource Self} | Produz um valor de Modo de Auto. O elemento de destino deve ser usado como a origem dessa associação. Isso é útil para associar uma propriedade de um elemento a outra propriedade no mesmo elemento. |
| {RelativeSource TemplatedParent} | Produz um ControlTemplate que é aplicado como a origem dessa associação. Isso é útil para aplicar informações de runtime a associações no nível do modelo. |
Observações
Uma Binding pode definir Binding.RelativeSource como um atributo em um elemento de objeto Binding ou como um componente dentro de uma extensão de marcação {Binding}. É por isso que duas sintaxes XAML diferentes são mostradas.
RelativeSource é semelhante à extensão de marcação {Binding}. É uma extensão de marcação capaz de retornar instâncias de si mesma e dar suporte a uma construção baseada em string que essencialmente passa um argumento para o construtor. Nesse caso, o argumento que está sendo passado é o valor Modo.
O modo Self é útil para associar uma propriedade de um elemento a outra propriedade no mesmo elemento e é uma variação na associação ElementName , mas não requer nomenclatura e, em seguida, referencia o elemento. Se você associar uma propriedade de um elemento a outra propriedade no mesmo elemento, as propriedades deverão usar o mesmo tipo de propriedade ou você também deverá usar um Conversor na associação para converter os valores. Por exemplo, você poderia usar Height como uma fonte para Largura sem conversão, mas precisaria de um conversor para usar IsEnabled como uma fonte para Visibilidade.
Veja um exemplo. Esse Retângulo usa uma extensão de marcação {Binding} para que sua Altura e Largura sejam sempre iguais e sejam renderizadas como um quadrado. Somente a Altura é definida como um valor fixo. Para esse Retângulo , seu DataContext padrão é nulo, não isso. Portanto, para estabelecer a fonte de contexto de dados para ser o próprio objeto (e habilitar a associação a suas outras propriedades), usamos o RelativeSource={RelativeSource Self} argumento no uso da extensão de marcação {Binding}.
<Rectangle
Fill="Orange" Width="200"
Height="{Binding RelativeSource={RelativeSource Self}, Path=Width}"
/>
Outro uso para RelativeSource={RelativeSource Self} é como uma maneira de definir o DataContext de um objeto para ele mesmo. Por exemplo, você pode ver essa técnica em alguns exemplos do SDK em que a classe Page foi estendida com uma propriedade personalizada que já fornece um modelo de visão pronto para uso para sua própria vinculação de dados, como: <common:LayoutAwarePage ... DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}">
Nota O uso de XAML para RelativeSource mostra apenas o uso para o qual se destina: definir um valor para Binding.RelativeSource em XAML como parte de uma expressão de associação. Teoricamente, outros usos são possíveis ao definir uma propriedade em que o valor é RelativeSource.
Tópicos relacionados
Windows developer