나는 실버 라이트 3SL3 트 리뷰하지 프로그래밍 스크롤
에서 트 리뷰 트 리뷰가 관찰 컬렉션에 바인딩되어 있습니다.
기본적으로 페이지가로드 될 때 기본적으로 트리 뷰의 모든 노드가 축소됩니다.
트리 뷰의 특정 항목을 프로그래밍 방식으로 선택할 수있는 기능이 있습니다.
내가 겪고있는 문제는 즉시 표시되지 않는 항목 (예 : 하나 이상의 상위 노드가 접혀 있음)이 선택되는 경우입니다. 프로그래밍 방식으로 확장하지만 프로그램 적으로보기로 스크롤하려고하면 사용자가 선택한 항목을 볼 수 있으므로 작동하지 않습니다.
나는 이것을 더 살펴 보았고 스크롤 뷰어의 계산 된 뷰포트 높이와 관련 있다고 생각합니다. 항목의 부모 노드가 확장되고 항목이 프로그래밍 방식으로 선택된 경우 트리 뷰를 해당 트리 뷰 항목에 대한보기로 스크롤하는 코드가 완벽하게 작동하므로 거의 타이밍 문제 인 것처럼 보입니다.
아래의 확장 방법을 참조하여 트리보기를보기로 스크롤하십시오. 이 문제를 해결하는 방법에 대한 도움이나 제안은 크게 감사하겠습니다.
감사합니다.
public static void BringIntoViewForScrollViewer(this FrameworkElement frameworkElement, ScrollViewer scrollViewer)
{
var transform = frameworkElement.TransformToVisual(scrollViewer);
var positionInScrollViewer = transform.Transform(new Point(0, 0));
if (positionInScrollViewer.Y < 0 || positionInScrollViewer.Y > scrollViewer.ViewportHeight)
scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset + positionInScrollViewer.Y - ScrollPadding);
}
당신이 VerticalOffset 및 ViewportHeight 속성은 확인하기 위해 확장 방법을 노드를 확장하고 호출 사이에 트 리뷰 나에서 ScrollViewer에에 UpdateLayout()를 호출 시도 되세요 최신 정보? –
그게 - TreeView 및 ScrollViewer에서 UpdateLayout을 호출해야했습니다. 감사합니다. – Chris
답변을 공식 답변으로 추가하고 답글로 표시하여 답이없는 검색 결과에는 표시되지 않도록 할 수 있습니다. –