Freigeben über


Vorgehensweise: Binden an die Ergebnisse einer LINQ-Abfrage

In diesem Beispiel wird veranschaulicht, wie eine LINQ-Abfrage ausgeführt und dann an die Ergebnisse gebunden wird.

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 ein Element aus dem ersten Listenfeld auswählen, wird der folgende Ereignishandler aufgerufen. In diesem Beispiel Tasks handelt es sich um eine Auflistung von Task Objekten. Die Task Klasse hat eine Eigenschaft mit dem Namen Priority. Dieser Ereignishandler führt eine LINQ-Abfrage aus, die die Auflistung von Task Objekten zurückgibt, die den ausgewählten Prioritätswert aufweisen, und legt diese dann als :DataContext

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 sein Wert auf ItemsSource festgelegt ist. Dadurch wird die zurückgegebene Sammlung angezeigt (basierend auf dem myTaskTemplateDataTemplate).

Siehe auch