Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird gezeigt, wie Sie eine Auflistung erstellen und binden, die von der ObservableCollection<T> Klasse abgeleitet ist. Dabei handelt es sich um eine Sammlungsklasse, die Benachrichtigungen bereitstellt, wenn Elemente hinzugefügt oder entfernt werden.
Beispiel
Das folgende Beispiel zeigt die Implementierung einer NameList
Auflistung:
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; }
}
}
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
Sie können die Sammlung für die Bindung auf die gleiche Weise wie bei anderen CLR-Objekten (Common Language Runtime) verfügbar machen, wie unter "Daten verfügbar für die Bindung in XAML" beschrieben. Sie können beispielsweise die Auflistung in XAML instanziieren und die Sammlung als Ressource angeben, wie hier gezeigt:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://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>
Anschließend können Sie eine Bindung an die Sammlung herstellen:
<ListBox Width="200"
ItemsSource="{Binding Source={StaticResource NameListData}}"
ItemTemplate="{StaticResource NameItemTemplate}"
IsSynchronizedWithCurrentItem="True"/>
Die Definition von NameItemTemplate
ist hier nicht dargestellt.
Hinweis
Die Objekte in Ihrer Auflistung müssen die anforderungen erfüllen, die in der Übersicht über Bindungsquellen beschrieben sind. Insbesondere wenn Sie OneWay oder TwoWay verwenden (z. B. wenn Sie möchten, dass Ihre Benutzeroberfläche aktualisiert wird, sobald sich die Eigenschaften der Quelle dynamisch ändern), müssen Sie einen geeigneten Benachrichtigungsmechanismus für Änderungen an Eigenschaften, wie beispielsweise die INotifyPropertyChanged Schnittstelle, implementieren.
Weitere Informationen finden Sie im Abschnitt "Bindung an Sammlungen" in der Übersicht über die Datenbindung.
Siehe auch
.NET Desktop feedback