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çã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