2010-09-15 7 views
5

È necessario implementare la funzione di ricerca in WPF TreeView (in pratica devo ricordare l'ultima selezione utente). Ho provato vari approcci suggeriti ma nulla funziona come è abilitato nel mio TreeView e i nodi figlio vengono caricati solo quando un nodo genitore è espanso (caricamento lazy).È necessario un campione per la ricerca TreeView WPF con virtualizzazione e caricamento su richiesta

Qualcuno sa di un campione con queste tre cose (Virtualizzazione, Load-on-demand e Ricerca) implementate insieme?

risposta

3

Dai un'occhiata al thread del forum MSDN this, Mario spiega il problema nell'implementazione di questa funzione.

la causa è il VirtualizingStackPanel tenta di generare un elemento per la visualizzazione, ma ha un generatore già nel progetto per generare gli elementi espansi (nel gestore OnTreeNodeExpanded eventi). Si verifica conflitto con due generatori. VirtualizingStackPanel può generare l'elemento richiesto in fase di esecuzione, ma anche lo generarli nel metodo BringIndexIntoView . Il codice del metodo StartAt è per controllare il generatore, se non è null, lanciare l'eccezione "Impossibile chiamare StartAt quando la generazione del contenuto è in avanzamento ". Quindi, il campione popola tutti gli elementi sull'origine associata nello InitializeComponent() e lascia che sia il metodo BringIndexIntoView a generare il contenitore per l'articolo .

Un esempio di riproduzione del problema è anche allegato in quella discussione.

Quindi al momento non sembra esserci alcuna soluzione per questo approccio :(

+1

Siete riusciti a trovare una soluzione? Ho lo stesso problema –