Je travaille sur un projet d'organigramme (SL 3) et je vois le thread de l'interface utilisateur se bloquer lorsque le graphique est construit autour de 2000 nœuds et quand il rend cela prend environ un min puis FPS tomber à un crawl.Silverlight performance avec un grand nombre d'objets Organigramme
Voici le flux de code. Page.xaml.cs appelle un service wcf qui renvoie une liste d'utilisateurs AD. Ensuite, nous utilisons Linq pour construire une collection de nœuds à lier à l'Orgchart.cs
OrgChart.cs est un canevas et affiche une collection de nœuds et de lignes de connexion.
Node.cs est un canevas et ses données utilisateur peuvent contenir des nœuds enfants. NodeContent.xaml est un contrôle utilisateur qui a des bordures afin que je puisse définir l'arrière-plan, les blocs de texte pour afficher les données de l'utilisateur, les événements qui gèrent les nœuds sélectionnés et expansés et les storyboards qui redimensionnent les nœuds lorsqu'ils sont sélectionnés ou développés. remarqué pendant les heures de débogage, ici dans InitializeComponent(); section où il charge le xaml, il semble être là où le coup de préformance se passe.
System.Windows.Application.LoadComponent (this, nouveau System.Uri ("/ Silverlight.Custom; component/NodeContent.xaml", System.UriKind.Relative));
Donc je suppose que j'ai deux questions.
- L'aide de thread peut-elle être suspendue pendant que vous dessinez les nœuds?
- Comment puis-je éviter le hit lors de l'appel de ce contrôle utilisateur?
Tout conseil ou direction que quelqu'un peut prêter serait grandement apprécié.
Merci, KC