Dela via


Gör så här: Binda till resultatet av en LINQ-fråga

Det här exemplet visar hur du kör en LINQ-fråga och sedan binder till resultatet.

Exempel

I följande exempel skapas två listrutor. Den första listrutan innehåller tre listobjekt.

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

Om du väljer ett objekt i den första listrutan anropas följande händelsehanterare. I det här exemplet är Tasks en samling Task objekt. Klassen Task har en egenskap med namnet Priority. Den här händelsehanteraren kör en LINQ-fråga som returnerar samlingen med Task objekt som har valt prioritetsvärde och sedan anger det som 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;
}

Den andra listrutan binder till samlingen eftersom dess ItemsSource värde är inställt på {Binding}. Därför visas den returnerade samlingen (baserat på myTaskTemplateDataTemplate).

Se även