Procedura: creare ed eseguire l'associazione a una classe ObservableCollection
In questo esempio viene illustrato come creare ed eseguire l'associazione a un insieme che deriva dalla classe ObservableCollection<T>, ovvero una classe di insiemi che fornisce notifiche al momento dell'aggiunta o della rimozione di elementi.
Esempio
Nell'esempio riportato di seguito viene illustrata l'implementazione di un insieme 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; }
}
}
È possibile rendere disponibile l'insieme per l'associazione in modo analogo a quello adottato con altri oggetti common language runtime (CLR), come descritto in Procedura: rendere i dati disponibili per l'associazione in XAML. Ad esempio, è possibile creare un'istanza dell'insieme in XAML e specificare l'insieme come risorsa, come illustrato di seguito:
<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>
È quindi possibile eseguire l'associazione all'insieme:
<ListBox Width="200"
ItemsSource="{Binding Source={StaticResource NameListData}}"
ItemTemplate="{StaticResource NameItemTemplate}"
IsSynchronizedWithCurrentItem="True"/>
La definizione di NameItemTemplate non viene illustrata qui.
Nota |
---|
Gli oggetti nell'insieme devono soddisfare i requisiti descritti in Cenni preliminari sulle origini di associazione.In particolare, se si utilizza OneWay o TwoWay (ad esempio, per aggiornare l'UI quando le proprietà di origine vengono modificate dinamicamente), è necessario implementare un meccanismo di notifica adeguato per le proprietà modificate, ad esempio l'interfaccia INotifyPropertyChanged. |
Per ulteriori informazioni, vedere la sezione relativa all'associazione agli insiemi in Cenni preliminari sull'associazione dati.
Vedere anche
Attività
Procedura: ordinare i dati in una visualizzazione
Procedura: filtrare i dati in una visualizzazione
Procedura: ordinare e raggruppare i dati tramite una visualizzazione di XAML
Concetti
Cenni preliminari sull'associazione dati