표시 할 데이터와 같은 거대한 테이블이있는 응용 프로그램에서 뷰가 있습니다. 데이터는 두 개의 중첩 된 UniformGrid에 표시됩니다. UniformGrid는 ItemsControls의 ItemPanels이며 일부 ViewModel에 바인딩됩니다. 다음 이미지와 몇 가지 예를 들어 XAML 코드를 참조하십시오거대한 UniformGrid에서 성능을 처리하는 방법은 무엇입니까?
view and viewmodel http://img593.imageshack.us/img593/8825/stackoverflowuniformgri.png
<!-- The green boxes -->
<ItemsControl ItemsSource="{Binding BigCells}">
<ItemsControl.ItemPanel>
<PanelTemplate>
<UniformGrid />
</PanelTemplate>
</ItemsControl.ItemPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- The blue boxes -->
<ItemsControl ItemsSource="{Binding SmallCells}">
<ItemsControl.ItemPanel>
<PanelTemplate>
<UniformGrid />
</PanelTemplate>
</ItemsControl.ItemPanel>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
지금, 내보기 크기 조정되고 싶어하지만,이 모든 단일 작은 상자의 레이아웃이 계산되는 모든 이후에 잘 수행하지 않습니다.
적어도 모든 상자에 대해 동일하므로 상자 크기는 한 번만 수행 할 수 있습니다.
WPF에서 막대한 양의 컨트롤을 표시하는 것이 가장 좋습니다./어디에서 최적화를 시작할 수 있습니까? 키워드를 사용하면 WPF의 UniformGrid에 대한 성능 최적화를 계속해서 발견 할 수 있습니다.
자세한 답변을 보내 주셔서 감사합니다. 이미 응용 프로그램에서 개선 할 수있는 몇 가지 사항을 담고 있습니다 (freezables, default style override). 나는 이것을보고 나중에보고 할 것이다. –
물론, 어떻게 진행되는지 알려주세요! 그것은 내 블로그에 성능 게시물을 써야만하기 때문에 실제로 나를 위해 좋은 운동이었다 :) – Sisyphe
우리는 모든 리소스 사전을 많이 가지고 있으며 응용 프로그램은 여전히 매우 빠릅니다.우리가 접근 한 방식은 하나의 리소스 (예 : 스타일, 벡터, 브러쉬 등)에 대해 하나의 리소스 사전을 작성한 다음 각보기에서 필요한 리소스 사전 만 참조합니다. 문제는 가상화되지 않기 때문에 균일 한 그리드 자체입니다. – adminSoftDK