2016-10-06 62 views
0

當我使用ListBox + WrapPanel在ListBox ItemsPanelTemplate中的WPF中顯示信息時,性能結果非常差。ListBox和WrapPanel性能下降

如果我從列表框中刪除WrapPanel信息大約需要5秒用WrapPanel完全顯示它需要約1.10分鐘。

關於如何提高性能的任何提示?

配置爲: 我的DataTemplate位於App.xaml中,並使用1個Border,Grid和20個TextBlocks封裝在6個不同的VirtualizingStackPanel內。

列表框:

<ListBox Name="myListBox" 
     Margin="4" 
     BorderBrush="DarkSlateGray" BorderThickness="1" 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     ItemsSource="{Binding propList}" 
     ItemTemplate="{StaticResource myDataTemplate}" > 
    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
</ListBox> 

謝謝。

+0

請參閱[本](http://stackoverflow.com/q/9946811/1997232)。 – Sinatr

回答

0

WrapPanel不使用虛擬化,如果您將使用啓用了虛擬化的其他面板,則只會創建UI中可見的元素。

+0

在我的DataTemplate裏面我使用VirtualizingStackPanels(但在WrapPanel中使用它時速度仍然很慢),所以問題是我應該用什麼來替換WrapPanel,它提供了相同的包裝功能並具有更好的性能? –

+0

請嘗試以下鏈接:http://www.codeproject.com/Articles/309151/Wrap-Panel-Virtualization http://www.codeproject.com/Articles/75847/Virtualizing-WrapPanel – Rom

+0

特別是這一個執行好一點: 「http://virtualwrappanel.codeplex.com/SourceControl/latest#VirtualizingWrapPanel.cs」,但仍然非常slooowww ....任何更多的想法建議? –