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, enlazarla a los resultados.

Ejemplo

En el siguiente ejemplo 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 siguiente controlador de eventos. 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, lo establece como 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;
}

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

Vea también