2012-03-02 3 views
1

WPF 앱에서 컬렉션에 데이터 바인딩되는 ItemsControl 인 ScrollViewer가 있고 항목에 대해 지정된 템플릿이 있습니다. ScrollViewer가 논리적 스크롤을 사용하도록하여 ScrollViewer.CanContentScroll = "True"플래그를 설정하고 ItemsPanel의 ItemsPanel 템플릿을 StackPanel로 설정합니다.itemscontrol을 사용하여 Scrollviewer 논리적 스크롤

그러나 스크롤링은 여전히 ​​논리적이 아니라 물리적입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 늦은 답변 죄송합니다

감사 톰

+0

, 당신은 "논리"를 사용하여 UI 가상화를 나타 냅니까? 이 질문에 관심이 있다면 [ItemsControl 가상화] (http://stackoverflow.com/q/2783845/302677) – Rachel

답변

0

... 이 (스크롤 기반 픽셀) 마이크로 소프트가 4.5 .NET으로 "추가"무언가이다.

WPF 4에서 TreeView에는 논리 스크롤이 있지만 ListBox 및 ItemsControl에는 없습니다. 그래서 TreeView에서 작동하고 ListBox에서는 작동하지 않습니다. ?? 이것은 스크롤링이 VirtualizingStackPanel에 의해 관리되므로 질문해야하는 질문입니다.

음, "비밀"은 IsPixelBased라는 VirtualizingStackPanel의 내부 속성에 있습니다.

true로 설정하면 논리적으로 뒤로 스크롤됩니다.

그러나 비용이 있습니다. 대형 항목 소스 (가상화 및 컨테이너 재활용 포함)에서 스크롤이 느린 것 같습니다. (큰 항목의 출처는 50,000 또는 100,000과 비슷하지만) 실제 (항목 기반) 스크롤은 그렇지 않습니다.

나는이 문제가 WPF에서 해결되기를 바랍니다 4.5 여기

는 기본적으로 픽셀 기반 스크롤와 가상화의 pabel 데의 예입니다 : "물리적이 아닌 논리적"으로

public class VSP : VirtualizingStackPanel 
{ 
    public VSP() 
    { 
     typeof(VSP).GetProperty("IsPixelBased", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(this, true, null); 
    } 
} 
관련 문제