<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: How can I improve on existing WPF data virtualization solutions?</title>
	<atom:link href="http://bea.stollnitz.com/blog/?feed=rss2&#038;p=378" rel="self" type="application/rss+xml" />
	<link>http://bea.stollnitz.com/blog/?p=378</link>
	<description>on Silverlight and WPF</description>
	<lastBuildDate>Mon, 02 Aug 2010 17:57:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Bea</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-201719</link>
		<dc:creator>Bea</dc:creator>
		<pubDate>Tue, 20 Apr 2010 22:43:56 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-201719</guid>
		<description>Hi Ron,

I haven&#039;t heard any news about this issue. It&#039;s really unfortunate that this limitation exists.
If you hear anything about it, please post it here or let me know (I&#039;ve heard about this issue from others, but I&#039;ve never been able to repro it on any of my machines).

Thanks,
Bea</description>
		<content:encoded><![CDATA[<p>Hi Ron,</p>
<p>I haven&#8217;t heard any news about this issue. It&#8217;s really unfortunate that this limitation exists.<br />
If you hear anything about it, please post it here or let me know (I&#8217;ve heard about this issue from others, but I&#8217;ve never been able to repro it on any of my machines).</p>
<p>Thanks,<br />
Bea</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ron</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-199358</link>
		<dc:creator>Ron</dc:creator>
		<pubDate>Wed, 14 Apr 2010 05:29:43 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-199358</guid>
		<description>Is there any update on this? I am having the same issue on Windows 7 64-bit - GetEnumerator is being called which in turn causes all items in the list to be accessed.</description>
		<content:encoded><![CDATA[<p>Is there any update on this? I am having the same issue on Windows 7 64-bit &#8211; GetEnumerator is being called which in turn causes all items in the list to be accessed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bea</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-185290</link>
		<dc:creator>Bea</dc:creator>
		<pubDate>Fri, 22 Jan 2010 19:11:59 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-185290</guid>
		<description>Hi Smitha,

If I understand correctly, it seems like you&#039;re looking for changes in the database to be reflected in the UI. This is the exact scenario I mention in the &quot;Still missing...&quot; section of the blog post. I have some ideas, but haven&#039;t yet had a chance to try them. 

I hope you&#039;re able to find a solution!

Bea</description>
		<content:encoded><![CDATA[<p>Hi Smitha,</p>
<p>If I understand correctly, it seems like you&#8217;re looking for changes in the database to be reflected in the UI. This is the exact scenario I mention in the &#8220;Still missing&#8230;&#8221; section of the blog post. I have some ideas, but haven&#8217;t yet had a chance to try them. </p>
<p>I hope you&#8217;re able to find a solution!</p>
<p>Bea</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bea</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-185117</link>
		<dc:creator>Bea</dc:creator>
		<pubDate>Thu, 21 Jan 2010 21:37:56 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-185117</guid>
		<description>Hi Michael,

Thanks for your comment, which I&#039;m sure will be useful to others. Yes, it&#039;s definitely worth restating that we&#039;re dealing with wrapped items, and that that adds an extra level of indirection when binding to the data.

Thanks!
Bea</description>
		<content:encoded><![CDATA[<p>Hi Michael,</p>
<p>Thanks for your comment, which I&#8217;m sure will be useful to others. Yes, it&#8217;s definitely worth restating that we&#8217;re dealing with wrapped items, and that that adds an extra level of indirection when binding to the data.</p>
<p>Thanks!<br />
Bea</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bea</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-185115</link>
		<dc:creator>Bea</dc:creator>
		<pubDate>Thu, 21 Jan 2010 21:31:57 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-185115</guid>
		<description>Hi Tobi,

Are you already doing the partial data virtualization in &lt;a href=&quot;http://bea.stollnitz.com/blog/?p=43&quot; rel=&quot;nofollow&quot;&gt;this post&lt;/a&gt;, where data for each level is loaded only when that level is expanded? This doesn&#039;t help if you have a particular level with lots of data, it helps more if you have lots of levels with a bit of data.

I haven&#039;t tried to apply the data virtualization technique explained here to TreeView. I would assume that applying this solution to each TreeViewItem (which derives from ItemsControl) would virtualize the data for that level. It sounds simple, but it may be a bit tricky to implement.

If someone has implemented a solution for that, please leave a note here!

Bea</description>
		<content:encoded><![CDATA[<p>Hi Tobi,</p>
<p>Are you already doing the partial data virtualization in <a href="http://bea.stollnitz.com/blog/?p=43" rel="nofollow">this post</a>, where data for each level is loaded only when that level is expanded? This doesn&#8217;t help if you have a particular level with lots of data, it helps more if you have lots of levels with a bit of data.</p>
<p>I haven&#8217;t tried to apply the data virtualization technique explained here to TreeView. I would assume that applying this solution to each TreeViewItem (which derives from ItemsControl) would virtualize the data for that level. It sounds simple, but it may be a bit tricky to implement.</p>
<p>If someone has implemented a solution for that, please leave a note here!</p>
<p>Bea</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bea</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-184990</link>
		<dc:creator>Bea</dc:creator>
		<pubDate>Thu, 21 Jan 2010 01:45:33 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-184990</guid>
		<description>Hi Andreas,

I&#039;ve heard that issue from other people that have tested this and other data virtualization solutions on multiple platforms. No one has been able to narrow down a generic pattern of hardware, software or combination of hardware and software that makes it happen. 

WPF should work the same in all platforms. If this is not the case, I would assume that there&#039;s some issue in the underlying WPF code of the callstack you show here. 

If you find out more about it, please post that information here, as it may help other people that have the same issue.

Thank you,
Bea</description>
		<content:encoded><![CDATA[<p>Hi Andreas,</p>
<p>I&#8217;ve heard that issue from other people that have tested this and other data virtualization solutions on multiple platforms. No one has been able to narrow down a generic pattern of hardware, software or combination of hardware and software that makes it happen. </p>
<p>WPF should work the same in all platforms. If this is not the case, I would assume that there&#8217;s some issue in the underlying WPF code of the callstack you show here. </p>
<p>If you find out more about it, please post that information here, as it may help other people that have the same issue.</p>
<p>Thank you,<br />
Bea</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tobi</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-180342</link>
		<dc:creator>Tobi</dc:creator>
		<pubDate>Fri, 25 Dec 2009 01:11:42 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-180342</guid>
		<description>Hi
is anyone of you able to provide a working example for a virtualizing treeview using virtualizing collections?
I never got that working, all the subitems of one level are loaded at once (jI am using the DataVirtualization-Method with the Pages and all pages are loaded at once, not like it is when I use a ListView)

Tobi</description>
		<content:encoded><![CDATA[<p>Hi<br />
is anyone of you able to provide a working example for a virtualizing treeview using virtualizing collections?<br />
I never got that working, all the subitems of one level are loaded at once (jI am using the DataVirtualization-Method with the Pages and all pages are loaded at once, not like it is when I use a ListView)</p>
<p>Tobi</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Rosen</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-180333</link>
		<dc:creator>Michael Rosen</dc:creator>
		<pubDate>Thu, 24 Dec 2009 19:40:58 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-180333</guid>
		<description>This is fantastic.  Thanks so much for this.  

It may be worth mentioning that the an &quot;AsyncVirtualizingCollection&quot; is NOT a collection of Customer but rather a collection of DataWrapper.  If you try to bind to a property (say, &#039;Id&#039;) of Customer you&#039;ll get binding failure:

BindingExpression path error: &#039;Id&#039; property not found on &#039;object&#039; &#039;&#039;DataWrapper`1&#039; (HashCode=67090807)&#039;. BindingExpression:Path=Id; DataItem=&#039;DataWrapper`1&#039; (HashCode=67090807); target element is &#039;TextBlock&#039; (Name=&#039;&#039;); target property is &#039;Text&#039; (type &#039;String&#039;)

Instead you&#039;ll need to bind to Data.Id.  In the example code, this is buried down in the GridViewRowPresenter of the Style applied to ListViewItems.  It is likely to be missed by the casual observer, especially since the GridViewColumns seem to suggest that we can Bind as  DisplayMemberBinding=&quot;{Binding Id}&quot;</description>
		<content:encoded><![CDATA[<p>This is fantastic.  Thanks so much for this.  </p>
<p>It may be worth mentioning that the an &#8220;AsyncVirtualizingCollection&#8221; is NOT a collection of Customer but rather a collection of DataWrapper.  If you try to bind to a property (say, &#8216;Id&#8217;) of Customer you&#8217;ll get binding failure:</p>
<p>BindingExpression path error: &#8216;Id&#8217; property not found on &#8216;object&#8217; &#8221;DataWrapper`1&#8242; (HashCode=67090807)&#8217;. BindingExpression:Path=Id; DataItem=&#8217;DataWrapper`1&#8242; (HashCode=67090807); target element is &#8216;TextBlock&#8217; (Name=&#8221;); target property is &#8216;Text&#8217; (type &#8216;String&#8217;)</p>
<p>Instead you&#8217;ll need to bind to Data.Id.  In the example code, this is buried down in the GridViewRowPresenter of the Style applied to ListViewItems.  It is likely to be missed by the casual observer, especially since the GridViewColumns seem to suggest that we can Bind as  DisplayMemberBinding=&#8221;{Binding Id}&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andreas Pircher</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-176403</link>
		<dc:creator>Andreas Pircher</dc:creator>
		<pubDate>Sun, 13 Dec 2009 15:11:06 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-176403</guid>
		<description>A little clarification and follow-up: 

The problem occurs to me on my new Vaio Z Laptop with Win 7 Ultimate 64bit. 
Now I tested it on Win 7 RC (Build 7100) 32bit and Win Vista Ultimate 32bit and the problem did not occur on those systems.

Here is an abbreviated part of the call stack:

...VirtualizingCollection.RequestPage(int pageIndex = 8) 
...VirtualizingCollection.this[int].get(int index = 1126) 
...VirtualizingCollection.GetEnumerator()
PresentationFramework.dll!...PlaceholderAwareEnumerator.MoveNext() + 0x73 Bytes	
PresentationFramework.dll!...ItemsControlAutomationPeer.GetChildrenCore() + 0x2f2 Bytes	
PresentationFramework.dll...ListViewAutomationPeer.GetChildrenCore() + 0x2e Bytes	
PresentationCore.dll!...AutomationPeer.EnsureChildren() + 0x1c Bytes	
PresentationCore.dll!...AutomationPeer.UpdateChildren() + 0x52 Bytes	
PresentationCore.dll!...AutomationPeer.UpdateSubtree() + 0x2d8 Bytes	
...
PresentationCore.dll!...ContextLayoutManager.fireAutomationEvents() + 0xb9 Bytes	
PresentationCore.dll!...ContextLayoutManager.UpdateLayout() + 0x812 Bytes	
...

I do not know much about UI Automation but it seems as if that could be the problem here...
So it does not seem to be a general Windows 7 problem of this implementation.

Andreas</description>
		<content:encoded><![CDATA[<p>A little clarification and follow-up: </p>
<p>The problem occurs to me on my new Vaio Z Laptop with Win 7 Ultimate 64bit.<br />
Now I tested it on Win 7 RC (Build 7100) 32bit and Win Vista Ultimate 32bit and the problem did not occur on those systems.</p>
<p>Here is an abbreviated part of the call stack:</p>
<p>&#8230;VirtualizingCollection.RequestPage(int pageIndex = 8)<br />
&#8230;VirtualizingCollection.this[int].get(int index = 1126)<br />
&#8230;VirtualizingCollection.GetEnumerator()<br />
PresentationFramework.dll!&#8230;PlaceholderAwareEnumerator.MoveNext() + 0&#215;73 Bytes<br />
PresentationFramework.dll!&#8230;ItemsControlAutomationPeer.GetChildrenCore() + 0&#215;2f2 Bytes<br />
PresentationFramework.dll&#8230;ListViewAutomationPeer.GetChildrenCore() + 0&#215;2e Bytes<br />
PresentationCore.dll!&#8230;AutomationPeer.EnsureChildren() + 0&#215;1c Bytes<br />
PresentationCore.dll!&#8230;AutomationPeer.UpdateChildren() + 0&#215;52 Bytes<br />
PresentationCore.dll!&#8230;AutomationPeer.UpdateSubtree() + 0&#215;2d8 Bytes<br />
&#8230;<br />
PresentationCore.dll!&#8230;ContextLayoutManager.fireAutomationEvents() + 0xb9 Bytes<br />
PresentationCore.dll!&#8230;ContextLayoutManager.UpdateLayout() + 0&#215;812 Bytes<br />
&#8230;</p>
<p>I do not know much about UI Automation but it seems as if that could be the problem here&#8230;<br />
So it does not seem to be a general Windows 7 problem of this implementation.</p>
<p>Andreas</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andreas Pircher</title>
		<link>http://bea.stollnitz.com/blog/?p=378&#038;cpage=1#comment-176350</link>
		<dc:creator>Andreas Pircher</dc:creator>
		<pubDate>Sun, 13 Dec 2009 10:35:22 +0000</pubDate>
		<guid isPermaLink="false">http://bea.stollnitz.com/blog/?p=378#comment-176350</guid>
		<description>Hi Bea, 

First I want to thank you for your great posts. They helped me more than once. 

I am using your solution in two projects and today I recognized, that they are suddenly loading the whole collection instead of only the first one or two pages. So I downloaded your code again to see what I did wrong and suprise: your code did also load the whole collection. So to make the story a bit shorter: It seams to happen only on Windows 7. On Vista everything is OK but on Windows 7 some Code in PresentationFramework.dll accesses the Enumerator which accesses the indexer for every item which leads to loading the whole collection. And this full collection loading is also triggered by just moving the mouse inside the listview.

Has anyone else seen this problem on Windows 7? 
Any solutions/workarounds available?

Andreas</description>
		<content:encoded><![CDATA[<p>Hi Bea, </p>
<p>First I want to thank you for your great posts. They helped me more than once. </p>
<p>I am using your solution in two projects and today I recognized, that they are suddenly loading the whole collection instead of only the first one or two pages. So I downloaded your code again to see what I did wrong and suprise: your code did also load the whole collection. So to make the story a bit shorter: It seams to happen only on Windows 7. On Vista everything is OK but on Windows 7 some Code in PresentationFramework.dll accesses the Enumerator which accesses the indexer for every item which leads to loading the whole collection. And this full collection loading is also triggered by just moving the mouse inside the listview.</p>
<p>Has anyone else seen this problem on Windows 7?<br />
Any solutions/workarounds available?</p>
<p>Andreas</p>
]]></content:encoded>
	</item>
</channel>
</rss>
