Compartir a través de


Cómo: Enlazar a los resultados de una consulta LINQ

En este ejemplo se muestra cómo ejecutar una consulta LINQ y, a continuación, enlazar a los resultados.

Ejemplo

En el ejemplo siguiente se crean dos cuadros de lista. El primer cuadro de lista contiene tres elementos de lista.

<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}"/>

Al seleccionar un elemento del primer cuadro de lista, se invoca el controlador de eventos siguiente. En este ejemplo, Tasks es una colección de objetos Task. La clase Task tiene una propiedad denominada Priority. Este controlador de eventos ejecuta una consulta LINQ que devuelve la colección de objetos Task que tienen el valor de prioridad seleccionado y, a continuación, los establece como 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;
}

El segundo cuadro de lista enlaza a esa colección porque su valor de ItemsSource está establecido en {Binding}. Como resultado, muestra la colección devuelta (en función de myTaskTemplateDataTemplate).

Vea también

Tareas

Cómo: Hacer que los datos estén disponibles para el enlace en XAML

Cómo: Enlazar a una colección y mostrar información basada en la selección

Conceptos

Novedades de WPF versión 4

Información general sobre el enlace de datos

Otros recursos

Temas "Cómo..." sobre enlace de datos