Nasıl yapılır: LINQ Sorgusunun Sonuçlarına Bağlama

Bu örnek, bir LINQ sorgusunun nasıl çalıştırılacağını ve sonra sonuçlara nasıl bağlanacağını gösterir.

Örnek

Aşağıdaki örnek iki liste kutusu oluşturur. İlk liste kutusu üç liste öğesi içerir.

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

İlk liste kutusundan bir öğe seçilmesi aşağıdaki olay işleyicisini çağırır. Bu örnekte, Tasks bir Task nesneler koleksiyonudur. TaskSınıfında adlı bir özellik vardır Priority . Bu olay işleyicisi, Seçili öncelik değerine sahip nesneler koleksiyonunu döndüren bir LINQ sorgusu çalıştırır Task ve ardından şunu şöyle ayarlar 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;
}

İkinci liste kutusu bu koleksiyona bağlanır çünkü ItemsSource değeri olarak ayarlanır {Binding} . Sonuç olarak, döndürülen koleksiyonu (öğesine göre myTaskTemplateDataTemplate ) görüntüler.

Ayrıca bkz.