I need to implement search feature in WPF TreeView
(basically I need to remember the last user selection). I have tried various approaches suggested but nothing works as virtualization
is enabled in my TreeView
and child nodes are loaded only when a parent node is expanded(lazy loading).
Anyone knows of a sample having these three things(Virtualization, Load-on-demand and Search) implemented together?
Have a look at this MSDN forum thread, Bob from MS explains the problem in implementing this feature.
the cause is the
VirtualizingStackPanel
try to generate
a item for display, but it has a
generator already in your project to
generate the expanded items (in the
OnTreeNodeExpanded
event handler). It
occurs conflict with two generators.
VirtualizingStackPanel
can generate
the required item at run-time, it also
generate them in BringIndexIntoView
method. The code of the StartAt
method
is to check the generator, if it isn't
null, throw the exception "Cannot call
StartAt
when content generation is in
progress". So, the sample populates
all items to the bound source in the
InitializeComponent()
, and let the
BringIndexIntoView
method to generates
the container for the item.
A sample reproducing the problem is also attached in that thread.
So at present there seems to be no solution for this approach :(