2010-09-15 16 views
5

J'ai besoin de mettre en œuvre la fonctionnalité de recherche dans WPF TreeView (fondamentalement, je dois me souvenir de la dernière sélection de l'utilisateur). J'ai essayé différentes approches suggérées mais rien ne fonctionne puisque virtualization est activé dans mon TreeView et les nœuds enfants sont chargés seulement quand un nœud parent est développé (chargement paresseux). Est-ce que quelqu'un connaît un échantillon ayant ces trois choses (Virtualization, Load-on-demand et Search) mis en œuvre ensemble?Besoin d'un exemple de recherche WPF TreeView avec Virtualization et Load On Demand

Répondre

3

Jetez un oeil à this MSDN forum thread, Bob de MS explique le problème dans l'implémentation de cette fonctionnalité.

la cause est le VirtualizingStackPanel essayer de générer un élément pour l'affichage, mais il a un générateur déjà dans votre projet pour générer les éléments élargis (dans le gestionnaire d'événements OnTreeNodeExpanded). Il se produit conflit avec deux générateurs. VirtualizingStackPanel peut générer l'élément requis au moment de l'exécution, il les générer en BringIndexIntoView méthode. Le code de la méthode StartAt est de vérifier le générateur, si ce n'est pas null, jeter l'exception "Impossible d'appeler StartAt lorsque la génération de contenu est en progrès". Ainsi, l'exemple remplit tous les éléments à la source liée dans le InitializeComponent(), et laissez la méthode BringIndexIntoView générer le conteneur pour l'élément.

Un échantillon reproduisant le problème est également joint dans ce fil.

donc à l'heure actuelle, il semble y avoir aucune solution pour cette approche :(

+1

Avez-vous réussi à trouver une solution de contournement? J'ai le même problème –