2010-07-06 5 views
0

J'ai une grille WPF et une liste de valeurs. La liste de valeurs possède une propriété de ligne et de colonne et la valeur de contenu. Il y a entre 200 et 14 000 valeurs à afficher dans une grille formatée.Répartiteur répartiteur

J'ai ajouté des lignes et des colonnes à la grille puis ajouté des blocs de texte à la grille dans les bonnes positions de ligne/colonne.

Cela fonctionne très bien jusqu'à ce que j'ai environ 8 000 valeurs, puis il ralentit. Pour remédier à ce problème, mes TextBlocks sont créés sur un thread puis lorsque j'essaie de les ajouter au membre Children de la Grid en utilisant le répartiteur d'interface utilisateur, le bloc de texte est sur un thread différent .

Donc la question est, puis-je changer l'affinité de thread des Textblocks pour le thread UI après que je les ai créés?

Merci Owen

+0

Je suis allé pour une vue de liste en premier lieu mais il obtenait une grille uniforme qui causait un problème. Essentiellement, j'ai un objet [,] provenant de fonctions financières Excel et j'ai besoin de les afficher dans WPF. Je passe donc par l'objet [,] et enregistre les non-null dans ma liste. J'ai essayé de lancer le tableau dans un ListView mais je n'ai pas réussi à le mettre en forme correctement jusqu'à la largeur des colonnes. Il est encore plus compliqué par la nécessité de lier le premier plan de la valeur à une propriété de l'élément. – Owen79

+0

Je ne comprends pas cela ... mais je n'ai pas pu mettre la grille correctement formatée en largeur de colonne. C'est compliqué par la nécessité de lier le premier plan de la valeur à une propriété sur l'item'. Pouvez-vous illustrer le problème que vous avez rencontré avec le ListView? – Amsakanna

Répondre

1

Vous allez montrer toutes les 8000 valeurs à la fois ou êtes-vous avoir des barres de défilement? L'ajout de 8000 contrôles à une vue serait considéré comme une mauvaise conception. Pourquoi ne pas opter pour un ListView et le modéliser en fonction de votre conception si les valeurs ont le même modèle?

Pour que vous puissiez le lier à un ObservableCollection qui pourrait être rempli en utilisant la liste de valeurs que vous avez. Le remplissage a pu être rendu asynchrone en utilisant Dispatcher's BeginInvoke méthode

+0

Veer, merci pour votre aide. Le problème que j'avais avec ListView était d'aligner les colonnes sur chaque ligne. C'est probablement une erreur ou un malentendu de ma part. En fait, vous m'avez donné une idée ... Je n'ai pas chargé les 200 premières "cellules" de données sur la page sur le fil de l'interface utilisateur, puis fait le reste en utilisant Dispatchers begin Invoke. Cela m'a donné les données dont j'ai besoin presque immédiatement et étrangement les éléments restants se remplissent beaucoup plus rapidement aussi. Merci pour votre aide – Owen79

Questions connexes