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 myTaskTemplate
DataTemplate).
Vea también
.NET Desktop feedback