如何:绑定到 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 的新增功能

数据绑定概述

其他资源

数据绑定帮助主题