Compartilhar via


Extensão de marcação de vinculação

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

Uso de expressão de vinculação

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

Notas de sintaxe

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

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, isso realmente não é o uso da extensão de marcação de Binding, é apenas o processamento geral de XAML dos atributos que definem propriedades da classe CLR Binding. Em outras palavras, <BindingbindProp1="value1"[bindPropN="valueN"]*/> é uma sintaxe equivalente para atributos do uso de elementos do objeto Binding em vez do uso de uma expressão Binding. Para aprender sobre o uso do atributo XAML em propriedades específicas de Binding, consulte a seção "Uso do Atributo XAML" da propriedade relevante na Biblioteca de Classes do .NET Framework Binding.

Valores XAML

Valor Descrição
bindProp1, bindPropN O nome da propriedade Binding ou BindingBase a ser definida. Nem todas as Binding propriedades podem ser definidas com a Binding extensão, e algumas propriedades são configuráveis dentro de uma Binding expressão apenas usando extensões de marcação aninhadas adicionais. Consulte a seção "Propriedades de associação que podem ser definidas com a extensão de associação".
value1, valueN O valor que deve ser atribuído à 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 a sintaxe XAML do PropertyPath.

{Binding} não qualificado

O uso de {Binding} mostrado em "Uso de Expressão de Associação" cria um objeto Binding com valores padrão, que inclui um Binding.Path inicial de null. Isso ainda é útil em muitos cenários, pois o criado Binding pode depender de propriedades chave de associação de dados, como Binding.Path e Binding.Source sendo definidas no contexto de execução de dados. Para obter mais informações sobre o conceito de contexto de dados, consulte Data Binding.

Caminho Implícito

A Binding extensão de marcação usa Binding.Path como uma "propriedade padrão" conceitual, em Path= que 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 quaisquer outros bindProp=value pares onde a propriedade Binding 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}.

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

A sintaxe mostrada neste tópico usa a aproximação genérica bindProp=value , pois há muitas propriedades de leitura/gravação de BindingBase ou Binding que podem ser definidas por meio da Binding sintaxe de extensão/expressão de marcação. Eles podem ser definidos em qualquer ordem, com exceção de um implícito Binding.Path. (Você tem a opção de especificar Path=explicitamente, nesse caso, ela pode ser definida em qualquer ordem). Basicamente, você pode definir zero ou mais das propriedades na lista abaixo, usando bindProp=value pares 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, exigem extensões de marcação para serem definidas como um valor de atributo. Verifique a seção Uso do Atributo XAML na Biblioteca de Classes do .NET Framework para obter mais informações; a string que você usa para sintaxe de atributo XAML com ou sem uso de extensão de marcação adicional é basicamente a mesma que o valor especificado em uma Binding expressão, com a exceção de que você não coloca aspas ao redor de cada bindProp=value na Binding instrução.

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

  • UpdateSourceExceptionFilter: essa propriedade espera uma referência a uma implementação de callback. Não é possível referenciar retornos de chamada/métodos que não sejam manipuladores de eventos na 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

Observações

Importante

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

A descrição da associação de dados em um nível básico não é abordada neste tópico. Confira Visão Geral da Vinculação de Dados.

Observação

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

Valores boolianos para XAML são insensíveis a maiúsculas e minúsculas. Por exemplo, você pode especificar um {Binding NotifyOnValidationError=true} ou {Binding NotifyOnValidationError=True}.

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

Binding é uma extensão da marcação. As extensões de marcação normalmente são implementadas quando há um requisito para escapar de valores de atributo que não sejam valores literais ou nomes de manipulador, e o requisito é mais global do que conversores de tipo atribuídos em determinados tipos ou propriedades. Todas as extensões de marcação no XAML usam os caracteres e { a } sintaxe de atributo, que é a convenção pela qual um processador XAML reconhece que uma extensão de marcação deve 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 na qual 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 relacionadas ao XAML. Os outros membros visam tornar Binding uma classe mais versátil e autocontida que pode abordar muitos cenários de vinculação de dados, além de funcionar como uma extensão de marcação XAML.

Consulte também