2009-05-06 3 views
3

일반적으로 눈금 열 크기 조정과 관련된 WPF의 알려진 성능 문제가 있습니까?WPF 열 크기 조정 성능 문제

필자는 열에서 특정 작업을 수행해야하는 응용 프로그램을 가지고 있지만 다른 모든 솔루션에서 열 크기 조정 속도가 느린 것으로 나타났습니다. 이것은 일반적으로 내 목록에 1000 개 이상의 요소가있을 때 적용되지만 WPF에서는 너무 많이 사용하지 않는다고 가정합니다. 그래서; 일반적인 질문은 느린 열 크기 조정을 경험했는지 여부와이 해결 방법을 찾았는지 여부입니다. 무엇이 그것을 일으키고 있었습니까?

내 특정 사건에 대한 좀 더 자세한 사항 : 내 열에서 두 개의 서로 다른 일을 할 수

; ComboBox 또는 TextBlock. ComboBox는 전체 열을 채우고 열 크기 조정을 수행하고 TextBlock이있는 열의 빈 영역을 클릭하면 행을 선택해야합니다. 문제가있는 곳입니다. 이 솔루션에 대한 열 크기 조정이 느려집니다. Orientation = "Horizontal"으로 StackPanel을 추가하는 것만으로도 크기를 매끄럽게 만들 수있는 유일한 방법이지만 위에 설명 된 스타일을 달성 할 수 없습니다. 목록의 항목에

  • 추가 스타일 HorizontalContentAlignment = "스트레치"는 선택 상자 스트레칭과 TextBlocks 클릭 할 수 있습니다, 또한 열이 느린 화면 조정 :

    는 여기에 몇 가지 관측이다.

  • StackPanel이나 그 안에 삽입 된 요소에 Background = "Transparent"를 추가하면 문제도 해결되지만 크기가 느려집니다.
  • Orientation = "Horizontal"속성을 가진 외부 StackPanel을 추가하면 부드럽게 크기가 조정되지만 설명 된대로 스타일을 적용 할 수 없습니다.
+1

이전에 본 적이 있지만 더 이상 발생하지 않으며 그 이유를 모르겠습니다. 유감스럽게도 유감 스럽지만, 적어도 당신은 미쳐 있지 않다는 것을 알고 있습니다. .NET Framework의 어떤 버전을 사용하고 있습니까? Microsoft는 3.5 및 3.5 SP1에서 많은 성능 향상을 보였습니다. – PeterAllenWebb

답변

2

ListView에서 요소를 가상화 했습니까? 가상화 할 때 가상화 패널은보기에있는 요소의 비주얼 만 작성합니다. 이렇게하면 언급 한 것처럼 성능 문제없이 많은 수의 항목을 가질 수 있습니다. 자세한 내용은 VirtualizingStackPanel을 참조하십시오. 또한 The Layout System. 자체 가상화 패널을 만들 수 있습니다. google에서 "virtualizing + wpf"를 검색하면 Canvases, WrapPanels 등을 가상화하기위한 히트 곡을 많이 찾을 수 있습니다.

이 정보가 도움이되기를 바랍니다.

+0

우리는 이전에 요소를 가상화하려고 시도했습니다. 이것이 크기 조정 문제를 해결했는지는 확실치 않지만, 목록에서 가상화 스크롤을 사용하는 것은 끔찍한 경험이었습니다 (천천히!). 그래서 사용할 수 없었습니다. 우리는 WPF에서 아직 간단한 테스트 응용 프로그램에서 동일한 문제가 발생한 후에 성숙하지 않을 수도 있다고 결론을 내 렸습니다. 이것에 대한 의견이 있으십니까? – stiank81

+0

SP1에서 가상화가 몇 가지 개선되었다는 것을 알고 있습니다. 처음에는 지연된 스크롤을 추가했습니다. 둘째, 컨테이너 재활용 (옵션)을 추가했습니다. VirtualizingStackPanel 사용과 관련하여 어떤 문제도 발생하지 않았습니다. –

+0

그래서 가상화는 문제를 해결합니다. 새로운 문제를 생성하기 때문에 문제를 풀었습니다. 감사. 실제로 - 문제는 우리가 TreeView를 사용하는 것으로 밝혀졌습니다. 우리가 보여주는 것은 나무입니다. ListView를 대신 사용하여 다시 작성하면 모든 것을 거의 해결할 수 있습니다. 나는 틀릴 수도 있지만 ListView는 TreeView보다 훨씬 성숙한 것 같다. 지금부터는 TreeView를 피하십시오. 이것에 대한 의견이 있으십니까? 감사! – stiank81