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.
Observação
Um novo mecanismo de associação está disponível para o Windows 10, que é otimizado para desempenho e produtividade do desenvolvedor. Consulte a extensão de marcação {x:Bind} .
Observação
Para obter informações gerais sobre como usar a associação de dados em seu aplicativo com {Binding} (e para uma comparação completa entre {x:Bind} e {Binding}), consulte Associação de dados em profundidade.
A extensão de marcação {Binding} é usada para vincular propriedades de controles a valores provenientes de uma fonte de dados, como por exemplo o código. A extensão de marcação {Binding} é convertida no momento de carregamento XAML em uma instância da classe Binding. Esse objeto de vinculação obtém um valor de uma propriedade em uma fonte de dados e o transfere para a propriedade no 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. Ele também pode ser opcionalmente configurado para enviar alterações do valor de controle de volta para a 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 propriedades de dependência: visão geral.
{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}" .../>
Prazo | Descrição |
---|---|
propertyPath | Uma cadeia de caracteres que especifica o caminho da propriedade para a vinculação. Mais informações estão na seção caminho de propriedade abaixo. |
propriedadesDeLigação |
propName=valor[, propName=valor]* 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 {Binding} seção 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, que é uma cadeia de caracteres que é avaliada como uma propriedade ou sub-propriedade de seu tipo personalizado ou um tipo de estrutura. 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 sucessivamente as 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 primeiro nome de um objeto 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 "[]" envolve o "0" que especifica o primeiro item em uma coleção.
Ao usar uma associação ElementName a um DependencyObjectexistente, você pode usar propriedades associadas como parte do caminho da propriedade. Para desambiguar uma propriedade anexada para que o ponto intermediário no nome da propriedade anexada não seja considerado uma etapa em um caminho de propriedade, coloque parênteses em torno do nome da propriedade anexada qualificada pelo proprietário; por exemplo, (AutomationProperties.Name)
.
Um objeto intermediário de caminho de propriedade é armazenado como um objeto PropertyPath em uma representação em tempo de execução, mas a maioria dos cenários não precisará 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, caminhos de propriedade em áreas de funcionalidades de animação, e a construção de um objeto PropertyPath, consulte a sintaxe do caminho de propriedade em .
Propriedades da classe Binding que podem ser definidas com {Binding}
{Binding} é ilustrado com a sintaxe de espaço reservado bindingProperties porque várias propriedades de leitura/gravação de um Binding podem ser configuradas na extensão de marcação. As propriedades podem ser definidas em qualquer ordem com pares propName=valor separados por vírgulas. Como algumas propriedades exigem tipos que não têm uma conversão de tipo, elas precisam de extensões de marcação próprias delas, aninhadas no {Binding}.
Propriedade | Descrição |
---|---|
Caminho | Consulte a seção caminho da propriedade acima. |
Conversor | Especifica um objeto conversor que é chamado pelo motor de ligaçã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 definindo Converter.) A cultura é definida como 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 definindo Converter.) 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 é para implementações de conversor mais complexas que têm lógica condicional que remove o que é passado em ConverterParameter. Você pode escrever um conversor que usa valores diferentes de cadeias de caracteres, mas isso é incomum, consulte Comentários em 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". Estas 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}. |
Fonte | Especifica a fonte de dados do objeto. Na extensão de marcação |
ValorNuloAlvo | Especifica um valor a ser exibido quando o valor de origem é resolvido, mas é explicitamente nulo . |
|
Especifica o tempo de vinculação de atualizações de origem. Se não for especificado, o padrão é Default. |
Observação Se você estiver convertendo a marcação de {x:Bind} para {Binding}, lembre-se das diferenças nos valores padrão da 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 da vinculação. Para obter mais informações e exemplos, consulte a seção "Conversões de dados" em "Vinculação de dados em profundidade" .
Observação
A partir do Windows 10, versão 1607, a estrutura XAML fornece um conversor Booleano incorporado para Visibilidade. O conversor mapeia verdadeiro para o valor de enumeração Visível e falso para Colapsado, para que você possa associar uma propriedade Visibility a um booleano 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 código de versão adaptável.
de origem, RelativeSourcee ElementName especificam uma fonte de associação, portanto, são mutuamente exclusivas.
Dica Se precisar especificar uma chave ({) única para um valor, como em Caminho 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ária, 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 diferentes propriedades de ligação: ElementName, Path, Mode e Converter.
Path nesse caso é mostrado explicitamente mencionado como uma propriedade de Binding. O caminho
Observe como o valor da propriedade Converter usa outra extensão de marcação, a extensão de marcação {StaticResource}, de modo que há aqui o uso aninhado de duas extensões de marcação. O elemento interno é avaliado primeiro, de modo que, depois que o recurso é obtido, há um IValueConverter prático (uma classe personalizada instanciada pelo elemento local:S2Formatter
em recursos) que a vinculação pode usar.
Suporte a ferramentas
O 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 de contexto de dados apropriadas para Path são exibidas na lista suspensa. O IntelliSense também auxilia nas outras propriedades do Binding. Para que isso funcione, é necessário que o contexto de dados ou o contexto de dados em tempo de design esteja definido na página de marcação. Ir para Definição (F12) também funciona com {Binding}. Como alternativa, você pode usar a caixa de diálogo de associação de dados.