나는이 매우 간단한 문제로 난처한 상황에 있다고 생각하지 않습니다. 원래 WPF DataGrid codeplex 토론에 게시했지만 응답이 없습니다. 그래서 나는 여기에서 노력하고있다 :WPF로 리 바인딩 Datagrid의 Datacontext
나는 이것을 할 길을 찾을 수 없다. datacontext가 처음에 테이블의 행으로 채워지는 DataGrid를 만듭니다. 조건에 따라 일부 행을 반환하는 검색 기능을 구현했습니다. 그 행만 표시하고 싶다면 처음에 만든 datacontext를 삭제하고 새로 필터링 된 컬렉션을 추가하려면 어떻게합니까?
나는 순진하게도 이런 식으로 일을 시작 :
(늦은 편집 : 여기 제네릭 코드를 입력 할 수없는 것 - (예를 들어합니다 MyType에 datagrid.Items 캐스팅 suppoed 다음 줄에 캐스팅))
IEnumerable rows = datagrid.Items.Cast();
IEnumerable filteredRows = rows.Where (row => row.someCondition == true);
이제 어떻게 datagrid가 filteredRows 만 표시합니까? 그냥 수행 :
datagrid.DataContext = null;
datagrid.DataContext = filteredRows;
(어떤 이유로 든 바보 같은 냄새가납니다.) 작동하지 않습니다.
나는 또한이 작업을 수행하면 되풀이 작업을 수행해야합니다. 일부 버튼 클릭은 사용자가 검색 결과를 "지우고"DataContext를 "행"(위의 스 니펫에서)에 다시 연결할 수 있도록 허용해야합니다.
무엇이 누락 되었습니까?
전에 컨텍스트를 다시 설정, 너무 나를 위해 일한? 이것은 효과가 있다고 생각했다. –
코드 주위에''틱 (tick)을 추가하면 일반 코드도 게시 할 수 있습니다. – Oskar
분명히 그것을 수행하는 방법은 Items 컬렉션의 Filter 속성에 직접 위임자 (행을 필터링)를 할당하는 것입니다. 일단 내가 일하게되면이 일을 시도 할 것입니다. 나는 상황이 어떻게 돌아가는지에 대해 다시보고 할 것이다. –