2009-11-17 2 views
1

J'ai une boîte de saisie semi-automatique Silverlight pour montrer une liste de membres du personnel, et cela fonctionne très bien. Je reçois les données en chargeant une liste BusinessObjects.Comment puis-je éliminer le temps de chargement initial sur le contrôle Silverlight Autocompletebox?

Mon problème est que la première fois vous commencez à taper quelque chose dans la boîte, il faut près de 2 secondes pour revenir avec des suggestions. Ensuite, toutes les recherches ultérieures semblent presque instantanées.

Évidemment, il doit y avoir une sorte de chargement paresseux ici, il doit en quelque sorte être configuré pour se déclencher lors de l'utilisation initiale du contrôle.

Je voudrais en quelque sorte charger les données lorsque le contrôle est chargé pour la première fois, cela rendrait une meilleure expérience utilisateur si même sur la première frappe que les suggestions semblent instantanées.

Est-ce que quelqu'un sait comment je peux faire cela?

+0

J'ai le même problème et je n'ai encore trouvé aucune solution. Le problème semble être le temps nécessaire pour créer les vues d'éléments. – Alfonso

+0

Est-ce que vous le chargez initialement avec tous les membres du personnel ou appelez-vous un service Web après chaque pression de touche. Cela fait une grande différence quant à l'endroit où le goulot d'étranglement est. –

+0

Non, appelez le service WCF directement sur l'instanciation de classe, avant même le premier clavier. –

Répondre

1

Ok, après avoir fait des allers-retours sur le forum Silverlight, j'ai eu une bonne solution de contournement que je partagerais. Il a été fourni par un sympathique Aussie nommé Matt, pensé que je l'afficherais ici si les gens étaient curieux. Fondamentalement, mais en réglant la longueur de recherche minimale à 2, vous réduisez considérablement le traitement et le rendu «rattrape» les deuxième et troisième caractères. Les deux autres attributs qu'il suggère aident également à accélérer le retour.

Voici son message:

Je mis à jour mon projet de test avec votre code et une collection beaucoup plus d'articles (100 000), et je commençais à voir la question ... :)

Réglage de la MinimumPrefixLength à 2 (ou toute valeur supérieure à 1. par défaut, il est défini sur 1) et le MinimumPopulateDelay à 200 (par défaut, il est défini sur 0) a supprimé le problème pour moi. Je recommande également de définir MaxDropDownHeight, car cela garantira le bon fonctionnement de la virtualisation dans AutoCompleteBox.

uxAuto.MinimumPrefixLength = 2; 
uxAuto.MinimumPopulateDelay = 200; 
uxAuto.MaxDropDownHeight = 300; 

Pouvez-vous essayer cela dans votre implémentation et laissez-moi savoir comment ça se passe? ...

Merci. mat. Matthew Olney Senior Consultant - Expérience utilisateur Avanade Australie

+0

Merci beaucoup! Bien que je n'ai pas posé la question, j'ai eu le même problème qui est maintenant résolu: D – Alfonso

+0

Bonnes choses! Merci à Matthew Olney en Australie. :) –

1

J'ai ajouté une solution à ce here qui peut limiter le nombre d'éléments se charge dans le PBR et donne de bonnes performances pour 200000 articles.

+0

L'article fourni à travers le lien est sympa, mais je vous suggère d'inclure des explications et des exemples d'extraits dans la réponse, dans la mesure du possible. – XenoRo