2016-10-06 3 views
0

У меня очень низкие результаты при использовании ListBox + WrapPanel для отображения информации в моем WPF внутри ListBox ItemsPanelTemplate.Медленная производительность ListBox и WrapPanel

Если я удалю WrapPanel из списка ListBox, информация займет около 5 сек., чтобы полностью отобразить WrapPanel, это займет около 1.10 мин.

Любые советы о том, как улучшить производительность на этом?

Конфигурация: My DataTemplate находится в App.xaml и использует 1 Border, Grid, 20 TextBlocks, завернутых в 6 разных VirtualizationStackPanels.

ListBox:

<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 не использует виртуализацию, если вы будете использовать другие панели с включенной виртуализацией, будут созданы только те элементы, которые видны в пользовательском интерфейсе.

+0

Внутри моей DataTemplate Я использую VirtualizingStackPanels (но скорость все еще медленная, когда вы используете его внутри WrapPanel), поэтому вопрос заключается в том, что я должен использовать для замены WrapPanel, который предлагает те же возможности Wrapping и имеет лучшую производительность? –

+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 .... Больше предложений идей? –