Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Visão geral das fontes de associação

Na vinculação de dados, o a origem de ligação objeto refere-se ao obter os dados de objeto. Este tópico discute os tipos de objetos que você pode usar como a origem da ligação.

Este tópico contém as seções a seguir.

Windows Presentation Foundation (WPF)ligação de dados suporta os seguintes fonte de ligação tipos:

Fonte de associação

Descrição

Objetos do common language runtime (CLR)

Você pode vincular a propriedades públicas, subpropriedades, bem como os indexadores, de qualquer common language runtime (CLR) objeto. O mecanismo de associação usa reflexão do CLR para obter os valores das propriedades. Como alternativa, os objetos que implementam ICustomTypeDescriptor ou têm um TypeDescriptionProvider registrado também funcionam com o mecanismo de associação.

Para obter mais informações sobre como implementar uma classe que pode servir como uma fonte de ligação, consulte a implementação de uma classe para a origem da ligação posteriormente neste tópico.

objetos dinâmicos

Você pode vincular propriedades disponíveis e os indexadores de um objeto que implementa o IDynamicMetaObjectProvider interface. Se você puder acessar o membro no código, você pode vincular a ele. Por exemplo, se um objeto dinâmico permite que você acessar um membro no código por meio de someObjet.AProperty, você pode vincular a ele, definindo o caminho de ligação para AProperty.

Objetos do ADO.NET

Você pode vincular a ADO.NET objetos, tais como DataTable. O ADO.NETDataView implementa o IBindingList interface, que fornece notificações de alteração que ouve o mecanismo de ligação. 

Objetos do XML

Você pode executar e fazer associação a consultas XPath em um XmlNode, XmlDocument ou XmlElement. Uma maneira conveniente para acessar dados XML que são fonte de associação em marcação é usar um objeto XmlDataProvider. Para obter mais informações, consulte Como: Bind to XML Data Using an XMLDataProvider and XPath Queries.

Você também pode vincular a um XElement ou XDocument, ou ligar os resultados de consultas executadas em objetos desses tipos usando LINQ to XML. Uma maneira conveniente de usar LINQ to XML para acessar os dados XML que é a origem da ligação na marcação é usar um ObjectDataProvider objeto. Para obter mais informações, consulte Como: Ligar a XDocument, XElement ou LINQ para resultados de consulta XML.

Objetos do DependencyObject

Você pode fazer associação a propriedades de dependência de qualquer DependencyObject. Para um exemplo, consulte Como associar as propriedades de dois controles.

Você pode criar suas próprias fontes de ligação. Esta seção discute as coisas que você precisa saber se você estiver implementando uma classe para servir como uma fonte de ligação.

ms743643.collapse_all(pt-br,VS.110).gifFornecer notificações de alteração

Se você estiver usando uma OneWay ou TwoWay vinculação (porque você deseja que seu UI para atualizar quando as propriedades de fonte de ligação alteram dinamicamente), você deve implementar um mecanismo de notificação adequada de propriedade alterada. O mecanismo recomendado é para o CLR ou uma classe dinâmica para implementar a INotifyPropertyChanged interface. Para obter mais informações, consulte Como implementar notificação de alteração da propriedade.

Se você criar um CLR o objeto que não implementa INotifyPropertyChanged, e em seguida, você deverá providenciar seu próprio sistema de notificação certificar-se de que os dados usados em uma vinculação permaneçam atuais. Você pode fornecer notificações de alteração dando suporte ao padrão PropertyChanged para cada propriedade para qual você deseja alertas de modificações. Para oferecer suporte a este padrão, defina um evento PropertyNameChanged para cada propriedade, onde PropertyName é o nome da propriedade. Você lança o evento sempre que a propriedade for alterada.

Se sua fonte de vinculação implementa um desses mecanismos de notificação, apontar as atualizações ocorrem automaticamente. Se por algum motivo, a origem da ligação não fornece a propriedade adequada alterado notificações, você tem a opção de usar o UpdateTarget método para atualizar a propriedade target explicitamente.

ms743643.collapse_all(pt-br,VS.110).gifOutras características

A lista a seguir fornece outros pontos importantes a serem observados:

  • Se você desejar criar o objeto em XAML, a classe deve ter um construtor padrão. Em algumas linguagens .NET, como C#, o construtor padrão pode ser criado para você.

  • As propriedades que você use como propriedades de fonte para uma ligação de ligação deve ser propriedades públicas da sua classe. Propriedades da interface explicitamente definidas não podem ser acessadas para fins de vinculação, nem pode propriedades protegidas, privadas, internas ou virtuais que não têm nenhuma implementação base.

  • Você não pode vincular campos públicos.

  • O tipo da propriedade declarado na sua classe é o tipo que é passado para a associação. No entanto, o tipo, por fim, usado pela ligação depende do tipo do o destino de ligação propriedade, não da propriedade de origem da ligação. Se houver uma diferença de tipo, convém escrever um conversor para controlar como a propriedade personalizada é inicialmente passada para a associação. Para obter mais informações, consulte IValueConverter.

Você pode usar um objeto inteiro como uma origem de ligação. Você pode especificar uma fonte de ligação usando o Source ou o DataContext propriedade e forneça uma declaração de ligação em branco: {Binding}. Os cenários em que isso é útil incluem associação a objetos que são do tipo sequência de caracteres, associação a objetos com várias propriedades em que você está interessado, ou associação a uma coleção objetos. Para obter um exemplo de associação a um objeto de coleção inteira, consulte Como usar o padrão de detalhes mestre com dados hierárquicos.

Note que você pode precisar aplicar uma lógica personalizada para que os dados tenham significado para a propriedade alvo associada. A lógica personalizada pode ser na forma de um conversor personalizado (se o conversor de tipos padrão não existir) ou de um DataTemplate. Para obter mais informações sobre conversores, consulte a seção de conversão de dados de Visão geral da vinculação de dados. Para obter mais informações sobre modelos de dados, consulte Visão geral de modelagem dos dados.

Em geral, o objeto que você deseja usar como a origem da ligação é uma coleção de objetos personalizados. Cada objeto serve como fonte para uma instância de uma ligação repetida. Por exemplo, você pode ter um CustomerOrders coleção que consiste em CustomerOrder objetos, onde o seu aplicativo itera sobre a coleção para determinar quantos pedidos existem e os dados contidos em cada um.

Você pode enumerar sobre qualquer coleção que implemente a interface IEnumerable. Entretanto, para definir associações dinâmicas para que inserção e deleção na coleção atualizem a UI automaticamente, a coleção deve implementar a interface INotifyCollectionChanged. Esta interface expõe um evento que deve ser levantado sempre que a coleção subjacente é modificada.

O ObservableCollection<T> classe é uma implementação interna de uma coleção de dados que expõe a INotifyCollectionChanged interface. Os objetos de dados individuais dentro da coleção devem satisfazer os requisitos descritos nas seções anteriores. Para um exemplo, consulte Como criar e associar a um ObservableCollection. Antes de implementar sua própria coleção, considere usar ObservableCollection<T> ou uma das classes de coleção existentes, como uma List<T>, Collection<T>, e BindingList<T>, entre muitas outras.

Nunca, o WPF é ligado diretamente a uma coleção. Se você especificar uma coleção como uma fonte de ligação, o WPF realmente vincula ao modo de exibição da coleção padrão. Para obter informações sobre modos de exibição padrão, consulte Visão geral da vinculação de dados.

Se você tiver um cenário avançado e quiser implementar sua própria coleção, considere o uso de IList interface. IList Fornece um conjunto de não-genérica de objetos que podem ser acessados individualmente por índice, que pode melhorar o desempenho.

Quando vinculação de dados, você deve considerar o nível de confiança do aplicativo. A tabela a seguir resume com que tipos de propriedade pode-se fazer associação em um aplicativo que está sendo executado em confiança parcial ou confiança total:

Tipo de propriedade

(todos os modificadores de acesso)

Propriedade de objeto dinâmico

Propriedade de objeto dinâmico

Propriedade CLR

Propriedade CLR

Propriedade de dependência

Propriedade de dependência

Nível de confiança

Confiança total

Confiança parcial

Confiança total

Confiança parcial

Confiança total

Confiança parcial

Classe pública

Sim

Sim

Sim

Sim

Sim

Sim

Classe não-públicos.

Sim

Não

Sim

Não

Sim

Sim

Esta tabela descreve os seguintes pontos importantes sobre requisitos de permissão em associação de dados:

  • Para CLR propriedades, ligação de dados funcione, desde que o mecanismo de ligação é capaz de acessar a propriedade de origem de ligação usando reflexão. Caso contrário, o mecanismo de associação emite um aviso informando que a propriedade não pode ser encontrada e usa o valor de fallback ou o valor padrão, se ele estiver disponível.

  • Você pode vincular propriedades em objetos dinâmicos que são definidas no tempo de execução ou de tempo de compilação.

  • Você sempre pode fazer associação a propriedades de dependência.

O requisito de permissão para XML a ligação é semelhante. Em uma proteção de confiança parcial, XmlDataProvider falha quando ela não tem permissões para acessar os dados especificados.

Objetos com um tipo anônimo são internos. Você pode vincular às propriedades de tipos anônimos apenas durante a execução em confiança total. Para obter mais informações sobre tipos anônimos, consulte Tipos anônimos (Guia de Programação em C#) ou Tipos anônimos (Visual Basic) (Visual Basic).

Para obter mais informações sobre segurança em confiança parcial, consulte Segurança parcialmente confiável do WPF.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft