Compartilhar via


Extensão de marcação de associação

Adia um valor da propriedade para ser um valor de associação de dados, criando um objeto de expressão intermediário e interpretando o contexto de dados que se aplica ao elemento e à sua associação em tempo de execução.

Uso de expressões de associação

<object property="{Binding}" .../>  
-or-  
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...  
/>  
-or-  
<object property="{Binding path}" .../>  
-or  
<object property="{Binding path[, bindPropN=valueN]*}" .../>  

Observações sobre a sintaxe

Nessas sintaxes, o [] e * não são literais. Eles fazem parte de uma notação para indicar que zero ou mais pares bindProp=value podem ser usados, com um separador , entre eles, precedendo pares bindProp=value.

Qualquer uma das propriedades listadas na seção "Propriedades de associação que podem ser definidas com a extensão de associação" pode ser definida usando atributos de um Binding elemento de objeto. No entanto, esse não é realmente o uso da extensão de marcação do Binding, é apenas o processamento XAML geral de atributos que definem as propriedades da classe CLR Binding . Em outras palavras, <Binding bindProp1="value1 "[bindPropN="valueN"]*/> é uma sintaxe equivalente para atributos de uso de elemento de Binding objeto em vez de um Binding uso de expressão. Para saber mais sobre o uso do atributo XAML de propriedades específicas do Binding, consulte a seção "Uso do atributo XAML" da propriedade relevante de na Biblioteca de Classes do Binding .NET Framework.

Valores XAML

Valor Descrição
bindProp1, bindPropN O nome da Binding propriedade or BindingBase a ser definida. Nem todas as Binding propriedades podem ser definidas com a Binding extensão, e algumas propriedades são configuráveis em uma Binding expressão somente usando outras extensões de marcação aninhadas. Consulte a seção "Associando propriedades que podem ser definidas com a extensão de associação".
value1, valueN O valor para o qual definir a propriedade . A manipulação do valor do atributo é, em última análise, específica para o tipo e a lógica da propriedade específica Binding que está sendo definida.
path A cadeia de caracteres de caminho que define a propriedade implícita Binding.Path . Consulte também Sintaxe XAML de PropertyPath.

{Binding} não qualificada

O {Binding} uso mostrado em "Uso de expressão de associação" cria um Binding objeto com valores padrão, que inclui uma inicial Binding.Path de null. Isso ainda é útil em muitos cenários, pois o criado Binding pode estar contando com as principais propriedades de associação de dados, como Binding.Path e Binding.Source sendo definido no contexto de dados em tempo de execução. Para obter mais informações sobre o conceito de contexto de dados, consulte Vinculação de dados.

Caminho implícito

A Binding extensão de marcação usa Binding.Path como uma "propriedade padrão" conceitual, onde Path= não precisa aparecer na expressão. Se você especificar uma Binding expressão com um caminho implícito, o caminho implícito deverá aparecer primeiro na expressão, antes de qualquer outrovalue bindProp=par em que a Binding propriedade seja especificada pelo nome. Por exemplo: {Binding PathString}, onde PathString é uma cadeia de caracteres que é avaliada como sendo o valor de Binding.Path no Binding criado pelo uso da extensão de marcação. Você pode acrescentar um caminho implícito com outras propriedades nomeadas após o separador de vírgula, por exemplo, {Binding LastName, Mode=TwoWay}.

Associando propriedades que podem ser definidas com a extensão de associação

A sintaxe mostrada neste tópico usa a aproximação genéricabindPropvalue=, pois há muitas propriedades de leitura/gravação de ou Binding que podem ser definidas por meio da Binding sintaxe de extensão/expressão de BindingBase marcação. Eles podem ser definidos em qualquer ordem, com exceção de um .Binding.Path (Você tem a opção de especificar explicitamente Path= e nesse caso, ela poderá ser definida em qualquer ordem). Basicamente, você pode definir zero ou mais das propriedades na lista abaixo, usando pares bindProp=value separados por vírgulas.

Vários desses valores de propriedade exigem tipos de objeto que não dão suporte a uma conversão de tipo nativo de uma sintaxe de texto em XAML e, portanto, requerem extensões de marcação para serem definidos como um valor de atributo. Consulte a seção Uso do atributo XAML na biblioteca de classes .NET Framework para cada propriedade para obter mais informações. A cadeia de caracteres que você usa para a sintaxe de atributo XAML, com ou sem o uso adicional de extensão de marcação, é basicamente a mesma que o valor que você especifica em uma expressão Binding, com a exceção de que você não coloca aspas ao redor de cada bindProp=value na expressão Binding.

A seguir estão as propriedades que não podem ser definidas usando a Binding extensão de marcação/{Binding}formulário de Binding expressão.

  • UpdateSourceExceptionFilter: essa propriedade espera uma referência a uma implementação de retorno de chamada. Retornos de chamada/métodos diferentes de manipuladores de eventos não podem ser referenciados em sintaxe XAML.

  • ValidationRules: a propriedade usa uma coleção genérica de ValidationRule objetos. Isso pode ser expresso como um elemento de propriedade em um Binding elemento de objeto, mas não tem nenhuma técnica de análise de atributo prontamente disponível para uso em uma Binding expressão. Consulte o tópico de referência para ValidationRules.

  • XmlNamespaceManager

Comentários

Importante

Em termos de precedência de propriedade de dependência, uma expressão Binding é equivalente a um valor definido localmente. Se um valor local for definido para uma propriedade que tinha uma expressão Binding anteriormente, a Binding será totalmente removida. Para obter mais detalhes, consulte Precedência do valor da propriedade de dependência.

Não é abordada a descrição da vinculação de dados em um nível básico neste tópico. Consulte Visão geral de vinculação de dados.

Observação

MultiBinding e não dão suporte a uma sintaxe PriorityBinding de extensão XAML. Em vez disso, você deveria usar elementos de propriedade. Consulte os tópicos de referência para MultiBinding e PriorityBinding.

Os valores boolianos para XAML não diferenciam maiúsculas de minúsculas. Por exemplo você pode especificar um {Binding NotifyOnValidationError=true} ou {Binding NotifyOnValidationError=True}.

As associações que envolvem validação de dados normalmente são especificadas por um elemento explícito Binding em vez de como uma {Binding ...} expressão, e a configuração ValidatesOnDataErrors ou ValidatesOnExceptions em uma expressão é incomum. Isso ocorre porque a propriedade ValidationRules companion não pode ser prontamente definida na forma de expressão. Para obter mais informações, consulte Implementar validação de associação.

Binding é uma extensão da marcação. As extensões de marcação são tipicamente implementadas quando existe um requisito que permite que valores de atributo sejam diferentes de valores literais ou nomes de manipuladores e o requisito é mais global do que conversores de tipo atribuídos em certos tipos ou propriedades. Todas as extensões de marcação no XAML usam os caracteres { e } na sintaxe de atributo, que é a convenção pela qual o processador XAML reconhece que uma extensão de marcação precisa processar o conteúdo da cadeia de caracteres. Para obter mais informações, consulte Extensões de marcação e XAML do WPF.

Binding é uma extensão de marcação atípica em que a Binding classe que implementa a funcionalidade de extensão para a implementação XAML do WPF também implementa vários outros métodos e propriedades que não estão relacionados ao XAML. Os outros membros destinam-se a criar Binding uma classe mais versátil e independente que possa lidar com muitos cenários de associação de dados, além de funcionar como uma extensão de marcação XAML.

Confira também