Практическое руководство. Привязка к результатам запроса LINQ
Обновлен: Ноябрь 2007
Этот пример демонстрирует способ запуска запрос 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:
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}. В результате отображается возвращаемая коллекция (основанная на myTaskTemplateDataTemplate). Полный пример содержится в разделе Пример использования запроса LINQ.
См. также
Задачи
Практическое руководство. Обеспечение доступности данных для привязки в XAML
Основные понятия
Новые возможности в Windows Presentation Foundation 3.5
Общие сведения о связывании данных