(WPF Toolkit의) WPF DataGrid
에 대한 필터링 기능을 개발하려고합니다. 사용자가 임의의 셀을 마우스 오른쪽 단추로 클릭하고 CcontextMenu
에서 Filter
을 선택한 다음 그리드를 셀 값으로 필터링해야합니다.WPF DataGrid : 필터링을위한 열 바인딩 속성 가져 오기
M-V-VM 패턴을 시도 중입니다. 내 창 datacontext MainWindowViewModel
은 Transactions
속성이 있습니다. 이 속성은 ObservableCollection<TransactionViewModel>
을 반환하고 데이터 표는이 컬렉션을 항목 소스로 사용합니다. 따라서 기본적으로 각 행은 TransactionViewModel
으로 제한됩니다 (추측 할 수 있듯이이 표에는 거래가 나열되어 있음). MainWindowsViewModel
은 현재 선택된 행을 필터링하고 추적하는 데 사용되는 ICollectionView
입니다. DataGrid
의 속성은 IsSynchronizedWithCurrentItem
이며 "true"로 설정되어 있으므로 myCollectionView.CurrentItem
은 현재 선택된 TransactionViewModel
을 제공합니다.
내가 알아야 할 유일한 것은 필터링해야하는 열입니다. 이것은 사용자가 컨텍스트 메뉴를 클릭 한 위치에 따라 다릅니다. 따라서 컨텍스트 메뉴 항목 CommandProperty
을 사용하여이 정보를 전달하려고합니다. 그리고 여기에 나는 진짜 문제가 있습니다. 나는 노력이 :
CommandParameter="{Binding Column.Binding.Path.Path,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type tk:DataGridCell}}}" />
이 정말 추한이지만,이 DataGridTextColumn
의 작동합니다. 불행하게도, 나는 DataGridTemplateColumn
을 가지고 있는데, 그들은 작동하지 않습니다. (실제 셀 템플릿에 도달해야하기 때문에 경로가 다릅니다.) ...
어떻게이 기능을 구현할 수 있습니까? 아마도 모든 방법이 잘못되었을 것입니까? 나는 그 어떤 가치있는 예도 찾지 못했습니다. 내가 발견 한 유일한 것은 WPF DataGrid
어떤 이유로 든 전혀 작동하지 않는 Codeproject의 자동 필터 구현입니다.
감사합니다. 당신이 당신의 MainWindowViewModel에서 양방향 모드로 바인딩 할 수 있도록 CurrentCell을이 도움이 될하지만 ...
데이터 그리드가있는 경우