Friday, 13 May 2011

Inside PivotViewer v2. Episode 1, Legacy Support

Welcome to the first in a series of video blog posts where we'll be looking at what's new for PivotViewer v2 in Silverlight 5.

In this episode we'll take a deep-dive into PivotViewer v2 and look at what legacy support is available to all those that have created static, server-side cxml collections. We'll also see some great dynamic benefits that can be applied to these existing collections with v2.

Please leave comments, feedback and any suggestions for things you'd like to see in this series.

Inside PivotViewer v2. Episode 1, Legacy Support from Chris Arnold on Vimeo.

Here are the links to the references I make at the end of the video:

Tony Champion (.Net Rocker)


Kingsley Uyi Idehen


  1. Apologies for the small font-size in the code examples.

  2. Chris,

    Thanks for this. I also have a live PivtoViewer application at and want to move it over to the new v2 platform. Are the bits available from the PivotViewer team for me to get started?

    Jim McCurdy

  3. This looks great. HD video or bigger fonts would be good. Can't wait for the ability to modify pivotitem properties like that without forcing people to reload the collection afterwards!

    Questions - when merging those 2 collections of PivotItems at the end, you were still removing each one from the in-memory PivotViewer even though all you were doing was copying it's properties into a new item. Is it faster (and possible) to avoid that Remove call?

    With my current application, loading collections is quite slow when the # of items gets > 2,000 or 3,000. Is there a better way to handle this now? Or is this bottleneck being addressed? I was thinking of perhaps loading the first 500 or so right away, and then loading a new cxml file with all items in the background to replace it, but i'm not sure what kind of experience that would give the user. My cxml files are all entirely dynamically generated, so is there now a better way to do this?

    Some other points i'd like to see addressed in future videos:

    1. Modifying the image on the fly (in pivotviewer memory) - can we draw onto the images? Can we adjust brightness, things like that?

    2. Setting the viewstate and currently viewed items. My current app allows users to select images out of the collection (and adds them to a listview) then click a button and view only those images in the collection. The only way i found to do this was to add a unique property id and add each of those into the viewstate and then call loadcollection. Is there a better way of doing this - such as just setting the values in the viewableitems property (or whatever it's called)?

    3. On that topic, one of the big challenges we had was allowing people to select images easily. We ended up adding a Select button to the image and that would add it to the selected list (as well as hitting the space bar when zoomed in to an image). I added a little hack to detect if the shift key was pressed and mark the beginning/end of a series of images. What i really want is just the ability to do a shift-click and control-click to add images like you would do with files in explorer. Will something like that be possible?

  4. Oh, another thing a few users have complained about was the animations. Will there be a way to turn them off, so that hitting the arrow keys to move to new images will instantly change the image show rather than scrolling it over into view?