Share via


方法 : LINQ クエリの結果にバインドする

更新 : 2007 年 11 月

この例では、LINQ クエリを実行し、その結果にバインドする方法について説明します。

使用例

次の例では、2 つのリスト ボックスを作成します。最初のリスト ボックスには 3 つのリスト項目が含まれます。

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

最初のリスト ボックスから項目を選択すると、次のイベント ハンドラが呼び出されます。この例では、Tasks は Task オブジェクトのコレクションです。Task クラスには、Priority という名前のプロパティがあります。このイベント ハンドラは、優先順位値が選択された Task オブジェクトのコレクションを返す LINQ クエリを実行し、それを 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;
}

2 つ目のリスト ボックスは、ItemsSource 値が {Binding} に設定されているため、そのコレクションにバインドされます。その結果、返されたコレクションが myTaskTemplateDataTemplate に基づいて表示されます。サンプル全体については、「LINQ クエリのサンプル」を参照してください。

参照

処理手順

方法 : XAML でデータをバインディング可能にする

方法 : コレクションにバインドして選択に基づく情報を表示する

概念

Windows Presentation Foundation Version 3.5 の新機能

データ バインディングの概要

その他の技術情報

データ バインディングのサンプル

データ バインディングに関する「方法」トピック