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.
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, <Binding
bindProp1="
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.
BindingGroupName: uma cadeia de caracteres que identifica um possível grupo de associação. Esse é um conceito de associação relativamente avançado; consulte a página de referência para BindingGroupName.
BindsDirectlyToSource: booliano, pode ser ou
true
false
. O padrão éfalse
.Converter: pode ser definido como uma
bindProp
=value
cadeia de caracteres na expressão, mas para fazer isso requer uma referência de objeto para o valor, como uma Extensão de Marcação StaticResource. Nesse caso, o valor é uma instância de uma classe de conversor personalizada.ConverterCulture: configurável na expressão como um identificador com base em padrões; consulte o tópico de referência para ConverterCulture.
ConverterParameter: pode ser definido como uma
bindProp
=value
cadeia de caracteres na expressão, mas isso depende do tipo do parâmetro que está sendo passado. Se passar um tipo de referência para o valor, esse uso exigirá uma referência de objeto, como uma extensão de marcação StaticResource aninhada.ElementName: mutuamente exclusivo versus RelativeSource e Source; cada uma dessas propriedades de associação representa uma metodologia de associação específica. Confira Visão Geral da Vinculação de Dados.
FallbackValue: pode ser definido como uma
bindProp
=value
cadeia de caracteres na expressão, mas isso depende do tipo do valor que está sendo passado. Se passar um tipo de referência, exigirá uma referência de objeto, como uma extensão de marcação StaticResource aninhada.IsAsync: booliano, pode ser ou
true
false
. O padrão éfalse
.Mode: valor é um nome constante da BindingMode enumeração. Por exemplo,
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: booliano, pode ser ou
true
false
. O padrão éfalse
.NotifyOnTargetUpdated: booliano, pode ser ou
true
false
. O padrão éfalse
.NotifyOnValidationError: booliano, pode ser ou
true
false
. O padrão éfalse
.Path: uma cadeia de caracteres que descreve um caminho para um objeto de dados ou um modelo de objeto geral. O formato fornece várias convenções diferentes para percorrer um modelo de objeto que não pode ser descrito adequadamente neste tópico. Consulte a sintaxe XAML do PropertyPath.
RelativeSource: mutuamente exclusivo versus com ElementName e Source; cada uma dessas propriedades de associação representa uma metodologia de associação específica. Confira Visão Geral da Vinculação de Dados. Requer um uso de RelativeSource MarkupExtension aninhado para especificar o valor.
Source: mutuamente exclusivo versus RelativeSource e ElementName; cada uma dessas propriedades de associação representa uma metodologia de associação específica. Confira Visão Geral da Vinculação de Dados. Requer o uso de uma extensão aninhada, normalmente uma Extensão de Marcação StaticResource que se refere a uma fonte de dados de objeto de um dicionário de recursos identificado por chave.
StringFormat: uma cadeia de caracteres que descreve uma convenção de formato de cadeia de caracteres para os dados associados. Esse é um conceito de associação relativamente avançado; consulte a página de referência para StringFormat.
TargetNullValue: pode ser definido como uma
bindProp
=value
cadeia de caracteres na expressão, mas isso depende do tipo do parâmetro que está sendo passado. Se passar um tipo de referência para o valor, exigirá uma referência de objeto, como uma extensão de marcação StaticResource aninhada.UpdateSourceTrigger: valor é um nome constante da UpdateSourceTrigger enumeração. Por exemplo,
{Binding UpdateSourceTrigger=LostFocus}
. Controles específicos potencialmente têm valores padrão diferentes para essa propriedade de associação. Consulte UpdateSourceTrigger.ValidatesOnDataErrors: booliano, pode ser ou
true
false
. O padrão éfalse
. Consulte Comentários.ValidatesOnExceptions: booliano, pode ser ou
true
false
. O padrão éfalse
. Consulte Comentários.XPath: uma cadeia de caracteres que descreve um caminho para o XMLDOM de uma fonte de dados XML. Consulte Associar a dados XML usando consultas XMLDataProvider e XPath.
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.
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
- Binding
- Visão Geral do Data Binding
- XAML no WPF
- Extensões de marcação e XAML do WPF
.NET Desktop feedback