Show / Hide Table of Contents

Практическое руководство. Привязка к результатам запроса 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}. Таким образом, он отображает возвращаемой коллекции (на основе myTaskTemplateDataTemplate).

См. также

  • Обеспечение доступности данных для привязки в XAML
  • Привязка к коллекции и вывод сведений в зависимости от выделенного элемента
  • Новые возможности WPF версии 4.5
  • Общие сведения о привязке данных
  • Практические руководства
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX