Share via


Comment : effectuer une liaison avec les résultats d'une requête LINQ

Cet exemple montre comment exécuter une requête LINQ, puis établir une liaison aux résultats.

Exemple

L’exemple suivant crée deux zones de liste. La première zone de liste contient trois éléments de liste.

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

La sélection d’un élément dans la première zone de liste appelle le gestionnaire d’événements suivant. Dans cet exemple, Tasks il s’agit d’une collection d’objets Task . La Task classe a une propriété nommée Priority. Ce gestionnaire d’événements exécute une requête LINQ qui retourne la collection d’objets Task qui ont la valeur de priorité sélectionnée, puis définit celle-ci comme suit 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ée à cette collection, car sa ItemsSource valeur est définie {Binding}sur . Par conséquent, il affiche la collection retournée (basée sur le myTaskTemplateDataTemplate).

Voir aussi