2013-10-21 3 views
0

소수의 속성과 ObservableCollection을 가진 사용자 지정 개체가 있습니다.바인딩, datacontext, collectionviewsource

내가 겪고있는 문제는 모든 게임을 멋지게 즐기는 것입니다. 내가 CollectionViewSource을 필터링하고 싶지만 그게 어떻게 적용되어서 코드 측에서 필터를 실행할 수 있는지 파악할 수없는 것 같습니다.

나는, 내가이 작업을 수행 할 것을 사용하여 여러 가지 (기본 개체에 proeprties, 필터와 컬렉션)

class Student 
{ 
    public string Name { get; set; } 
    public DateTime DOB { get; set; } 
    public ObservableCollection<ClassRoom> Classes { get; set; } 

    public Student() 
    { 
     this.Classes = new ObservableCollection<ClassRoom>(); 
    } 
} 

class ClassRoom 
{ 
    public string Name { get; set; } 
    public int Room { get; set; } 
} 

을 계정에 소요되는 다음과 같은 바인딩의 좋은 예를 찾을 수 있었다 havent 한 main.cs에

var student = new Student { Name = "Justin", DOB = new DateTime(1983, 6, 15) }; 
student.Classes.Add(new ClassRoom { Name = "math", Room = 102}); 
student.Classes.Add(new ClassRoom { Name = "english", Room = 119 }); 
this.DataContext = student; 

는 그래서는

<TextBlock Grid.Row="0" Grid.Column="0"> 
     <Run Text="Name: "/> 
     <Run Text="{Binding Name}"/> 
    </TextBlock> 
    <TextBlock Grid.Row="0" Grid.Column="1"> 
     <Run Text="DOB: "/> 
     <Run Text="{Binding Name}"/> 
    </TextBlock> 
    <DataGrid Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="0" 
     ItemsSource="{Binding Classes}" AutoGenerateColumns="True"></DataGrid> 

내가 r에 XAML에서이 작업을 수행 할 수 있습니다 eally 단지 그런 식으로 내가보다는 Binding Classes.Room

적어도 내가 기본적으로 문제는 내가 couldnt한다이고, 의심 DataGrid에 CSV를 할당하고 단지 Binding Room로 정의 열 바인딩 처리 할 수 ​​있도록 클래스 속성에 대한 CVS를 만들려면 다른 데이터와 OC를 혼합하는 것에 대해 이야기하는 예제/튜토리얼을 찾으십시오.

답변

0

간단히 말해서 CollectionViewSource를 사용하면 원본을 "가상보기"로 만들 수 있으므로 원본이 여전히 변경되지 않은 상태에서 "보기"의 ​​데이터를 그룹화하거나 정렬 할 수 있습니다.

처리 방법을 알고있는 wpf의 컨트롤은 소스를 사용하지 않고 뷰에 바인딩하므로 CollectionViewSource 개체를 정렬 할 때 컨트롤에서 사용자가 원하는대로 원하는대로 콘텐트를 정렬 할 수 있습니다.

코드를 많이 게시하지 않았으므로 어떤 정확한 문제도 지정하지 않았으므로 귀하의 질문에 대해 광범위하게 답변 드리겠습니다.

http://msdn.microsoft.com/en-us/library/ff407126.aspx

http://wpftutorial.net/DataViews.html

을 확인, 그것은 스스로를 시도 :

다음은 WPF에서 필터링, 정렬, 그룹화 이해하는 데 도움이 될 것입니다 링크입니다. 일단 어딘가에 갇히면 Google은 코드 예제로 여기에 질문을 게시 할 수 있도록 도와줍니다.

+0

감사합니다. 링크가 모두 내 문제와 정확히 일치합니다. 그들은 모두 메신저 전송이 콜렉션 자체라고 가정합니다. 몇 가지 코드로 질문을 업데이트하겠습니다. – jrich523