方法 : 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 クエリのサンプル」を参照してください。
参照
処理手順
方法 : コレクションにバインドして選択に基づく情報を表示する
概念
Windows Presentation Foundation Version 3.5 の新機能