2010-01-05 2 views
2

관찰 가능한 탭 모음에 바인딩되는 tabcontrol이 있습니다.WPF TabControl 스위치 동작

tabcontrol에는 항상 다른 관찰 가능한 컬렉션에 바인딩 된 listview를 호스팅하는 첫 번째 탭이 있습니다.

해당 목록보기에서 항목을 선택하면 새 탭에 지정된 포커스가 만들어집니다.

난 데 문제는 :

  1. 내가 첫 번째 탭로 다시 전환 할 때 /리스트 뷰 항목 (느린 이미지를 포함)를 작성 다시 그립니다 동안 일시 정지가

  2. 새 탭으로 이동하기 전에 선택한 항목이 더 이상 선택되지 않습니다. 대신 목록보기는 항목을 선택하지 않고 맨 위에 있습니다.

내게 tabcontrol이 실제로 매번 탭 항목 콘텐츠를 배포하는 방법을 설명해 줄 수 있습니까? 그리고 그 탭으로 돌아 왔을 때 항목이 선택된 상태로 유지되는 동작을 어떻게 대신 할 수 있습니까?

업데이트 :

내가 어떤 이벤트 등이 스위치 백 및에 불 없지만, 첫 번째 탭이 언로드되고있는 이벤트에 디버그 인쇄 메시지를 추가로 확인했다 - 더 구체적으로 해당 탭에서 호스팅되는 UserControl을가 ??.

답변

0

먼저 내 목록보기 내 컬렉션에 바인딩 확인 올바르게 항목이 속성을 추가하여 선택 머물렀다 즉, 필요 다시 전환에 :

private void ListView_Loaded(object sender, RoutedEventArgs e) 
{ 
    ICollectionView collectionView = CollectionViewSource.GetDefaultView(DataContext); 
    if (collectionView != null) 
    { 
     ItemControl.ScrollIntoView(collectionView.CurrentItem); 
    } 
} 
0

ObservableCollection이 범인 인 것처럼 들립니다. 디스플레이를 제어하기 위해 컬렉션 항목을 변경하는 경우 컬렉션이 변경 될 때마다 전체 탭 컬렉션을 다시 그립니다.

대신 TabItem 컬렉션을 직접 관리하지 않는 이유는 무엇입니까? 그런 다음 TabItem의 Visibility 속성을 관리하여 표시하거나 표시하지 않을 수 있습니다. 항목을보기로 스크롤 그래서 다음 목록보기에로드 된 이벤트 처리기를 추가

IsSynchronizedWithCurrentItem="True" 

:

+0

을이 컬렉션이 변경 될 것이기 때문에 내가 다시 가서 처음으로 내가 문제를 볼 것이라고 생각하는 경우했다하지만 두 번째 이후 스위칭 2 탭 1 일부터 경우 ?? – Oliver