2009-05-18 9 views
7

Nous avons une série de rectangles produits à l'intérieur d'un canevas et ils sont imbriqués dans cet ordre ScrollView> Canvas> VirtualizingStackPanel> Rectangles dans le XAML.WPF Virtualisation d'un canevas

Il semble y avoir peu d'informations sur Microsoft à propos de la prise en charge de la virtualisation des sénarios, et dans les cas où il n'y a pas d'erreur, elle se comporte comme un StackPanel standard. Etant donné que notre vue a environ 60 rectangles sur l'écran à tout moment sur un total d'environ 800 sur l'ensemble de la toile, les temps de chargement d'environ 5 minutes sont inacceptablement lents.

Nous avons déjà essayé de supprimer le ScrollView sans aucun effet (autre que de supprimer les barres de défilement les performances ne s'améliorent pas), et en supprimant certains des autres éléments imbriqués, l'effet net semble être soit rien n'est affiché, soit c'est affiché mais toujours lent.

La meilleure solution J'ai trouvé jusqu'à présent un échantillon de code gratuit VirtualizedCanvas mais c'est très très limité et ne supporte rien d'imbriqué dedans, en fait la seule entrée qu'il faut est une collection d'éléments d'interface utilisateur. Cette solution ignore fondamentalement la liaison de données et vous oblige à lui renvoyer un canevas complété, ce qui rend inutile tout notre code et nos convertisseurs existants et serait une refonte majeure à implémenter.

Existe-t-il un moyen de découper simplement la virtualisation du canevas pour ne dessiner que nos 60 éléments à l'écran?

Répondre

Questions connexes