Compartilhar via


Como: Create and Bind to an ObservableCollection

Esse exemplo mostra como criar e ligar a uma coleçao que deriva da classe ObservableCollection<T>, que é uma classe de coleção que oferece notificações quando itens são acrescentados ou removidos.

Exemplo

O código a seguir mostra uma implementação de uma coleção NameList.

Public Class NameList
    Inherits ObservableCollection(Of PersonName)

    ' Methods
    Public Sub New()
        MyBase.Add(New PersonName("Willa", "Cather"))
        MyBase.Add(New PersonName("Isak", "Dinesen"))
        MyBase.Add(New PersonName("Victor", "Hugo"))
        MyBase.Add(New PersonName("Jules", "Verne"))
    End Sub

End Class

Public Class PersonName
    ' Methods
    Public Sub New(ByVal first As String, ByVal last As String)
        Me._firstName = first
        Me._lastName = last
    End Sub


    ' Properties
    Public Property FirstName() As String
        Get
            Return Me._firstName
        End Get
        Set(ByVal value As String)
            Me._firstName = value
        End Set
    End Property

    Public Property LastName() As String
        Get
            Return Me._lastName
        End Get
        Set(ByVal value As String)
            Me._lastName = value
        End Set
    End Property


    ' Fields
    Private _firstName As String
    Private _lastName As String
End Class
public class NameList : ObservableCollection<PersonName>
{
    public NameList() : base()
    {
        Add(new PersonName("Willa", "Cather"));
        Add(new PersonName("Isak", "Dinesen"));
        Add(new PersonName("Victor", "Hugo"));
        Add(new PersonName("Jules", "Verne"));
    }
  }

  public class PersonName
  {
      private string firstName;
      private string lastName;

      public PersonName(string first, string last)
      {
          this.firstName = first;
          this.lastName = last;
      }

      public string FirstName
      {
          get { return firstName; }
          set { firstName = value; }
      }

      public string LastName
      {
          get { return lastName; }
          set { lastName = value; }
      }
  }

Você pode tornar a coleção disponível para ligação da mesma maneira como você faria com outros objetos common language runtime (CLR), tal como descrito em Como: Make Data Available for Binding in XAML. Por exemplo, você pode instanciar a coleção em XAML e especificar a coleção como um recurso, como mostrado aqui:

<Window
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:c="clr-namespace:SDKSample"
  x:Class="SDKSample.Window1"
  Width="400"
  Height="280"
  Title="MultiBinding Sample">
    
  <Window.Resources>
    <c:NameList x:Key="NameListData"/>


...


</Window.Resources>

Você pode então ligar à coleção:

<ListBox Width="200"
         ItemsSource="{Binding Source={StaticResource NameListData}}"
         ItemTemplate="{StaticResource NameItemTemplate}"
         IsSynchronizedWithCurrentItem="True"/>

A definição do NameItemTemplate não é mostrada aqui. For the complete sample, see Implementando parametrizado MultiBinding exemplo.

ObservaçãoObservação:

Objetos da sua coleção devem satisfazer requisitos descritos na Visão geral sobre associação de fontes. Em particular, se você estiver utilizando OneWay ou TwoWay (por exemplo, você quer que seu UI atualize quando as propriedades da origem mudarem dinamicamente), você deve implementar um mecanismo adequado de notificação de mudança de propriedade tal como a interface INotifyPropertyChanged.

Para mais informações consulte a seção de Ligando a Coleções em Revisão de Associação de Dados.

Consulte também

Tarefas

Mostrar cores do sistema usando o exemplo de serviços de dados

VinculParar Para um exemplo de coleção

Como: Classificar dados na visualização

Como: Filtrar dados em um modo de exibição

Como: Ordenar e Agrupar Dados usando um modo de exibição em XAML

Conceitos

Revisão de Associação de Dados

Outros recursos

Exemplos de ligação de dados

Data Binding How-to Topics