Практическое руководство. Привязка к результатам запроса 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:
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).