Практическое руководство. Привязка к результатам запроса LINQ

Этот пример демонстрирует способ запуска запрос LINQ и последующую привязку к результатам.

Пример

В следующем примере создается два списка. Первое поле списка содержит три элемента списка.

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

При выделении элемента в первом раскрывающемся списке вызывается следующий обработчик событий. В этом примере Tasks представляет собой коллекцию объектов Task. Класс Task имеет свойство с именем Priority. Этот обработчик событий запускает запрос LINQ, возвращающий коллекцию объектов Task, которые имеют значение выбранного приоритета, а затем устанавливающий их как 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;
}

Второй список привязывается к этой коллекции, так его значение ItemsSource установлено в {Binding}. В результате отображается возвращаемая коллекция (основанная на myTaskTemplate DataTemplate).

См. также

Задачи

Практическое руководство. Обеспечение доступности данных для привязки в XAML

Практическое руководство. Выполнение привязки к коллекции и вывод сведений в зависимости от выделенного элемента

Основные понятия

Новые возможности WPF версии 4

Общие сведения о связывании данных

Другие ресурсы

Практические руководства по привязке данных