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.
Este artigo apresenta os recursos de associação de dados dinâmicos no System.Xml.Linq namespace. Esses recursos podem ser usados como uma fonte de dados para elementos de interface do usuário em aplicativos do WPF (Windows Presentation Foundation). Esse cenário se baseia em propriedades dinâmicas especiais de System.Xml.Linq.XAttribute e System.Xml.Linq.XElement.
XAML e LINQ to XML
A XAML (Extensible Application Markup Language) é um dialeto XML criado pela Microsoft para dar suporte a tecnologias .NET. Ele é usado no WPF para representar elementos de interface do usuário e recursos relacionados, como eventos e associação de dados. No Windows Workflow Foundation, o XAML é usado para representar a estrutura do programa, como controle de programa (fluxos de trabalho). O XAML permite que os aspectos declarativos de uma tecnologia sejam separados do código processual relacionado que define o comportamento mais individualizado de um programa.
Há duas maneiras amplas de O XAML e LINQ to XML interagirem:
Como os arquivos XAML são XML bem formados, eles podem ser consultados e manipulados por meio de tecnologias XML, como LINQ to XML.
Como as consultas LINQ to XML representam uma fonte de dados, essas consultas podem ser usadas como uma fonte de dados para associação de dados para elementos da interface do usuário do WPF.
Esta documentação descreve o segundo cenário.
Associação de dados no Windows Presentation Foundation
A associação de dados do WPF permite que um elemento de interface do usuário associe uma de suas propriedades a uma fonte de dados. Um exemplo simples disso é um Label cujo texto apresenta o valor de uma propriedade pública em um objeto definido pelo usuário. A associação de dados do WPF depende dos seguintes componentes:
| Componente | Descrição |
|---|---|
| Alvo de vinculação | O elemento de interface do usuário a ser associado à fonte de dados. Elementos visuais no WPF são derivados da UIElement classe. |
| Propriedade de destino | A propriedade de dependência do destino de associação que reflete o valor da fonte de associação de dados. As propriedades de dependência são diretamente compatíveis com a DependencyObject classe, da qual UIElement deriva. |
| Fonte de vinculação | O objeto de origem de um ou mais valores fornecidos para a apresentação do elemento da interface do usuário. O WPF dá suporte automaticamente aos seguintes tipos como fontes de associação: objetos CLR, objetos de dados ADO.NET, dados XML (de XPath ou LINQ a consultas XML) ou outro DependencyObject. |
| Caminho de origem | A propriedade da fonte de associação que se traduz em o valor ou conjunto de valores a serem vinculados. |
Uma propriedade de dependência é um conceito específico do WPF que representa uma propriedade computada dinamicamente de um elemento de interface do usuário. Por exemplo, as propriedades de dependência geralmente têm valores padrão ou valores fornecidos por um elemento pai. Essas propriedades especiais são apoiadas por instâncias da DependencyProperty classe (e não campos como com propriedades padrão). Para obter mais informações, consulte Visão geral das propriedades de dependência.
Associação dinâmica de dados no WPF
Por padrão, a associação de dados ocorre somente quando o elemento de interface do usuário de destino é inicializado. Isso é chamado de associação única. Para a maioria das finalidades, isso é insuficiente; normalmente, uma solução de associação de dados exige que as alterações sejam propagadas dinamicamente em tempo de execução usando um dos seguintes:
A associação unidirecional faz com que as alterações de um lado sejam propagadas automaticamente. Geralmente, as alterações na origem são refletidas no destino, mas o inverso às vezes pode ser útil.
Na associação bidirecional , as alterações na origem são propagadas automaticamente para o destino e as alterações no destino são propagadas automaticamente para a origem.
Para que a associação unidirecional ou bidirecional ocorra, a origem deve implementar um mecanismo de notificação de alteração, por exemplo, implementando a INotifyPropertyChanged interface ou usando um padrão PropertyNameChanged para cada propriedade com suporte.
Para obter mais informações sobre a associação de dados no WPF, consulte Associação de Dados (WPF).
Propriedades dinâmicas em classes LINQ to XML
A maioria das classes LINQ to XML não se qualifica como fontes de dados dinâmicas do WPF adequadas. Algumas das informações mais úteis estão disponíveis apenas por meio de métodos, não propriedades e propriedades nessas classes não implementam notificações de alteração. Para dar suporte à associação de dados do WPF, LINQ to XML expõe um conjunto de propriedades dinâmicas.
Essas propriedades dinâmicas são propriedades especiais em tempo de execução que duplicam a funcionalidade de métodos e propriedades existentes nas classes XAttribute e XElement. Elas foram adicionadas a essas classes apenas para permitir que elas atuem como fontes de dados dinâmicas para o WPF. Para atender a essa necessidade, todas essas propriedades dinâmicas implementam notificações de alteração. Uma referência detalhada para essas propriedades dinâmicas é fornecida na próxima seção, LINQ to XML Dynamic Properties.
Observação
Muitas das propriedades públicas padrão, encontradas nas várias classes no System.Xml.Linq namespace, podem ser usadas para associação de dados únicos. No entanto, lembre-se de que nem a origem nem o destino serão atualizados dinamicamente nesse esquema.
Acessar propriedades dinâmicas
As propriedades dinâmicas nas classes XAttribute e XElement não podem ser acessadas como propriedades comuns. Por exemplo, em linguagens em conformidade com CLR, como C#, elas não podem ser:
Acessado diretamente no momento da compilação. As propriedades dinâmicas são invisíveis para o compilador e para o IntelliSense do Visual Studio.
Descoberto ou acessado durante a execução usando a reflexão do .NET. Mesmo em tempo de execução, elas não são propriedades no sentido CLR básico.
No C#, as propriedades dinâmicas só podem ser acessadas em tempo de execução por meio de instalações fornecidas pelo System.ComponentModel namespace.
Por outro lado, em uma fonte de XML, propriedades dinâmicas podem ser acessadas por meio de uma notação simples na seguinte forma:
<object>.<dynamic-property>
As propriedades dinâmicas dessas duas classes são resolvidas para um valor que pode ser usado diretamente ou para um indexador que deve ser fornecido com um índice para obter o valor resultante ou a coleção de valores. A última sintaxe assume o formulário:
<object>.<dynamic-property>[<index-value>]
Para obter mais informações, consulte LinQ to XML Dynamic Properties.
Para implementar a associação dinâmica do WPF, as propriedades dinâmicas serão usadas com os recursos fornecidos pelo namespace System.Windows.Data, especialmente a classe Binding.
Consulte também
.NET Desktop feedback