Partager 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 créer une liaison avec les 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 est une collection d'objets Task. La classe Task possède une propriété appelée Priority. Ce gestionnaire d'événements exécute une requête LINQ qui retourne la collection des objets Task possédant la valeur de priorité sélectionnée, puis la définit comme valeur de DataContext :

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;
}

La seconde zone de liste est liée à cette collection parce que sa valeur ItemsSource est {Binding}. En conséquence, elle affiche la collection retournée (selon le myTaskTemplateDataTemplate).

Voir aussi

Tâches

Comment : rendre des données disponibles pour la liaison en XAML

Comment : effectuer une liaison à une collection et afficher des informations basées sur la sélection

Concepts

Nouveautés de WPF version 4

Vue d'ensemble de la liaison de données

Autres ressources

Rubriques "Comment" relatives aux liaisons de données