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 siguiente controlador de eventos. En este ejemplo, Tasks es una colección de Task objetos . La Task clase tiene una propiedad denominada Priority. Este controlador de eventos ejecuta una consulta LINQ que devuelve la colección de objetos que tienen el valor de Task 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 ItemsSource valor está establecido en {Binding}. Como resultado, muestra la colección devuelta (basada en myTaskTemplateDataTemplate).

Consulte también