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.
Das ListView Steuerelement stellt die Infrastruktur bereit, um eine Reihe von Datenelementen in einem anderen Layout oder einer anderen Ansicht anzuzeigen. Beispielsweise kann ein Benutzer Datenelemente in einer Tabelle anzeigen und seine Spalten sortieren.
Hinweis
Die typen, auf die in diesem Artikel verwiesen wird, sind im Codeverweisabschnitt verfügbar.
Was ist eine ListView?
Die ListView wird von ListBox abgeleitet. In der Regel sind deren Elemente Mitglieder einer Datensammlung und werden als ListViewItem Objekte dargestellt. A ListViewItem ist ein ContentControl und kann nur ein einzelnes untergeordnetes Element enthalten. Dieses untergeordnete Element kann jedoch ein beliebiges visuelles Element sein.
Definieren eines Ansichtsmodus für eine ListView
Um einen Ansichtsmodus für den Inhalt eines ListView Steuerelements anzugeben, legen Sie die View Eigenschaft fest. Ein Ansichtsmodus, den Windows Presentation Foundation (WPF) bereitstellt, besteht darin GridView, eine Sammlung von Datenelementen in einer Tabelle mit anpassbaren Spalten anzuzeigen.
Das folgende Beispiel zeigt, wie Sie ein GridView für ein ListView-Steuerelement definieren, das Mitarbeiterinformationen anzeigt.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
<ListView.View>
<GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information">
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}" Width="100">
<GridViewColumnHeader>Last Name
<GridViewColumnHeader.ContextMenu>
<ContextMenu MenuItem.Click="LastNameCM_Click" Name="LastNameCM">
<MenuItem Header="Ascending" />
<MenuItem Header="Descending" />
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=EmployeeNumber}" Header="Employee No." Width="100"/>
</GridView>
</ListView.View>
</ListView>
Die folgende Abbildung zeigt, wie die Daten für das vorherige Beispiel angezeigt werden.
Sie können einen benutzerdefinierten Ansichtsmodus erstellen, indem Sie eine Klasse definieren, die von der ViewBase Klasse erbt. Die ViewBase Klasse stellt die Infrastruktur bereit, die Sie zum Erstellen einer benutzerdefinierten Ansicht benötigen. Weitere Informationen zum Erstellen einer benutzerdefinierten Ansicht finden Sie unter Create a Custom View Mode for a ListView.
Binden von Daten an eine ListView-Liste
Verwenden Sie die Eigenschaften Items und ItemsSource, um Elemente für ein ListView Steuerelement anzugeben. Im folgenden Beispiel wird die Eigenschaft auf eine Datensammlung namens ItemsSource festgelegt.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
In einem GridView binden GridViewColumn Objekte an angegebene Datenfelder. Im folgenden Beispiel wird ein Objekt an ein GridViewColumn Datenfeld gebunden, indem eine Binding für die DisplayMemberBinding Eigenschaft angegeben wird.
GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
Dim gvc1 As New GridViewColumn()
gvc1.DisplayMemberBinding = New Binding("FirstName")
gvc1.Header = "FirstName"
gvc1.Width = 100
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
Sie können auch ein Binding als Teil einer DataTemplate Definition angeben, die Sie verwenden, um die Zellen in einer Spalte zu gestalten. Im folgenden Beispiel setzt die als DataTemplate identifizierte ResourceKey das Binding für ein GridViewColumn. Beachten Sie, dass in diesem Beispiel DisplayMemberBinding nicht definiert wird, da es Vorrang vor CellTemplate hat.
<DataTemplate x:Key="myCellTemplateMonth">
<DockPanel>
<TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
<TextBlock.Text>
<Binding Path="Month"/>
</TextBlock.Text>
</TextBlock>
</DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
CellTemplate="{StaticResource myCellTemplateMonth}"/>
Formatieren einer ListView, die eine GridView implementiert
Das ListView Steuerelement enthält ListViewItem Objekte, die die angezeigten Datenelemente darstellen. Sie können die folgenden Eigenschaften verwenden, um den Inhalt und den Stil von Datenelementen zu definieren:
Verwenden Sie im ListView-Steuerelement die Eigenschaften ItemTemplate, ItemTemplateSelector und ItemContainerStyle.
Verwenden Sie im ListViewItem Steuerelement die ContentTemplate und ContentTemplateSelector Eigenschaften.
Um Ausrichtungsprobleme zwischen Zellen in einem GridViewZu vermeiden, verwenden Sie nicht die ItemContainerStyle Zum Festlegen von Eigenschaften oder zum Hinzufügen von Inhalten, die sich auf die Breite eines Elements in einem ListViewElement auswirken. Ein Ausrichtungsproblem kann beispielsweise auftreten, wenn Sie die Margin Eigenschaft in der ItemContainerStyle festlegen. Wenn Sie Eigenschaften angeben oder Inhalte definieren möchten, die sich auf die Breite der Elemente in einem GridView auswirken, verwenden Sie die Eigenschaften der GridView Klasse und der zugehörigen Klassen, wie GridViewColumn.
Weitere Informationen zur Verwendung GridView und den unterstützenden Klassen finden Sie unter GridView Overview.
Wenn Sie ein ItemContainerStyle für ein Steuerelement ListView definieren und auch ein ItemTemplate definieren, müssen Sie ein ContentPresenter in den Stil einfügen, damit das ItemTemplate ordnungsgemäß funktioniert.
Verwenden Sie die Eigenschaften HorizontalContentAlignment und VerticalContentAlignment nicht für ListView-Inhalte, die von einem GridView angezeigt werden. Um die Ausrichtung des Inhalts in einer Spalte eines GridView festzulegen, definieren Sie ein CellTemplate.
Teilen des gleichen Anzeige-Modus
Zwei ListView Steuerelemente können denselben Ansichtsmodus nicht gleichzeitig verwenden. Wenn Sie versuchen, denselben Ansichtsmodus mit mehreren ListView Steuerelementen zu verwenden, tritt eine Ausnahme auf.
Um einen Ansichtsmodus anzugeben, der von mehreren ListView gleichzeitig verwendet werden kann, verwenden Sie Vorlagen oder Formatvorlagen.
Erstellen eines benutzerdefinierten Ansichtsmodus
Von der abstrakten Klasse GridView abgeleitete Ansichten wie ViewBase bieten die Werkzeuge zum Anzeigen von Datenobjekten, die als ListViewItem Objekte dargestellt werden.
Codeverweis
Auf die folgenden Objekte wird in diesem Artikel verwiesen:
EmployeeInfoDataSource
Datensammlung. Wenn Sie Visual Basic .NET verwenden, wird dasWindow
-Element etwas anders deklariert als im Beispielcode gezeigt.<Window x:Class="SDKSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="OnLoad" xmlns:ds="clr-namespace:SDKSample"> <Window.Resources> <ObjectDataProvider x:Key="EmployeeInfoDataSource" ObjectType="{x:Type ds:myEmployees}" /> </Window.Resources>
EmployeeInfo
klasse, die als Typ für dieEmployeeInfoDataSource
Datensammlung verwendet wird.public class EmployeeInfo { private string _firstName; private string _lastName; private string _employeeNumber; public string FirstName { get {return _firstName;} set {_firstName = value;} } public string LastName { get {return _lastName;} set {_lastName = value;} } public string EmployeeNumber { get {return _employeeNumber;} set {_employeeNumber = value;} } public EmployeeInfo(string firstname, string lastname, string empnumber) { _firstName = firstname; _lastName = lastname; _employeeNumber = empnumber; } }
Public Class EmployeeInfo Private _firstName As String Private _lastName As String Private _employeeNumber As String Public Property FirstName() As String Get Return _firstName End Get Set(ByVal value As String) _firstName = value End Set End Property Public Property LastName() As String Get Return _lastName End Get Set(ByVal value As String) _lastName = value End Set End Property Public Property EmployeeNumber() As String Get Return _employeeNumber End Get Set(ByVal value As String) _employeeNumber = value End Set End Property Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal empnumber As String) _firstName = firstname _lastName = lastname _employeeNumber = empnumber End Sub End Class
Siehe auch
.NET Desktop feedback