Procedura: eseguire l'associazione ai risultati di una query LINQ

In questo esempio viene illustrato come eseguire una query LINQ e quindi eseguire l'associazione ai risultati.

Esempio

Nell'esempio seguente vengono create due caselle di riepilogo. La prima casella di riepilogo contiene tre voci di elenco.

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

La selezione di un elemento nella prima casella di riepilogo richiama il gestore eventi seguente. In questo esempio è Tasks una raccolta di Task oggetti . La Task classe ha una proprietà denominata Priority. Questo gestore eventi esegue una query LINQ che restituisce la raccolta di Task oggetti con il valore di priorità selezionato e quindi imposta come 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;
}

La seconda casella di riepilogo viene associata a tale raccolta perché il relativo ItemsSource valore è impostato su {Binding}. Di conseguenza, visualizza la raccolta restituita (in base a myTaskTemplate DataTemplate).

Vedi anche