Sdílet prostřednictvím


Postupy: Připojení k výsledkům dotazu LINQ

Tento příklad ukazuje, jak spustit dotaz LINQ a pak vytvořit vazbu na výsledky.

Příklad

Následující příklad vytvoří dvě seznamová pole. První seznam obsahuje tři položky seznamu.

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

Při výběru položky z prvního seznamu se vyvolá následující obslužná rutina události. V tomto příkladu Tasks je kolekce Task objektů. Třída Task má vlastnost s názvem Priority. Tato obslužná rutina události spustí dotaz LINQ, který vrátí kolekci Task objektů, které mají vybranou hodnotu priority, a pak nastaví tuto hodnotu jako 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;
}

Druhý seznam vytvoří vazbu na tuto kolekci, protože její ItemsSource hodnota je nastavena na {Binding}. V důsledku toho zobrazí vrácenou kolekci (na základě ).myTaskTemplateDataTemplate

Viz také