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