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.
Note
Um novo mecanismo de associação está disponível para Windows 10, que é otimizado para desempenho e produtividade do desenvolvedor. Consulte a extensão de marcação {x:Bind}.
Note
Para obter informações gerais sobre como usar a associação de dados em seu aplicativo com {Binding} (e para obter uma comparação completa entre {x:Bind} e {Binding}), consulte a associação de dados em profundidade.
A extensão de marcação {Binding} é usada para associar propriedades de dados em controles a valores provenientes de uma fonte de dados, como código. A extensão de marcação {Binding} é convertida no tempo de carregamento XAML em uma instância da classe Binding . Esse objeto de vinculação obtém um valor de uma propriedade de uma fonte de dados e o transfere para a propriedade do controle. Opcionalmente, o objeto de associação pode ser configurado para observar alterações no valor da propriedade da fonte de dados e atualizar-se com base nessas alterações. Também pode, opcionalmente, ser configurado para propagar alterações no valor do controle de volta à propriedade de origem. A propriedade que é o destino de uma associação de dados deve ser uma propriedade de dependência. Para obter mais informações, consulte a visão geral das propriedades de dependência.
{Binding} tem a mesma precedência de propriedade de dependência que um valor local e definir um valor local no código imperativo remove o efeito de qualquer {Binding} definido na marcação.
Uso do atributo XAML
<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
| Term | Descrição |
|---|---|
| propertyPath | Uma cadeia de caracteres que especifica o caminho da propriedade para a associação. Mais informações estão na seção Caminho da propriedade abaixo. |
| bindingProperties |
propName=value[, propName=value]* Uma ou mais propriedades de associação especificadas usando uma sintaxe de par nome/valor. |
| propName | O nome da cadeia de caracteres da propriedade a ser definida no objeto Binding . Por exemplo, "Conversor". |
| valor | O valor que deve ser atribuído à propriedade. A sintaxe do argumento depende da propriedade de Propriedades da classe Binding que pode ser definida com a seção {Binding} abaixo. |
Caminho da propriedade
Path descreve a propriedade à qual você está associando (a propriedade de origem). O caminho é um parâmetro posicional, o que significa que você pode usar o nome do parâmetro explicitamente ({Binding Path=EmployeeID}) ou especifique-o como o primeiro parâmetro sem nome ({Binding EmployeeID}).
O tipo de Path é um caminho de propriedade, ou seja, uma cadeia de caracteres que é resolvida como uma propriedade ou subpropriedade do seu tipo personalizado ou de um tipo de framework. O tipo pode ser, mas não precisa ser, um DependencyObject. Os passos em um caminho de propriedade são delimitados por pontos (.) e você pode incluir vários delimitadores para percorrer sucessivas subpropriedades. Use o delimitador de ponto independentemente da linguagem de programação usada para implementar o objeto ao qual está associado.
Por exemplo, para associar a interface do usuário à propriedade de nome de um objeto de funcionário, seu caminho de propriedade pode ser "Employee.FirstName". Se você estiver associando um controle de itens a uma propriedade que contenha os dependentes de um funcionário, seu caminho de propriedade poderá ser "Employee.Dependents" e o modelo de item do controle de itens cuidará da exibição dos itens em "Dependentes".
Se a fonte de dados for uma coleção, um caminho de propriedade poderá especificar itens na coleção por sua posição ou índice. Por exemplo, "Teams[0].Players", em que o literal "[]" delimita o "0", que especifica o primeiro elemento de uma coleção.
Ao usar uma associação ElementName a um DependencyObject existente, você pode usar propriedades anexadas como parte do caminho da propriedade. Para desambiguar uma propriedade anexada, de modo que o ponto intermediário no nome da propriedade anexada não seja considerado uma etapa de um caminho de propriedade, coloque parênteses ao redor do nome da propriedade anexada qualificado pelo proprietário; por exemplo, (AutomationProperties.Name).
Um objeto intermediário de um caminho de propriedade é armazenado como um objeto PropertyPath em uma representação de tempo de execução, mas, na maioria dos cenários, não será necessário interagir com um objeto PropertyPath no código. Normalmente, você pode especificar as informações de associação necessárias usando XAML.
Para obter mais informações sobre a sintaxe da cadeia de caracteres para um caminho de propriedade, os caminhos de propriedade em recursos de animação e sobre como construir um objeto PropertyPath, consulte Sintaxe de caminho de propriedade.
Propriedades da classe Binding que podem ser definidas com {Binding}
{Binding} é ilustrado com a sintaxe do placeholder bindingProperties porque várias propriedades de leitura e gravação de um Binding podem ser definidas na extensão de marcação. As propriedades podem ser definidas em qualquer ordem com pares devalor= separados por vírgulas. Algumas das propriedades exigem tipos que não têm conversão de tipo; por isso, exigem extensões de marcação específicas, aninhadas em {Binding}.
| Property | Descrição |
|---|---|
| Caminho | Consulte a seção Caminho da propriedade acima. |
| Conversor | Especifica um objeto conversor que é invocado pelo mecanismo de vinculação. O conversor pode ser definido na marcação usando a extensão de marcação {StaticResource} para fazer referência a esse objeto de um dicionário de recursos. |
| ConverterLanguage | Especifica a cultura a ser usada pelo conversor. (Se você estiver configurando Converter.) A cultura é definida por um identificador baseado em padrões. Para obter mais informações, consulte ConverterLanguage |
| Converterparameter | Especifica um parâmetro de conversor que pode ser usado na lógica do conversor. (Se você estiver configurando o Conversor.) A maioria dos conversores usa uma lógica simples que obtém todas as informações necessárias do valor passado para converter e não precisa de um valor ConverterParameter . O parâmetro ConverterParameter destina-se a implementações de conversor mais complexas que têm lógica condicional que remove o que é passado no ConverterParameter. Você pode escrever um conversor que usa valores diferentes de cadeias de caracteres, mas isso é incomum, consulte Comentários no ConverterParameter para obter mais informações. |
| Elementname | Especifica uma fonte de dados fazendo referência a outro elemento no mesmo constructo XAML que tem uma propriedade Name ou atributo x:Name. Isso geralmente é usado para compartilhar valores relacionados ou usar sub-propriedades de um elemento de interface do usuário para fornecer um valor específico para outro elemento, por exemplo, em um modelo de controle XAML. |
| Fallbackvalue | Especifica um valor a ser exibido quando a origem ou o caminho não puder ser resolvido. |
| Modo | Especifica o modo de associação, como um destes valores: "OneTime", "OneWay" ou "TwoWay". Elas correspondem aos nomes constantes da enumeração BindingMode . O padrão é "OneWay". Observe que isso difere do padrão para {x:Bind}, que é "OneTime". |
| RelativeSource | Especifica uma fonte de dados descrevendo a posição da fonte de associação em relação à posição do destino de associação. Isso é usado com mais frequência em associações dentro de modelos de controle XAML. Definindo a extensão de marcação {RelativeSource}. |
| Source | Especifica a fonte de dados do objeto. Dentro da extensão de marcação Binding , a propriedade Source requer uma referência de objeto, como uma referência de extensão de marcação {StaticResource} . Se essa propriedade não for especificada, o contexto de dados em ação especifica a origem. É mais comum não especificar um valor de origem em associações individuais e, em vez disso, depender do DataContext compartilhado para várias associações. Para obter mais informações, consulte DataContext ou Associação de dados detalhadamente. |
| TargetNullValue | Especifica um valor a ser exibido quando o valor de origem é resolvido, mas é explicitamente nulo. |
| UpdateSourceTrigger | Especifica o tempo de vinculação de atualizações de origem. Se não for especificado, o padrão será Default. |
Note
Se você estiver convertendo a marcação de {x:Bind} em {Binding}, lembre-se das diferenças nos valores padrão para a propriedade Mode .
Converter, ConverterLanguage e ConverterLanguage estão todos relacionados ao cenário de conversão de um valor ou tipo da fonte de associação em um tipo ou valor compatível com a propriedade de destino de associação. Para obter mais informações e exemplos, consulte a seção "Conversões de dados" da associação de dados em profundidade.
Note
A partir do Windows 10, versão 1607, a estrutura XAML fornece um conversor booliano interno para Visibilidade. O conversor mapeia true para o valor de enumeração Visible e false para Collapsed para que você possa associar uma propriedade Visibility a um Boolean sem criar um conversor. Para usar o conversor interno, a versão mínima do SDK de destino do aplicativo deve ser 14393 ou posterior. Você não pode usá-lo quando seu aplicativo é direcionado a versões anteriores do Windows 10. Para obter mais informações sobre versões de destino, consulte o código adaptável de versão.
Source, RelativeSource e ElementName especificam uma fonte de associação, portanto, são mutuamente exclusivas.
Dica
Se você precisar especificar uma chave única para um valor, como em Path ou ConverterParameter, preceda-a com uma barra invertida: \{. Como alternativa, coloque a cadeia de caracteres inteira que contém as chaves que precisam de escape em um conjunto de aspas secundárias, por exemplo ConverterParameter='{Mix}'.
Exemplos
<!-- binding a UI element to a view model -->
<Page ... >
<Page.DataContext>
<local:BookstoreViewModel/>
</Page.DataContext>
<GridView ItemsSource="{Binding BookSkus}" SelectedItem="{Binding SelectedBookSku, Mode=TwoWay}" ... />
</Page>
<!-- binding a UI element to another UI element -->
<Page ... >
<Page.Resources>
<local:S2Formatter x:Key="GradeConverter"/>
</Page.Resources>
<Slider x:Name="sliderValueConverter" ... />
<TextBox Text="{Binding Path=Value, ElementName=sliderValueConverter,
Mode=OneWay,
Converter={StaticResource GradeConverter}}"/>
</Page>
O segundo exemplo define quatro propriedades diferentes de Binding: ElementName, Path, Mode e Converter.
Nesse caso, o caminho é mostrado explicitamente nomeado como uma propriedade Binding . O Path é avaliado como uma origem de vinculação de dados que é outro objeto na mesma árvore de objetos em tempo de execução, um Slider chamado sliderValueConverter.
Observe como o valor da propriedade Converter utiliza outra extensão de marcação, a extensão de marcação {StaticResource}, de modo que há duas extensões de marcação aninhadas aqui. O interno é avaliado primeiro, de modo que, depois que o recurso é obtido, há um IValueConverter prático (uma classe personalizada que é instanciada pelo local:S2Formatter elemento em recursos) que a associação pode usar.
Suporte a ferramentas
Microsoft IntelliSense no Microsoft Visual Studio exibe as propriedades do contexto de dados ao criar {Binding} no editor de marcação XAML. Assim que você digitar "{Binding", as propriedades do contexto de dados apropriadas para Path serão exibidas no menu suspenso. O IntelliSense também auxilia com as outras propriedades de Binding. Para que isso funcione, você deve ter definido na página de marcação o contexto de dados ou o contexto de dados em tempo de design. Go To Definition (F12) também funciona com {Binding}. Como alternativa, você pode usar a caixa de diálogo de associação de dados.
Windows developer