Listenansicht und RasteransichtList view and grid view

Mit den meisten Anwendungen können Sätze von Daten, beispielsweise eine Bildergalerie oder ein Satz von E-Mails, bearbeitet und angezeigt werden.Most applications manipulate and display sets of data, such as a gallery of images or a set of email messages. Das XAML-Benutzeroberflächenframework bietet ListView und GridView-Steuerelemente, die das Anzeigen und Bearbeiten von Daten in Ihrer App vereinfachen.The XAML UI framework provides ListView and GridView controls that make it easy to display and manipulate data in your app.

Wichtige APIs: ListView-Klasse, GridView-Klasse, ItemsSource-Eigenschaft, Items-EigenschaftImportant APIs: ListView class, GridView class, ItemsSource property, Items property

Hinweis

ListView und GridView sind beide von der Klasse ListViewBase abgeleitet, sodass sie dieselbe Funktionalität haben, Daten jedoch unterschiedlich anzeigen.ListView and GridView both derive from the ListViewBase class, so they have the same functionality, but display data differently. In diesem Artikel beziehen sich Aussagen zur Listenansicht sowohl auf die ListView- als auch die GridView-Steuerelemente, falls nicht anders angegeben.In this article, when we talk about list view, the info applies to both the ListView and GridView controls unless otherwise specified. Möglicherweise werden Klassen wie ListView oder ListViewItem genannt. Das Präfix List kann jedoch durch Grid für das entsprechende Rastersteuerelement ersetzt werden (GridView oder GridViewItem).We may refer to classes like ListView or ListViewItem, but the List prefix can be replaced with Grid for the corresponding grid equivalent (GridView or GridViewItem).

ListView und GridView bieten viele Vorteile für das Arbeiten mit Sammlungen.ListView and GridView provide many benefits for working with collections. Sie sind einerseits leicht zu implementieren und bieten andererseits eine einfache Benutzeroberfläche, Interaktion und Scrolling, während sie trotzdem leicht anpassbar sind.They are both easy to implement and provide basic UI; interaction; and scrolling while still being easily customizable. ListView und GridView können an vorhandene dynamische Datenquellen gebunden werden, oder es können hart codierte Daten im eigentlichen XAML-Code bzw. im CodeBehind übergeben werden.ListView and GridView can be bound to existing dynamic data sources, or hard-coded data provided in the XAML itself/the code-behind.

Diese beiden Steuerelemente eignen sich für viele Anwendungsfälle, funktionieren aber im Allgemeinen am besten mit Sammlungen, in denen alle Elemente die gleiche Grundstruktur und Darstellung sowie das gleiche Interaktionsverhalten aufweisen – d.h., sie sollten beim Anklicken alle die gleiche Aktion ausführen (einen Link öffnen, navigieren usw).These two controls are flexible to many use cases, but overall work best with collections in which all items should have the same basic structure and appearance, as well as the same interaction behavior - i.e. they should all perform the same action when clicked (open a link, navigate, etc).

Unterschiede zwischen ListView und GridViewDifferences between ListView and GridView

ListViewListView

ListView zeigt Daten vertikal in einer einzelnen Spalte an.The ListView displays data stacked vertically in a single column. ListView eignet sich besser für Elemente, deren Schwerpunkt auf Text liegt, und für Sammlungen, die von oben nach unten gelesen werden sollen (d.h. alphabetisch sortiert sind).ListView works better for items that have text as a focal point, and for collections that are meant to be read top to bottom (i.e. alphabetically ordered). Zu den gängigen Anwendungsfällen für ListView gehören Listen von Nachrichten und Suchergebnissen.A few common use cases for ListView include lists of messages and search results.

Eine Listenansicht mit gruppierten Daten

GridViewGridView

GridView zeigt eine Sammlung von Elementen in Zeilen und Spalten an, für die ein horizontaler Bildlauf durchgeführt werden kann.The GridView presents a collection of items in rows and columns that can scroll vertically. Daten werden horizontal angeordnet, bis die Spalten gefüllt sind. Anschließend wird mit der nächsten Zeile fortgefahren.Data is stacked horizontally until it fills the columns, then continues with the next row. GridView eignet sich besser für Elemente, deren Schwerpunkt Bilder bilden, und für Sammlungen, die von einer Seite zur anderen gelesen werden können oder nicht in einer bestimmten Reihenfolge sortiert sind.GridView works better for items that have images as their focal point, and for collections that can be read from side-to-side or are not sorted in a specific order. Ein gängiger Anwendungsfall für GridView ist ein Foto- oder Produktkatalog.A common use case for GridView is a photo or product gallery.

Beispiel einer Inhaltsbibliothek

Welches Steuerelement sollten Sie verwenden?Which collection control should you use? Ein Vergleich mit ItemsRepeaterA Comparison with ItemsRepeater

ListView und GridView sind Steuerelemente, die sofort einsatzfähig sind und dank eigener integrierter Benutzeroberfläche und Bedienlogik beliebige Sammlungen anzeigen können.ListView and GridView are controls that work out-of-the-box to display any collection, with their own built-in UI and UX. Das ItemsRepeater-Steuerelement wird ebenfalls zum Anzeigen von Sammlungen verwendet, es wurde aber als Baustein zum Erstellen eines benutzerdefinierten Steuerelements erstellt, das genau Ihren Anforderungen an die Benutzeroberfläche entspricht.The ItemsRepeater control also is used to display collections, but was created as a building block for creating a custom control that fits your exact UI needs. Die wichtigsten Unterschiede, die Ihre Wahl des Steuerelements bestimmen sollten, sind unten aufgeführt:The most important differences that should impact which control you end up using are below:

  • ListView und GridView sind funktionsreiche Steuerelemente, die viel bieten und nur wenig Anpassung erfordern.ListView and GridView are feature-rich controls that require little customization but offer plenty. ItemsRepeater ist ein Baustein zum Erstellen Ihres eigenen Layoutsteuerelements und verfügt als solcher nicht über vergleichbare Funktionen und Funktionalität: Sie müssen alle erforderlichen Funktionen oder Interaktionen selbst implementieren.ItemsRepeater is a building block to create your own layout control and does not have the same built in features and functionality - it requires you to implement any necessary features or interactions.
  • ItemsRepeater sollte verwendet werden, wenn Sie eine in hohem Maß benutzerdefinierte Benutzeroberfläche verwenden, die sich mithilfe von ListView oder GridView nicht herstellen lässt, oder wenn Sie eine Datenquelle verwenden, die für jedes Element ein stark unterschiedliches Verhalten erfordert.ItemsRepeater should be used if you have a highly custom UI that you can’t create using ListView or GridView, or if you have a data source that requires highly different behavior for each item.

Weitere Informationen zu ItemsRepeater finden Sie in seinen Richtlinien und den Seiten der API-Dokumentation.Learn more about ItemsRepeater by reading its Guidelines and API Documentation pages.

BeispieleExamples

XAML-SteuerelementekatalogXAML Controls Gallery
XAML controls gallery

Wenn Sie die App XAML-Steuerelementekatalog installiert haben, klicken Sie hier, um die App zu öffnen und ListView oder GridView in Aktion zu sehen.If you have the XAML Controls Gallery app installed, click here to open the app and see the ListView or GridView in action.

Erstellen einer ListView oder GridViewCreate a ListView or GridView

ListView und GridView sind beide ItemsControl-Typen, sie können also eine Sammlung von Elementen beliebigen Typs enthalten.ListView and GridView are both ItemsControl types, so they can contain a collection of items of any type. Eine ListView oder GridView muss über Elemente in ihrer Sammlung Items verfügen, um irgendetwas auf dem Bildschirm darstellen zu können.A ListView or GridView must have items in its Items collection before it can show anything on the screen. Um die Ansicht auszufüllen, können Sie der Sammlung Items direkt Elemente hinzufügen oder die Eigenschaft ItemsSource auf eine Datenquelle festlegen.To populate the view, you can add items directly to the Items collection, or set the ItemsSource property to a data source.

Wichtig

Sie können Items oder ItemsSource zum Ausfüllen der Liste verwenden, jedoch nicht beide zugleich.You can use either Items or ItemsSource to populate the list, but you can't use both at the same time. Wenn Sie die ItemsSource-Eigenschaft festlegen und dann ein Element in XAML hinzufügen, wird das hinzugefügte Element ignoriert.If you set the ItemsSource property and you add an item in XAML, the added item is ignored. Wenn Sie die ItemsSource-Eigenschaft festlegen und der Items-Sammlung ein Element in Code hinzufügen, wird eine Ausnahme ausgelöst.If you set the ItemsSource property and you add an item to the Items collection in code, an exception is thrown.

Viele Beispiele in diesem Artikel füllen der Einfachheit halber die Items-Sammlung direkt aus.Many of the examples in this article populate the Items collection directly for the sake of simplicity. Häufiger stammen die Elemente in einer Liste jedoch aus einer dynamischen Quelle, z. B. einer Liste von Büchern aus einer Onlinedatenbank.However, it's more common for the items in a list to come from a dynamic source, like a list of books from an online database. Verwenden Sie für diesen Zweck die ItemsSource-Eigenschaft.You use the ItemsSource property for this purpose.

Hinzufügen von Elementen zu einer ListView oder GridViewAdd Items to a ListView or GridView

Sie können der Items-Sammlung einer ListView oder GridView Elemente mithilfe von XAML oder Code hinzufügen, was zum gleichen Ergebnis führt.You can add items to the ListView or GridView's Items collection using XAML or code to yield the same result. In der Regel fügen Sie Elemente mithilfe von XAML hinzu, wenn Sie nur über eine geringe Anzahl von Elementen verfügen, die sich nicht ändern und einfach definiert werden können, oder wenn die Elemente zur Laufzeit im Code generiert werden.You typically add items through XAML if you have a small number of items that don't change and are easily defined, or if you generate the items in code at run time.

Methode 1: Hinzufügen von Elementen zur Items-SammlungMethod 1: Add items to the Items Collection

Option 1: Hinzufügen von Elementen mithilfe von XAMLOption 1: Add Items through XAML

<!-- No corresponding C# code is needed for this example. -->

<ListView x:Name="Fruits"> 
   <x:String>Apricot</x:String> 
   <x:String>Banana</x:String> 
   <x:String>Cherry</x:String> 
   <x:String>Orange</x:String> 
   <x:String>Strawberry</x:String> 
</ListView>  

Option 2: Hinzufügen von Elementen mithilfe von C#Option 2: Add Items through C#

C#-Code:C# Code:
// Create a new ListView and add content. 
ListView Fruits = new ListView(); 
Fruits.Items.Add("Apricot"); 
Fruits.Items.Add("Banana"); 
Fruits.Items.Add("Cherry"); 
Fruits.Items.Add("Orange"); 
Fruits.Items.Add("Strawberry");
 
// Add the ListView to a parent container in the visual tree (that you created in the corresponding XAML file).
FruitsPanel.Children.Add(Fruits); 
Entsprechender XAML-Code:Corresponding XAML Code:
<StackPanel Name="FruitsPanel"></StackPanel>

Beide oben aufgeführten Optionen führen zu der gleichen ListView, die unten dargestellt ist:Both of the above options will result in the same ListView, which is shown below:

Eine einfache Listenansicht A simple list view
Methode 2: Hinzufügen von Elementen durch Festlegen der ItemsSource Method 2: Add items by setting the ItemsSource

In der Regel verwenden Sie eine ListView oder GridView, um Daten aus Quellen wie einer Datenbank oder dem Internet anzuzeigen.You typically use a ListView or GridView to display data from a source such as a database or the Internet. Um eine ListView/GridView aus einer Datenquelle zu füllen, legen Sie deren Eigenschaft ItemsSource auf eine Sammlung mit Datenelementen fest.To populate a ListView/GridView from a data source, you set its ItemsSource property to a collection of data items. Diese Methode funktioniert besser, wenn Ihre ListView oder GridView benutzerdefinierte Klassenobjekte enthalten soll, wie in den Beispielen unten dargestellt.This method works better if your ListView or GridView is going to hold custom class objects, as shown in the examples below.

Option 1: Festlegen von ItemsSource in C#Option 1: Set ItemsSource in C#

Dies ist die ItemsSource der Listenansicht im Code, direkt auf eine Instanz einer Sammlung festgelegt.Here, the list view's ItemsSource is set in code directly to an instance of a collection.

C#-Code:C# Code:
// Class defintion should be provided within the namespace being used, outside of any other classes.

this.InitializeComponent();

// Instead of adding hard coded items to an ObservableCollection as shown below, 
//the data could be pulled asynchronously from a database or the internet.
ObservableCollection<Contact> Contacts = new ObservableCollection<Contact>();

// Contact objects are created by providing a first name, last name, and company for the Contact constructor.
// They are then added to the ObservableCollection Contacts.
Contacts.Add(new Contact("John", "Doe", "ABC Printers"));
Contacts.Add(new Contact("Jane", "Doe", "XYZ Refridgerators"));
Contacts.Add(new Contact("Santa", "Claus", "North Pole Toy Factory Inc."));

// Create a new ListView (or GridView) for the UI, add content by setting ItemsSource
ListView ContactsLV = new ListView();
ContactsLV.ItemsSource = Contacts;

// Add the ListView to a parent container in the visual tree (that you created in the corresponding XAML file)
ContactPanel.Children.Add(ContactsLV);
XAML-Code:XAML Code:
<StackPanel x:Name="ContactPanel"></StackPanel>

Option 2: Festlegen von ItemsSource in XAMLOption 2: Set ItemsSource in XAML

Sie können die ItemsSource-Eigenschaft auch an eine Sammlung im XAML-Code binden.You can also bind the ItemsSource property to a collection in the XAML. Hier wird ItemsSource an eine öffentliche Eigenschaft mit dem Namen Contacts gebunden, die die private Datensammlung _contacts der Seite verfügbar macht.Here, the ItemsSource is bound to a public property named Contacts that exposes the Page's private data collection, _contacts.

XAMLXAML

<ListView x:Name="ContactsLV" ItemsSource="{x:Bind Contacts}"/>

C#C#

// Class defintion should be provided within the namespace being used, outside of any other classes.
// These two declarations belong outside of the main page class.
private ObservableCollection<Contact> _contacts = new ObservableCollection<Contact>();

public ObservableCollection<Contact> Contacts
{
    get { return this._contacts; }
}

// This method should be defined within your main page class.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    // Instead of hard coded items, the data could be pulled 
    // asynchronously from a database or the internet.
    Contacts.Add(new Contact("John", "Doe", "ABC Printers"));
    Contacts.Add(new Contact("Jane", "Doe", "XYZ Refridgerators"));
    Contacts.Add(new Contact("Santa", "Claus", "North Pole Toy Factory Inc."));
}

Beide oben aufgeführte Optionen führen zu der gleichen ListView, die unten dargestellt ist.Both of the above options will result in the same ListView, shown below. Die ListView stellt nur die Zeichenfolgendarstellung der einzelnen Elemente dar, da wir keine Datenvorlage bereitgestellt haben.The ListView only shows the string representation of each item because we did not provide a data template.

Eine einfache Listenansicht mit festgelegter ItemsSource

Wichtig

Ohne definierte Datenvorlage werden benutzerdefinierte Klassenobjekte in der ListView lediglich mit ihrem Zeichenfolgenwert dargestellt, wenn für sie eine ToString()-Methode definiert wurde.With no data template defined, custom class objects will only appear in the ListView with their string value if they have a defined ToString() method.

Der nächste Abschnitt befasst sich im Detail mit der ordnungsgemäßen visuellen Darstellung einfacher und benutzerdefinierter Klassenelemente in einer ListView oder GridView.The next section will go into detail on how to visually represent simple and custom class items properly in a ListView or GridView.

Weitere Informationen zur Datenbindung finden Sie unter Übersicht über Datenbindung.For more info about data binding, see Data binding overview.

Hinweis

Wenn Sie gruppierte Daten in der Listenansicht anzeigen müssen, müssen Sie an eine CollectionViewSource binden.If you need to show grouped data in your ListView, you must bind to a CollectionViewSource. Die CollectionViewSource dient als Proxy für die Sammlungsklasse in XAML und ermöglicht die Unterstützung für Gruppierungen.The CollectionViewSource acts as a proxy for the collection class in XAML and enables grouping support. Weitere Informationen finden Sie unter CollectionViewSource.For more info, see CollectionViewSource.

Anpassen der Darstellung Elementen mit einer DatenvorlageCustomizing the look of items with a DataTemplate

Eine Datenvorlage in einer ListView oder GridView definiert, wie die Elemente/Daten visualisiert werden.A data template in a ListView or GridView defines how the items/data are visualized. Datenelemente werden in der ListView standardmäßig als Zeichenfolgendarstellung des Datenobjekts angezeigt, an das sie gebunden sind.By default, a data item is displayed in the ListView as the string representation of the data object it's bound to. Sie können die Zeichenfolgendarstellung einer bestimmten Eigenschaft des Datenelements anzeigen, indem Sie den DisplayMemberPath zur Eigenschaft festlegen.You can show the string representation of a particular property of the data item by setting the DisplayMemberPath to that property.

In der Regel möchten Sie jedoch eine ansprechendere Darstellung Ihrer Daten anzeigen.However, you typically want to show a more rich presentation of your data. Um genau anzugeben, wie Elemente in der ListView/GridView angezeigt werden, erstellen Sie eine DataTemplate.To specify exactly how items in the ListView/GridView are displayed, you create a DataTemplate. Der XAML-Code in der DataTemplate definiert das Layout und die Darstellung von Steuerelementen, die zum Anzeigen eines einzelnen Elements verwendet werden.The XAML in the DataTemplate defines the layout and appearance of controls used to display an individual item. Die Steuerelemente im Layout können an Eigenschaften eines Datenobjekts gebunden werden. Es ist auch möglich, statischen Inhalt intern zu definieren.The controls in the layout can be bound to properties of a data object, or have static content defined inline.

Hinweis

Wenn Sie die x:Bind-Markuperweiterung in DataTemplate verwenden, müssen Sie DataType (x:DataType) für DataTemplate angeben.When you use the x:Bind markup extension in a DataTemplate, you have to specify the DataType (x:DataType) on the DataTemplate.

Einfache ListView-DatenvorlageSimple ListView Data Template

In diesem Beispiel ist das Datenelement eine einfache Zeichenfolge.In this example, the data item is a simple string. Eine DataTemplate wird inline innerhalb der ListView-Definition definiert, um links neben der Zeichenfolge ein Bild einzufügen und die Zeichenfolge blaugrün anzuzeigen.A DataTemplate is defined inline within the ListView definition to add an image to the left of the string, and show the string in teal. Dies ist die gleiche ListView, unter Verwendung von Methode 1 und Option 1 (oben angeführt) erstellt.This is the same ListView created from using Method 1 and Option 1 shown above.

XAMLXAML

<!--No corresponding C# code is needed for this example.-->
<ListView x:Name="FruitsList">
                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="x:String">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="47"/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <Image Source="Assets/placeholder.png" Width="32" Height="32"
                                HorizontalAlignment="Left" VerticalAlignment="Center"/>
                            <TextBlock Text="{x:Bind}" Foreground="Teal" FontSize="14" 
                                Grid.Column="1" VerticalAlignment="Center"/>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
                <x:String>Apricot</x:String>
                <x:String>Banana</x:String>
                <x:String>Cherry</x:String>
                <x:String>Orange</x:String>
                <x:String>Strawberry</x:String>
            </ListView>

So sehen die Datenelemente aus, wenn sie mit dieser Datenvorlage in einer ListView angezeigt werden:Here's what the data items look like when displayed with this data template in a ListView:

Elemente in der ListView mit einer Datenvorlage

ListView-Datenvorlage für benutzerdefinierte KlassenobjekteListView Data Template for Custom Class Objects

In diesem Beispiel ist das Datenelement ein Kontaktobjekt.In this example, the data item is a Contact object. Eine DataTemplate wird inline innerhalb der ListView-Definition definiert, um links neben dem Kontaktnamen und der Firma das Bild des Kontakts einzufügen.A DataTemplate is defined inline within the ListView definition to add the contact image to the left of the Contact name and company. Die ListView wurde mithilfe von Methode 2 und Option 2 erstellt, die oben angeführt sind.This ListView was created by using Method 2 and Option 2 mentioned above.

<ListView x:Name="ContactsLV" ItemsSource="{x:Bind Contacts}">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:Contact">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Image Grid.Column="0" Grid.RowSpan="2" Source="Assets/grey-placeholder.png" Width="32"
                    Height="32" HorizontalAlignment="Center" VerticalAlignment="Center"></Image>
                <TextBlock Grid.Column="1" Text="{x:Bind Name}" Margin="12,6,0,0" 
                    Style="{ThemeResource BaseTextBlockStyle}"/>
                <TextBlock  Grid.Column="1" Grid.Row="1" Text="{x:Bind Company}" Margin="12,0,0,6" 
                    Style="{ThemeResource BodyTextBlockStyle}"/>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

So sehen die Datenelemente aus, wenn sie mithilfe dieser Datenvorlage in einer ListView angezeigt werden:Here's what the data items look like when displayed using this data template in a ListView:

Benutzerdefinierte Klassenelemente in der ListView mit einer Datenvorlage

Datenvorlagen sind der bevorzugte Weg für die Definition des Aussehens Ihrer ListView.Data templates are the primary way you define the look of your ListView. Sie können auch eine erhebliche Auswirkung auf die Leistung haben, wenn Ihre Liste eine große Anzahl von Elementen enthält.They can also have a significant impact on performance if your list holds a large number of items.

Ihre Datenvorlage kann innerhalb der ListView/GridView-Definition inline (oben dargestellt) oder separat in einem Resources-Abschnitt definiert werden.Your data template can be defined inline within the ListView/GridView definition (shown above), or separately in a Resources section. Wenn sie außerhalb der eigentlichen ListView/GridView definiert wird, muss die DataTemplate mit einem x:Key-Attribut versehen und mithilfe dieses Schlüssels der ItemTemplate-Eigenschaft der ListView oder GridView zugewiesen werden.If defined outside of the ListView/GridView itself, the DataTemplate must be given an x:Key attribute and be assigned to the ItemTemplate property of the ListView or GridView using that key.

Weitere Informationen und Beispiele zur Verwendung von Datenvorlagen und Elementcontainern zur Definition des Aussehens von Elementen in Ihrer Liste oder Ihrem Raster finden Sie unter Elementcontainer und Vorlagen.For more info and examples of how to use data templates and item containers to define the look of items in your list or grid, see Item containers and templates.

Ändern des Layouts von ElementenChange the layout of items

Wenn Sie Elemente zu einer ListView oder GridView hinzufügen, bricht das Steuerelement automatisch alle Elemente in einem Elementcontainer um und ordnet anschließend alle Elementcontainer an.When you add items to a ListView or GridView, the control automatically wraps each item in an item container and then lays out all of the item containers. Die Anordnung dieser Elementcontainer ist von ItemsPanel des Steuerelements abhängig.How these item containers are laid out depends on the ItemsPanel of the control.

  • Standardmäßig verwendet ListView ein ItemsStackPanel, das eine vertikale Liste wie diese erzeugt.By default, ListView uses an ItemsStackPanel, which produces a vertical list, like this.

Eine einfache Listenansicht

  • GridView verwendet ein ItemsWrapGrid, das Elemente horizontal hinzufügt, diese anschließend umbricht und einen vertikalen Bildlauf ausführt, wie hier gezeigt.GridView uses an ItemsWrapGrid, which adds items horizontally, and wraps and scrolls vertically, like this.

Eine einfache Rasteransicht

Sie können das Layout von Elementen ändern, indem Sie Eigenschaften im Elementpanel anpassen oder das Standardpanel durch ein anderes Panel ersetzen.You can modify the layout of items by adjusting properties on the items panel, or you can replace the default panel with another panel.

Hinweis

Achten Sie darauf, dass Sie Virtualisierung nicht deaktivieren, wenn Sie ItemsPanel ändern.Be careful to not disable virtualization if you change the ItemsPanel. Sowohl ItemsStackPanel als auch ItemsWrapGrid unterstützen Virtualisierung, damit diese sicher verwendet werden können.Both ItemsStackPanel and ItemsWrapGrid support virtualization, so these are safe to use. Wenn Sie ein anderes Panel verwenden, könnten Sie die Virtualisierung deaktivieren und die Leistung der Listenansicht beeinträchtigen.If you use any other panel, you might disable virtualization and slow the performance of the list view. Weitere Informationen finden Sie in den Artikeln zur Listenansicht unter Leistung.For more info, see the list view articles under Performance.

In diesem Beispiel wird gezeigt, wie eine ListView ihre Elementcontainer in einer horizontalen Liste anordnet, indem die Orientation-Eigenschaft von ItemsStackPanel geändert wird.This example shows how to make a ListView lay out its item containers in a horizontal list by changing the Orientation property of the ItemsStackPanel. Da die Listenansicht standardmäßig den vertikalen Bildlauf verwendet, müssen Sie auch einige Eigenschaften im internen ScrollViewer der Listenansicht anpassen, damit der Bildlauf horizontal durchgeführt wird.Because the list view scrolls vertically by default, you also need to adjust some properties on the list view’s internal ScrollViewer to make it scroll horizontally.

Wichtig

Diese Beispiele werden mit unbeschränkter Breite der Listenansicht gezeigt, sodass die horizontalen Bildlaufleisten nicht angezeigt werden.These examples are shown with the list view width unconstrained, so the horizontal scrollbars are not shown. Wenn Sie diesen Code ausführen, können Sie für ListView Width="180" festlegen, um die Bildlaufleisten anzuzeigen.If you run this code, you can set Width="180" on the ListView to make the scrollbars show.

XAMLXAML

<ListView Height="60" 
          ScrollViewer.HorizontalScrollMode="Enabled" 
          ScrollViewer.HorizontalScrollBarVisibility="Auto"
          ScrollViewer.VerticalScrollMode="Disabled"
          ScrollViewer.VerticalScrollBarVisibility="Hidden">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <ItemsStackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <x:String>Apricot</x:String>
    <x:String>Banana</x:String>
    <x:String>Cherry</x:String>
    <x:String>Orange</x:String>
    <x:String>Strawberry</x:String>
</ListView>

Die resultierende Liste sieht wie folgt aus.The resulting list looks like this.

Eine horizontale Listenansicht

Im nächsten Beispiel ordnet ListView Elemente in einer Liste an, die vertikal umbrochen wird, indem ItemsWrapGrid anstelle von ItemsStackPanel verwendet wird.In the next example, the ListView lays out items in a vertical wrapping list by using an ItemsWrapGrid instead of an ItemsStackPanel.

Wichtig

Die Höhe der Listenansicht muss eingeschränkt werden, um das Steuerelement zu zwingen, die Container umzubrechen.The height of the list view must be constrained to force the control to wrap the containers.

XAMLXAML

<ListView Height="100"
          ScrollViewer.HorizontalScrollMode="Enabled" 
          ScrollViewer.HorizontalScrollBarVisibility="Auto"
          ScrollViewer.VerticalScrollMode="Disabled"
          ScrollViewer.VerticalScrollBarVisibility="Hidden">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <ItemsWrapGrid/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <x:String>Apricot</x:String>
    <x:String>Banana</x:String>
    <x:String>Cherry</x:String>
    <x:String>Orange</x:String>
    <x:String>Strawberry</x:String>
</ListView>

Die resultierende Liste sieht wie folgt aus.The resulting list looks like this.

Eine Listenansicht mit Rasterlayout

Wenn Sie in Ihrer Listenansicht können gruppierte Daten anzeigen möchten, bestimmt ItemsPanel die Anordnung der Elementgruppen, nicht die Anordnung der einzelnen Elemente. Wenn das horizontale ItemsStackPanel, das zuvor gezeigt wurde, zur Anzeige gruppierter Daten verwendet wird, werden die Gruppen horizontal angeordnet. Die Elemente in den einzelnen Gruppen werden jedoch weiterhin vertikal angeordnet, wie hier gezeigt.If you show grouped data in your list view, the ItemsPanel determines how the item groups are layed out, not how the individual items are layed out. For example, if the horizontal ItemsStackPanel shown previously is used to show grouped data, the groups are arranged horizontally, but the items in each group are still stacked vertically, as shown here.

Eine gruppierte horizontale Listenansicht

Auswahl von Elementen und InteraktionItem selection and interaction

Sie können aus verschiedenen Möglichkeiten wählen, wie Benutzer mit einer Listenansicht interagieren können.You can choose from various ways to let a user interact with a list view. Standardmäßig können Benutzer ein einzelnes Element auswählen.By default, a user can select a single item. Sie können die Eigenschaft SelectionMode ändern, um eine Mehrfachauswahl zu ermöglichen oder die Auswahl zu deaktivieren.You can change the SelectionMode property to enable multi-selection or to disable selection. Sie können die Eigenschaft IsItemClickEnabled festlegen, sodass ein Benutzer auf ein Element klickt, um eine Aktion aufzurufen (wie bei einer Schaltfläche), statt das Element auszuwählen.You can set the IsItemClickEnabled property so that a user clicks an item to invoke an action (like a button) instead of selecting the item.

Hinweis  Sowohl ListView als auch GridView verwenden die Enumeration ListViewSelectionMode für ihre SelectionMode-Eigenschaften.Note  Both ListView and GridView use the ListViewSelectionMode enumeration for their SelectionMode properties. IsItemClickEnabled ist standardmäßig False. Daher müssen Sie es lediglich festlegen, um den Klickmodus zu aktivieren.IsItemClickEnabled is False by default, so you need to set it only to enable click mode.

In der folgenden Tabelle werden die Arten gezeigt, wie Benutzer mit einer Listenansicht interagieren können und wie Sie auf die jeweilige Interaktion reagieren können.This table shows the ways a user can interact with a list view, and how you can respond to the interaction.

Um diese Interaktion zu ermöglichen:To enable this interaction: Verwenden Sie diese Einstellungen:Use these settings: Behandeln Sie dieses Ereignis:Handle this event: Verwenden Sie diese Eigenschaft zum Abrufen des ausgewählten Elements:Use this property to get the selected item:
Keine InteraktionNo interaction SelectionMode = None, IsItemClickEnabled = FalseSelectionMode = None, IsItemClickEnabled = False N/VN/A N/VN/A
EinzelauswahlSingle selection SelectionMode = Single, IsItemClickEnabled = FalseSelectionMode = Single, IsItemClickEnabled = False SelectionChangedSelectionChanged SelectedItem, SelectedIndexSelectedItem, SelectedIndex
MehrfachauswahlMultiple selection SelectionMode = Multiple, IsItemClickEnabled = FalseSelectionMode = Multiple, IsItemClickEnabled = False SelectionChangedSelectionChanged SelectedItemsSelectedItems
Erweiterte AuswahlExtended selection SelectionMode = Extended, IsItemClickEnabled = FalseSelectionMode = Extended, IsItemClickEnabled = False SelectionChangedSelectionChanged SelectedItemsSelectedItems
Klicken SieClick SelectionMode = None, IsItemClickEnabled = TrueSelectionMode = None, IsItemClickEnabled = True ItemClickItemClick N/VN/A

Hinweis  Ab Windows 10 können Sie IsItemClickEnabled aktivieren, um ein ItemClick-Ereignis auszulösen, während SelectionMode ebenfalls auf Single, Multiple oder Extended festgelegt ist.Note  Starting in Windows 10, you can enable IsItemClickEnabled to raise an ItemClick event while SelectionMode is also set to Single, Multiple, or Extended. Wenn Sie dies tun, wird zuerst das ItemClick-Ereignis und anschließend das SelectionChanged-Ereignis ausgelöst.If you do this, the ItemClick event is raised first, and then the SelectionChanged event is raised. In einigen Fällen, wenn Sie beispielsweise zu einer anderen Seite im ItemClick-Ereignishandler navigieren, wird das SelectionChanged-Ereignis nicht ausgelöst, und das Element wird nicht ausgewählt.In some cases, like if you navigate to another page in the ItemClick event handler, the SelectionChanged event is not raised and the item is not selected.

Sie können diese Eigenschaften in XAML oder im Code festlegen, wie hier gezeigt.You can set these properties in XAML or in code, as shown here.

XAMLXAML

<ListView x:Name="myListView" SelectionMode="Multiple"/>

<GridView x:Name="myGridView" SelectionMode="None" IsItemClickEnabled="True"/> 

C#C#

myListView.SelectionMode = ListViewSelectionMode.Multiple; 

myGridView.SelectionMode = ListViewSelectionMode.None;
myGridView.IsItemClickEnabled = true;

SchreibgeschütztRead-only

Sie können die Eigenschaft SelectionMode auf ListViewSelectionMode.None festlegen, um die Elementauswahl zu deaktivieren.You can set the SelectionMode property to ListViewSelectionMode.None to disable item selection. Dadurch wird das Steuerelement im schreibgeschützten Modus ausgeführt und kann zwar zum Anzeigen von Daten, nicht jedoch für die Interaktion mit ihm verwendet werden.This puts the control in read only mode, to be used for displaying data, but not for interacting with it. Das Steuerelement selbst ist nicht deaktiviert ist, nur die Elementauswahl ist deaktiviert.The control itself is not disabled, only item selection is disabled.

EinzelauswahlSingle selection

In der folgenden Tabelle werden die Tastatur-, Maus- und Touchinteraktionen beschrieben, wenn SelectionMode Single ist.This table describes the keyboard, mouse, and touch interactions when SelectionMode is Single.

ZusatztasteModifier key InteraktionInteraction
KeineNone
  • Ein Benutzer kann ein einzelnes Element mit der LEERTASTE, per Mausklick oder durch Tippen auswählen.A user can select a single item using the space bar, mouse click, or touch tap.
  • STRGCtrl
  • Ein Benutzer kann die Auswahl eines einzelnen Elements mit der LEERTASTE, per Mausklick oder durch Tippen aufheben.A user can deselect a single item using the space bar, mouse click, or touch tap.
  • Mit den Pfeiltasten kann ein Benutzer den Fokus unabhängig von der Auswahl verschieben.Using the arrow keys, a user can move focus independently of selection.
  • Wenn SelectionMode Single ist, erhalten Sie das ausgewählte Datenelement aus der SelectedItem-Eigenschaft.When SelectionMode is Single, you can get the selected data item from the SelectedItem property. Sie erhalten den Index in der Sammlung des ausgewählten Elements mithilfe der SelectedIndex-Eigenschaft.You can get the index in the collection of the selected item using the SelectedIndex property. Wenn kein Element ausgewählt ist, ist SelectedItem null, und SelectedIndex ist -1.If no item is selected, SelectedItem is null, and SelectedIndex is -1.

    Wenn Sie versuchen, ein Element festzulegen, das nicht in der Items-Sammlung enthalten ist, wird der Vorgang ignoriert, und SelectedItem ist null.If you try to set an item that is not in the Items collection as the SelectedItem, the operation is ignored and SelectedItem isnull. Wenn Sie jedoch versuchen, SelectedIndex auf einen Index festzulegen, die außerhalb des Bereichs der Items in der Liste ist, wird eine System.ArgumentException-Ausnahme ausgelöst.However, if you try to set the SelectedIndex to an index that's out of the range of the Items in the list, a System.ArgumentException exception occurs.

    MehrfachauswahlMultiple selection

    In der folgenden Tabelle werden die Tastatur-, Maus- und Touchinteraktionen beschrieben, wenn SelectionMode Multiple ist.This table describes the keyboard, mouse, and touch interactions when SelectionMode is Multiple.

    ZusatztasteModifier key InteraktionInteraction
    KeineNone
  • Ein Benutzer kann mehrerer Objekte mit der LEERTASTE, per Mausklick oder durch Tippen auswählen, um die Auswahl zum fokussierten Element zu verschieben.A user can select multiple items using the space bar, mouse click, or touch tap to toggle selection on the focused item.
  • Mit den Pfeiltasten kann ein Benutzer den Fokus unabhängig von der Auswahl verschieben.Using the arrow keys, a user can move focus independently of selection.
  • UMSCHALTTASTEShift
  • Benutzer können mehrere zusammenhängende Elemente auswählen, indem sie auf das erste Element in der Auswahl und anschließend auf das letzte Element in der Auswahl klicken oder tippen.A user can select multiple contiguous items by clicking or tapping the first item in the selection and then the last item in the selection.
  • Mit den Pfeiltasten können Benutzer eine zusammenhängende Auswahl beginnend mit dem ausgewählten Element erstellen, wenn die UMSCHALTTASTE gedrückt wird.Using the arrow keys, a user can create a contiguous selection starting with the item selected when Shift is pressed.
  • Erweiterte AuswahlExtended selection

    In der folgenden Tabelle werden die Tastatur-, Maus- und Touchinteraktionen beschrieben, wenn SelectionMode Extended ist.This table describes the keyboard, mouse, and touch interactions when SelectionMode is Extended.

    ZusatztasteModifier key InteraktionInteraction
    KeineNone
  • Das Verhalten ist mit der Auswahl Single identisch.The behavior is the same as Single selection.
  • STRGCtrl
  • Ein Benutzer kann mehrerer Objekte mit der LEERTASTE, per Mausklick oder durch Tippen auswählen, um die Auswahl zum fokussierten Element zu verschieben.A user can select multiple items using the space bar, mouse click, or touch tap to toggle selection on the focused item.
  • Mit den Pfeiltasten kann ein Benutzer den Fokus unabhängig von der Auswahl verschieben.Using the arrow keys, a user can move focus independently of selection.
  • UMSCHALTTASTEShift
  • Benutzer können mehrere zusammenhängende Elemente auswählen, indem sie auf das erste Element in der Auswahl und anschließend auf das letzte Element in der Auswahl klicken oder tippen.A user can select multiple contiguous items by clicking or tapping the first item in the selection and then the last item in the selection.
  • Mit den Pfeiltasten können Benutzer eine zusammenhängende Auswahl beginnend mit dem ausgewählten Element erstellen, wenn die UMSCHALTTASTE gedrückt wird.Using the arrow keys, a user can create a contiguous selection starting with the item selected when Shift is pressed.
  • Wenn SelectionMode Multiple oder Extended ist, können Sie die ausgewählten Datenelemente aus der SelectedItems-Eigenschaft abrufen.When SelectionMode is Multiple or Extended, you can get the selected data items from the SelectedItems property.

    Die Eigenschaften SelectedIndex, SelectedItem und SelectedItems sind synchronisiert.The SelectedIndex, SelectedItem, and SelectedItems properties are synchronized. Wenn Sie beispielsweise SelectedIndex auf-1 festlegen, wird SelectedItem auf null festgelegt und SelectedItems ist leer. Wenn Sie SelectedItem auf null festlegen, wird SelectedIndex auf-1 festgelegt und SelectedItems ist leer.For example, if you set SelectedIndex to -1, SelectedItem is set to null and SelectedItems is empty; if you set SelectedItem to null, SelectedIndex is set to -1 and SelectedItems is empty.

    Im Mehrfachauswahlmodus enthält SelectedItem das Element, das zuerst ausgewählt wurde, und Selectedindex enthält den Index des Elements, das zuerst ausgewählt wurde.In multi-select mode, SelectedItem contains the item that was selected first, and Selectedindex contains the index of the item that was selected first.

    Reagieren auf Änderungen der AuswahlRespond to selection changes

    Um auf Änderungen der Auswahl in einer Listenansicht zu reagieren, behandeln Sie das Ereignis SelectionChanged.To respond to selection changes in a list view, handle the SelectionChanged event. Im Ereignishandlercode können Sie die Liste mit den ausgewählten Elementen aus der SelectionChangedEventArgs.AddedItems-Eigenschaft abrufen.In the event handler code, you can get the list of selected items from the SelectionChangedEventArgs.AddedItems property. Sie können alle Elemente abrufen, deren Auswahl aus der SelectionChangedEventArgs.RemovedItems-Eigenschaft aufgehoben wurde.You can get any items that were deselected from the SelectionChangedEventArgs.RemovedItems property. Die AddedItems- und RemovedItems-Sammlungen enthalten höchstens 1 Element, wenn der Benutzer keinen Bereich von Elementen auswählt, indem er die UMSCHALTTASTE gedrückt hält.The AddedItems and RemovedItems collections contain at most 1 item unless the user selects a range of items by holding down the Shift key.

    In diesem Beispiel werden die Behandlung des SelectionChanged-Ereignisses und der Zugriff auf die verschiedenen Elementsammlungen gezeigt.This example shows how to handle the SelectionChanged event and access the various items collections.

    XAMLXAML

    <StackPanel HorizontalAlignment="Right">
        <ListView x:Name="listView1" SelectionMode="Multiple" 
                  SelectionChanged="ListView1_SelectionChanged">
            <x:String>Apricot</x:String>
            <x:String>Banana</x:String>
            <x:String>Cherry</x:String>
            <x:String>Orange</x:String>
            <x:String>Strawberry</x:String>
        </ListView>
        <TextBlock x:Name="selectedItem"/>
        <TextBlock x:Name="selectedIndex"/>
        <TextBlock x:Name="selectedItemCount"/>
        <TextBlock x:Name="addedItems"/>
        <TextBlock x:Name="removedItems"/>
    </StackPanel> 
    

    C#C#

    private void ListView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (listView1.SelectedItem != null)
        {
            selectedItem.Text = 
                "Selected item: " + listView1.SelectedItem.ToString();
        }
        else
        {
            selectedItem.Text = 
                "Selected item: null";
        }
        selectedIndex.Text = 
            "Selected index: " + listView1.SelectedIndex.ToString();
        selectedItemCount.Text = 
            "Items selected: " + listView1.SelectedItems.Count.ToString();
        addedItems.Text = 
            "Added: " + e.AddedItems.Count.ToString();
        removedItems.Text = 
            "Removed: " + e.RemovedItems.Count.ToString();
    }
    

    KlickmodusClick mode

    Sie können eine Listenansicht so ändern, dass die Benutzer auf die Elemente wie auf Schaltflächen klicken, anstatt sie auszuwählen.You can change a list view so that a user clicks items like buttons instead of selecting them. Das bietet sich z. B. an, wenn Ihre App zu einer neuen Seite navigieren soll, wenn ein Benutzer auf ein Element in der Liste oder im Raster klickt.For example, this is useful when your app navigates to a new page when your user clicks an item in a list or grid. So aktivieren Sie dieses VerhaltenTo enable this behavior:

    • Legen Sie SelectionMode auf None fest.Set SelectionMode to None.
    • Legen Sie IsItemClickEnabled auf true fest.Set IsItemClickEnabled to true.
    • Behandeln Sie das ItemClick-Ereignis, um eine Aktion auszuführen, wenn der Benutzer auf ein Element klickt.Handle the ItemClick event to do something when your user clicks an item.

    Dies ist eine Listenansicht mit Elementen, auf die geklickt werden kann.Here's a list view with clickable items. Der Code im Ereignishandler ItemClick navigiert zu einer neuen Seite.The code in the ItemClick event handler navigates to a new page.

    XAMLXAML

    <ListView SelectionMode="None"
              IsItemClickEnabled="True" 
              ItemClick="ListView1_ItemClick">
        <x:String>Page 1</x:String>
        <x:String>Page 2</x:String>
        <x:String>Page 3</x:String>
        <x:String>Page 4</x:String>
        <x:String>Page 5</x:String>
    </ListView>
    

    C#C#

    private void ListView1_ItemClick(object sender, ItemClickEventArgs e)
    {
        switch (e.ClickedItem.ToString())
        {
            case "Page 1":
                this.Frame.Navigate(typeof(Page1));
                break;
    
            case "Page 2":
                this.Frame.Navigate(typeof(Page2));
                break;
    
            case "Page 3":
                this.Frame.Navigate(typeof(Page3));
                break;
    
            case "Page 4":
                this.Frame.Navigate(typeof(Page4));
                break;
    
            case "Page 5":
                this.Frame.Navigate(typeof(Page5));
                break;
    
            default:
                break;
        }
    }
    

    Programmgesteuerte Auswahl eines Bereichs von ElementenSelect a range of items programmatically

    In manchen Fällen müssen Sie die Elementauswahl einer Listenansicht programmgesteuert bearbeiten.Sometimes, you need to manipulate a list view’s item selection programmatically. Angenommen, es gibt eine Schaltfläche Alles auswählen, um einen Benutzer alle Elemente in einer Liste auswählen zu lassen.For example, you might have a Select all button to let a user select all items in a list. In diesem Fall ist es in der Regel nicht sehr effizient, der Sammlung SelectedItems Elemente einzeln hinzuzufügen oder Elemente einzeln aus dieser zu entfernen.In this case, it’s usually not very efficient to add and remove items from the SelectedItems collection one by one. Jedes Element führt zu einem SelectionChanged-Ereignis. Wenn Sie direkt mit den Elementen arbeiten und nicht mit Indexwerten, wird die Virtualisierung des betreffenden Elements deaktiviert.Each item change causes a SelectionChanged event to occur, and when you work with the items directly instead of working with index values, the item is de-virtualized.

    Die Methoden SelectAll, SelectRange und DeselectRange stellen eine effizientere Möglichkeit dar, die Auswahl zu ändern, als die Verwendung der Eigenschaft SelectedItems.The SelectAll, SelectRange, and DeselectRange methods provide a more efficient way to modify the selection than using the SelectedItems property. Diese Methoden führen mithilfe von Elementindexbereichen Auswahlen durch oder heben Auswahlen auf.These methods select or deselect using ranges of item indexes. Elemente, die virtualisiert sind, bleiben virtualisiert, da nur der Index verwendet wird.Items that are virtualized remain virtualized, because only the index is used. Alle Elemente im angegebenen Bereich werden ausgewählt (bzw. die Auswahl aller Elemente im angegeben Bereich wird aufgehoben), unabhängig vom ursprünglichen Auswahlzustand.All items in the specified range are selected (or deselected), regardless of their original selection state. Das SelectionChanged-Ereignis tritt nur einmal für jeden Aufruf dieser Methoden auf.The SelectionChanged event occurs only once for each call to these methods.

    Wichtig

    Sie sollten diese Methoden nur aufrufen, wenn die SelectionMode-Eigenschaft auf Multiple oder Extended festgelegt ist.You should call these methods only when the SelectionMode property is set to Multiple or Extended. Wenn Sie SelectRange aufrufen, wenn der Auswahlmodus Single oder None ist, wird eine Ausnahme ausgelöst.If you call SelectRange when the SelectionMode is Single or None, an exception is thrown.

    Verwenden Sie bei der Auswahl von Elementen mit Indexbereichen die SelectedRanges-Eigenschaft, um alle ausgewählten Bereiche in der Liste abzurufen.When you select items using index ranges, use the SelectedRanges property to get all selected ranges in the list.

    Wenn ItemsSource IItemsRangeInfo implementiert, und Sie diese Methoden verwenden, um die Auswahl zu ändern, werden die Eigenschaften AddedItems und RemovedItems in SelectionChangedEventArgs nicht festgelegt.If the ItemsSource implements IItemsRangeInfo, and you use these methods to modify the selection, the AddedItems and RemovedItems properties are not set in the SelectionChangedEventArgs. Das Festlegen dieser Eigenschaften erfordert die Deaktivierung der Virtualisierung des Elementobjekts.Setting these properties requires de-virtualizing the item object. Verwenden Sie zum Abrufen der Elemente stattdessen die Eigenschaft SelectedRanges.Use the SelectedRanges property to get the items instead.

    Sie können alle Elemente in einer Sammlung auswählen, indem Sie die SelectAll-Methode aufrufen.You can select all items in a collection by calling the SelectAll method. Es gibt jedoch keine entsprechende Methode, um die Auswahl aller Elemente aufzuheben.However, there is no corresponding method to deselect all items. Sie können die Auswahl aller Elemente aufheben, indem Sie DeselectRange aufrufen und einen ItemIndexRange mit einem Wert für FirstIndex von 0 und einem Wert für Length übergeben, der der Anzahl der Elemente in der Sammlung entspricht.You can deselect all items by calling DeselectRange and passing an ItemIndexRange with a FirstIndex value of 0 and a Length value equal to the number of items in the collection. Dies wird im Beispiel unten dargestellt, zusammen mit einer Option zum Auswählen aller Elemente.This is shown in the example below, along with an option to select all items.

    XAMLXAML

    <StackPanel Width="160">
        <Button Content="Select all" Click="SelectAllButton_Click"/>
        <Button Content="Deselect all" Click="DeselectAllButton_Click"/>
        <ListView x:Name="listView1" SelectionMode="Multiple">
            <x:String>Apricot</x:String>
            <x:String>Banana</x:String>
            <x:String>Cherry</x:String>
            <x:String>Orange</x:String>
            <x:String>Strawberry</x:String>
        </ListView>
    </StackPanel>
    

    C#C#

    private void SelectAllButton_Click(object sender, RoutedEventArgs e)
    {
        if (listView1.SelectionMode == ListViewSelectionMode.Multiple ||
            listView1.SelectionMode == ListViewSelectionMode.Extended)
        {
            listView1.SelectAll();
        }
    }
    
    private void DeselectAllButton_Click(object sender, RoutedEventArgs e)
    {
        if (listView1.SelectionMode == ListViewSelectionMode.Multiple ||
            listView1.SelectionMode == ListViewSelectionMode.Extended)
        {
            listView1.DeselectRange(new ItemIndexRange(0, (uint)listView1.Items.Count));
        }
    }
    

    Informationen zum Ändern der Darstellung ausgewählter Elemente finden Sie unter Elementcontainer und Vorlagen.For info about how to change the look of selected items, see Item containers and templates.

    Drag & DropDrag and drop

    ListView- und GridView-Steuerelemente unterstützen Drag & Drop für Elemente innerhalb von ihnen und zwischen ihnen und anderen ListView- und GridView-Steuerelementen.ListView and GridView controls support drag and drop of items within themselves, and between themselves and other ListView and GridView controls. Weitere Informationen zur Implementierung des Musters für Drag & Drop finden Sie unter Drag & Drop.For more info about implementing the drag and drop pattern, see Drag and drop.

    Beispielcode herunterladenGet the sample code