2013-06-14 4 views
5
의 필터 중의 selectedItem을 유지

이 같은 필터되고있는 목록 상자가 있습니다CollectionViewSource

var view = CollectionViewSource.GetDefaultView(FilterSource); 
view.Filter = FilterCode; 

나는 필터가이 같은 뷰 모델 코드로 사용되는 경우 SelectedItem이 소실되는 문제로 실행하고를 : 필터가 적용되면

VM 
{ 
    public ObservableCollection<Model> Items{get;set;} 
    public Model SelectedItem 
    { 
     get{return _selectedItem;} 
     set{_selectedItem = value; NotifyPropertyChanged();} 
    } 
} 

SelectedItemnull로 설정된다. 그러나 사용자가 실제로 클릭하지 않으면 선택한 항목을 유지하려고합니다. 필터가 제거 된 경우 선택한 항목을 계속 선택해야합니다. 모델에는 IsSelected 속성이 있으며 IsSelected 속성을 쿼리하는 방법을 생각해 봤습니다. 그러나, 다음 뷰의 내가 기대 .... 또는 적어도 내가 생각 원에 갈거야 방법을 작동하지 않을 바인딩 그것을 할 수 없습니다 여기에 수정을 달성 내 유일한 방법이 (가) SelectionChanged 이벤트에 다음은

+0

기본 키가 somekind 인 경우 필터링 전에이 ID를 저장할 수 있으며 필터링 후 선택한 ID를 사용하여 선택한 항목을 설정할 수 있습니다 – blindmeis

답변

0

:

if (e.AddedItems.Count == 0 && e.RemovedItems.Count >= 0) 
    SpecialtyListBox.SelectedItem = e.RemovedItems[0]; 

그러나 이것은 실제로 해킹 된 것처럼 보이고 초기 항목을 선택하면 항상 항목을 선택해야합니다. 이 경우에는 효과가있을 수 있지만 더 나은 해결책이 있는지 계속보고 싶습니다.

0

비슷한 문제가 발생했습니다. 목록 상자는 탭보기로 표시됩니다. "isActive"에 대한 부울 플래그를 생성하고 CollectionViewSource.IsLiveFilteringRequested에 할당하기 위해 Converter를 생성하여이 문제를 해결했습니다. 이로 인해 비활성 목록 상자에서 선택한 항목을 업데이트하지 못했습니다.

0

필터링 된 항목에 항상 현재 선택된 항목을 추가하는 필터를 만들어이 문제를 해결할 수 있습니다. 이 작업을 직접 수행 할 수없는 경우에는 선택한 항목을 별도의 변수에 보관하십시오.

관련 문제