Vorgehensweise: Binden an die Ergebnisse einer LINQ-AbfrageHow to: Bind to the Results of a LINQ Query

Dieses Beispiel zeigt, wie Sie eine LINQ-Abfrage ausführen und dann Binden an die Ergebnisse.This example demonstrates how to run a LINQ query and then bind to the results.

BeispielExample

Das folgende Beispiel erstellt zwei Listenfelder.The following example creates two list boxes. Das erste Listenfeld enthält drei Listenelemente.The first list box contains three list items.

<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}"/>

Das erste Listenfeld ein Element auswählen, wird der folgende Ereignishandler aufgerufen.Selecting an item from the first list box invokes the following event handler. In diesem Beispiel Tasks ist eine Sammlung von Task Objekte.In this example, Tasks is a collection of Task objects. Die Task -Klasse verfügt über eine Eigenschaft namens Priority.The Task class has a property named Priority. Dieser Ereignishandler ausgeführt wird, eine LINQ-Abfrage, die die Auflistung der zurückgibt Task Objekte, die den ausgewählten Priority-Wert und legt dann fest, dass die DataContext:This event handler runs a LINQ query that returns the collection of Task objects that have the selected priority value, and then sets that as the 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 eine Bindung an die Sammlung erstellt, da die ItemsSource Wert wird festgelegt, um {Binding}.The second list box binds to that collection because its ItemsSource value is set to {Binding}. Daher wird die zurückgegebene Auflistung (basierend auf den myTaskTemplate DataTemplate).As a result, it displays the returned collection (based on the myTaskTemplateDataTemplate).

Siehe auchSee also