この例では、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に基づいて) 返されたコレクションが表示されます。
こちらも参照ください
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET Desktop feedback