Freigeben über


Gewusst wie: Binden an die Ergebnisse einer LINQ-Abfrage

In diesem Beispiel wird veranschaulicht, wie Sie eine LINQ-Abfrage ausführen und dann eine Bindung an die Ergebnisse vornehmen.

Beispiel

Im folgenden Beispiel werden zwei Listenfelder erstellt. Das erste Listenfeld enthält drei Listenelemente.

<ListBox SelectionChanged="ListBox_SelectionChanged"
         SelectedIndex="0" Margin="10,0,10,0" >
    <ListBoxItem>1</ListBoxItem>
    <ListBoxItem>2</ListBoxItem>
    <ListBoxItem>3</ListBoxItem>
</ListBox>
<ListBox Width="400" Margin="10" Name="myListBox"
         HorizontalContentAlignment="Stretch"
         ItemsSource="{Binding}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

Wenn Sie im ersten Listenfeld ein Element auswählen, wird der folgende Ereignishandler aufgerufen. In diesem Beispiel steht Tasks für eine Auflistung von Task-Objekten. Die Task-Klasse verfügt über eine Eigenschaft namens Priority. Dieser Ereignishandler führt eine LINQ-Abfrage aus, die die Auflistung von Task-Objekten zurückgibt, die den ausgewählten Prioritätswert haben. Anschließend wird der Wert als DataContext festgelegt:

Imports System.Linq


...


        Private tasks As New Tasks()


...


        Private Sub ListBox_SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
            Dim pri As Integer = Int32.Parse((TryCast((TryCast(sender, ListBox)).SelectedItem, ListBoxItem)).Content.ToString())

            Me.DataContext = From task In tasks
                             Where task.Priority = pri
                             Select task
        End Sub
using System.Linq;


...


Tasks tasks = new Tasks();


...


private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    int pri = Int32.Parse(((sender as ListBox).SelectedItem as ListBoxItem).Content.ToString());

    this.DataContext = from task in tasks
                       where task.Priority == pri
                       select task;
}

Das zweite Listenfeld wird an diese Auflistung gebunden, da der ItemsSource-Wert auf {Binding} festgelegt ist. Als Ergebnis wird die zurückgegebene Auflistung angezeigt (basierend auf myTaskTemplateDataTemplate).

Siehe auch

Aufgaben

Gewusst wie: Bereitstellen von Daten, um diese in XAML zu binden

Gewusst wie: Binden an eine Auflistung und Anzeigen von Informationen auf Grundlage der Auswahl

Konzepte

Neues in WPF Version 4

Übersicht über Datenbindung

Weitere Ressourcen

Gewusst-wie-Themen zur Datenbindung