Procédure : Effectuer une liaison avec les résultats d’une requête LINQHow to: Bind to the Results of a LINQ Query

Cet exemple montre comment exécuter une requête LINQ, puis lier aux résultats.This example demonstrates how to run a LINQ query and then bind to the results.

ExempleExample

L’exemple suivant crée deux zones de liste.The following example creates two list boxes. La première zone de liste contient trois éléments de liste.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}"/>

Sélectionner un élément dans la zone de liste appelle le Gestionnaire d’événements.Selecting an item from the first list box invokes the following event handler. Dans cet exemple, Tasks est une collection de Task objets.In this example, Tasks is a collection of Task objects. Le Task classe a une propriété nommée Priority.The Task class has a property named Priority. Ce gestionnaire d’événements s’exécute une requête LINQ qui retourne la collection de Task les objets qui ont la valeur de priorité sélectionnée, puis la définit comme le 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;
}

La deuxième zone de liste est lié à cette collection, car son ItemsSource a la valeur {Binding}.The second list box binds to that collection because its ItemsSource value is set to {Binding}. Par conséquent, il affiche la collection retournée (selon le myTaskTemplate DataTemplate).As a result, it displays the returned collection (based on the myTaskTemplateDataTemplate).

Voir aussiSee also