If you are not partial to a little code-behind then I would leave now as there is no blendability whatsoever to be found here that is for another day…
And if you are here then you should be interested in these two items so I will give them a plug:
So let’s pimp the control…
Skinning is used to good effect to brand the PivotViewer control and integrate it into this GameMarx website An Xbox Live Indie Game search pivot.
If you want to follow along then you need to locate the PivotViewerSample code that shipped with the control. By default it is here for the August 2010 release:
C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\PivotViewer\Aug10\Source\PivotViewerSampleXapCode.zip
To achieve a similar effect to the GameMarx website you need to set the background to black and hide the Filter Panel and the Info Panel:
...
using System.Windows.Controls;
using System.Windows.Pivot;
using Microsoft.Pivot.Internal.Views;
namespace PivotViewerSample
{
/// <summary>
/// Override of PivotViewer
/// </summary>
public class CustomPivotViewer : PivotViewer
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
Grid partContainer = (Grid)this.GetTemplateChild("PART_Container");
CollectionViewerView cvv = ((CollectionViewerView)(partContainer).Children[0]);
Grid container = cvv.Content as Grid;
Grid viewerGrid = container.Children[1] as Grid;
// Background
container.Background = new SolidColorBrush(Colors.Black);
//
// Filter Panel
//
// Hide it
viewerGrid.Children[2].Visibility = System.Windows.Visibility.Collapsed;
// Reuse the space occupied by the grid column
viewerGrid.ColumnDefinitions[0].Width = GridLength.Auto;
//
// Info Panel
//
// Hide grid column that contains it
viewerGrid.ColumnDefinitions[2].Width = new GridLength(0);
}
}
}
C# Sample: CustomPivotViewer
If you prefer not to use your own filter UI controls then don’t hide the Filter Panel, ditto the Info Panel, but you all probably want the background changed at some point.
Let us now see the effect of a LinearGradientBrush:

...
// PivotViewer background
GradientStopCollection gsc = new GradientStopCollection {
new GradientStop { Color = Colors.Orange, Offset = 0.0 },
new GradientStop { Color = Colors.Yellow, Offset = 0.5 },
new GradientStop { Color = Colors.Green, Offset = 1.0 }
};
container.Background = new RadialGradientBrush(gsc) {
Center = new Point(1.0, 1.0),
GradientOrigin = new Point(1.0, 1.0),
RadiusX = 1.0,
RadiusY = 1.0
};
C# Sample: LinearGradientBrush
And finally, but not least, for this blog post an ImageBrush:
...
// PivotViewer background
StreamResourceInfo sr = Application.GetResourceStream(new Uri("PivotViewerSample;component/Resources/bgrd.jpg", UriKind.Relative));
BitmapImage bmp = new BitmapImage();
bmp.SetSource(sr.Stream);
container.Background = new ImageBrush() { ImageSource = bmp };
sr.Stream.Close();
C# Sample: ImageBrush
There are other brushes, not least, the VideoBrush but it can start to be a bit overwhelming. Now let us see some cool PivotViewer applications out there!





What would be REALLY handy is a listing of the parts for this control. If you could stick, in a table, how to get references to the different pieces of the control,..that’s would be pretty slick.
Good article though.
Pingback: Adventures with PivotViewer Part 8: Filter pane tooltips | Xpert360 Ltd Development Blog
Is there way to hide the load url that shows when the client is getting the data from the server?
Yes, this code will do that in a custom PivotViewer wrapper:
// Locate UI Elements
Grid partContainer = (Grid)this.GetTemplateChild(“PART_Container”);
CollectionViewerView cvv = ((CollectionViewerView)(partContainer).Children[0]);
Grid container = cvv.Content as Grid;
Grid viewerGrid = container.Children[0] as Grid;
// For exposing the slider
ControlBar = ((UIElement)container.Children[2]) as ControlBarView;
// Hide collection name
((Grid)ControlBar.Content).Children[1].Visibility = Visibility.Collapsed;
Make sure the PivotViewer control has finished loading.
Hi,
I want to Remove from top: Remove graph view and sort feature.
Thanks & Regards
Azhar Saiyed
// Test to hide view buttons
CollectionViewerView cvv = ((CollectionViewerView)((Grid)this.GetTemplateChild(“PART_Container”)).Children[0]);
Grid container = cvv.Content as Grid;
ControlBarView ctrlBar = container.Children[2] as ControlBarView;
Grid barcontent = (Grid)ctrlBar.Content;
DockPanel bar_dockpanel = barcontent.Children[2] as DockPanel;
bar_dockpanel.Children[1].Visibility = Visibility.Collapsed;
Great job!!! Do you know how we can increase the size of the information panel on the right? Or make the text wrap in the information panel?
Thanks much appreciated!
-Adam
Pingback: Adventures with PivotViewer Part 9: Multi-Layered Trading Cards | Xpert360 Ltd Development Blog
Pingback: Adventures with PivotViewer – Part 1 | Xpert360 Ltd Development Blog
Pingback: Xpert360 PivotViewer Blog Article Index | Xpert360 Ltd Development Blog
Hi
I want to handle the events of the facet click…
Can u please provide the inputs for it.
Is there a away to add this to the Excel Plug-in so I can select the color of the background from there and not hard code it. I might want a different background per collection and don’t want to have 10 different Silverlight viewer apps. sitting around. I’m also horrid and coding and try to stay away from it.
In Silverlight 5 I see it needs “using Microsoft.Internal.Pivot.Views;”, not “using Microsoft.Pivot.Internal.Views;”. Also it’s “System.Windows.Controls.Pivot”, not “System.Windows.Pivot”
also, in SL5 it is
CollectionViewerView cvv = CollectionViewerView)partContainer.Children[2];
instead of
CollectionViewerView cvv = ((CollectionViewerView)(partContainer).Children[0]);
Thanks! We have some SL5 apps using PivotViewer internally but have not had the time to blog about them. We are overdue a few updates for PivotViewer.