Jak powiązać z wynikami zapytania LINQ

W tym przykładzie pokazano, jak uruchomić zapytanie LINQ, a następnie powiązać je z wynikami.

Przykład

Poniższy przykład tworzy dwa pola listy. Pierwsze pole listy zawiera trzy elementy listy.

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

Wybranie elementu z pierwszego pola listy wywołuje następującą procedurę obsługi zdarzeń. W tym przykładzie Tasks jest to kolekcja Task obiektów. Klasa Task ma właściwość o nazwie Priority. Ta procedura obsługi zdarzeń uruchamia zapytanie LINQ zwracające kolekcję Task obiektów, które mają wybraną wartość priorytetu, a następnie ustawia je jako 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;
}

Drugie pole listy wiąże się z kolekcją, ponieważ jej ItemsSource wartość jest ustawiona na {Binding}wartość . W rezultacie wyświetla zwróconą kolekcję (na podstawie elementu myTaskTemplateDataTemplate).

Zobacz też