방법: LINQ 쿼리 결과에 바인딩
이 예제는 LINQ 쿼리를 실행한 다음 결과에 바인딩하는 방법을 보여줍니다.
예제
다음 예제에서는 목록 상자 두 개를 만듭니다. 첫 번째 목록 상자에는 세 개의 목록 항목이 포함됩니다.
<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;
}
두 번째 목록 상자는 해당 ItemsSource 값이 {Binding}
로 설정되어 있으므로 해당 컬렉션에 바인딩됩니다. 결과적으로 반환된 컬렉션( myTaskTemplate
DataTemplate기반)이 표시됩니다.
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET Desktop feedback