方法: LINQ クエリの結果にバインドする
この例では、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}
に設定されているため、そのコレクションにバインドされます。 その結果、返されたコレクションが (myTaskTemplate
DataTemplate に基づいて) 表示されます。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET Desktop feedback