Hello, first of all kudos, for the article. It was of invaluable help to me.

I needed to implement a listbox that was binded to an observable collection of Xml Nodes.
Each node should be parsed and rendered as text on each listbox's item.
The nodes were parsed out of big .xml log files (some with hundreds of Mb), so whenever the app loaded the xml, it freezed intensively.

I decided this was unacceptable and found out about data and ui virtualization, and also your article. I implemented my solution as sugested (the essential code is bellow) .

However, after a while, when playing with the scroll, i found out that each line was growing with repeated entries. For instance,

what starts like this
Date1-event
Date2-event
Date3-event
Date4-event
Date5-event
Date6-event

after some intensive scrolling goes

Date1Date1Date1-event
Date2Date2-event
Date3Date3-event
Date4Date4-event
Date5Date5-event
Date6-event

Any ideas on this ?



// C# ////
XmlLinesCollection xmlLines = (XmlLinesCollection)((ObjectDataProvider)ls.TryFin dResource("XmlLinesSource")).ObjectInstance;
if (xmlLines != null){

xmlLines.LoadLines( fileInfo.FullName );
if (xmlLines.Count != 0)
listbox.ScrollIntoView(xmlLines[0]);

}

// Xaml /////////
<ItemsPanelTemplate x:Key="VirtualPanel">
<VirtualizingStackPanel IsVirtualizing="True"/>
</ItemsPanelTemplate>


<ListBox
x:Name="listbox"
ItemsPanel="{DynamicResource VirtualPanel}"
ItemsSource="{Binding Mode=OneWay, Source={StaticResource XmlLinesSource}}"
ItemTemplateSelector="{StaticResource xmlNodeSel}"
/>