<?xml version="1.0" encoding="UTF-8" ?>

        <rss version="2.0">
        <channel>
            <title>Visiblox Blog</title>
            <description>Visiblox Blog</description>
            <copyright>Scott Logic Limited</copyright>
            
            <link>http://www.visiblox.com/blog/rss</link>
            <lastBuildDate>Mon, 13 May 2013 14:00:00</lastBuildDate>
            <pubDate>Mon, 13 May 2013 14:00:00</pubDate>

                <item>
                    <title>Visiblox for Windows 8</title>
	            <author>nwolverson</author>
                    <comments>http://www.visiblox.com/blog/posts/2013/05/13/visiblox-for-windows-8/</comments>
                    <description><![CDATA[Last year the Visiblox development team ported Visiblox Charts to Windows 8, and   we shared a beta release with you. Since then we’ve been busy tuning and polishing, and 3 weeks ago this port was released as part of Visiblox 4.0. Here we'll share our experiences with you and show you some examples of what you can achive with Visiblox on Windows 8.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2013/05/13/visiblox-for-windows-8/</link>
                    <guid>http://www.visiblox.com/blog/posts/2013/05/13/visiblox-for-windows-8/</guid>
                    <pubDate>Mon, 13 May 2013 14:00:00</pubDate>
                </item>
                <item>
                    <title>DirectX - Really really fast charts!</title>
	            <author>dthomas</author>
                    <comments>http://www.visiblox.com/blog/posts/2013/04/30/directx-really-really-fast-charts!/</comments>
                    <description><![CDATA[The 4.0 release of Visiblox brings with it even more performance, in the form of DirectX based charts. Read on for a run through of what this means for you.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2013/04/30/directx-really-really-fast-charts!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2013/04/30/directx-really-really-fast-charts!/</guid>
                    <pubDate>Tue, 30 Apr 2013 08:48:00</pubDate>
                </item>
                <item>
                    <title>Visiblox 4.0 released today!</title>
	            <author>dthomas</author>
                    <comments>http://www.visiblox.com/blog/posts/2013/04/18/visiblox-40-released-today!/</comments>
                    <description><![CDATA[After a long period of development we have now released Visiblox Charts 4.0. The new features are definitely worth the wait. The other big news is our new simplified pricing structure alongside new options on source code availability and support. Let’s get straight into the detail.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2013/04/18/visiblox-40-released-today!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2013/04/18/visiblox-40-released-today!/</guid>
                    <pubDate>Mon, 22 Apr 2013 14:00:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts meets WinRT - it&#39;s beta than ever!</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/11/19/visiblox-charts-meets-winrt-its-beta-than-ever!/</comments>
                    <description><![CDATA[We’ve decided that we’ve teased you for long enough now and it’s time to let you have at it.  Visiblox Charts for WinRT is now in open beta and we’re really excited!  Build applications with interactive, dynamic and fully customisable charts for desktop and tablets using the new WinRT environment for Microsoft’s Windows 8 and Windows RT.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/11/19/visiblox-charts-meets-winrt-its-beta-than-ever!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/11/19/visiblox-charts-meets-winrt-its-beta-than-ever!/</guid>
                    <pubDate>Mon, 19 Nov 2012 12:16:00</pubDate>
                </item>
                <item>
                    <title>Per-point Styling</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/11/13/per-point-styling/</comments>
                    <description><![CDATA[One of new features in v3.0 is the PointRendered event.  It is raised whenever Visiblox has finished rendering a point and gives its handler access to the data point and FrameworkElement representing that point.  
This opens up a whole range of possibilities, as described in this post.  ]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/11/13/per-point-styling/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/11/13/per-point-styling/</guid>
                    <pubDate>Tue, 13 Nov 2012 00:00:00</pubDate>
                </item>
                <item>
                    <title>Introducing Heat Plots and Contours</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/10/01/introducing-heat-plots-and-contours/</comments>
                    <description><![CDATA[Visiblox 3.0 contains a number of new series types, two of which are HeatPlotSeries and RasterContourSeries.  We'll explore how to use them in this blog post. ]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/10/01/introducing-heat-plots-and-contours/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/10/01/introducing-heat-plots-and-contours/</guid>
                    <pubDate>Mon, 01 Oct 2012 13:19:00</pubDate>
                </item>
                <item>
                    <title>ContextMenus in 3.0</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/09/26/contextmenus-in-30/</comments>
                    <description><![CDATA[Those of you who've upgraded to 3.0 may have noticed a change in the way ContextMenus work.  Since the new Behaviour API now subscribes to right button clicks on the mouse, those events are now considered handled and so a ContextMenu doesn't open. This post describes a new ContextMenuBehaviour that brings back ContextMenu functionality.  ]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/09/26/contextmenus-in-30/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/09/26/contextmenus-in-30/</guid>
                    <pubDate>Wed, 26 Sep 2012 14:00:00</pubDate>
                </item>
                <item>
                    <title>Chart Behaviours - new and improved in v3.0!</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/09/18/chart-behaviours-new-and-improved-in-v30!/</comments>
                    <description><![CDATA[One of the features we've worked on for the v3.0 release is the Behaviour API.  We've listened to your feature requests and the chart now supports a whole new range of inputs.  This blog post describes some of the new functionality and how it works out-of-the-box as well as how to customise it to your needs.  We've also included an example chart demonstrating what is now possible.  ]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/09/18/chart-behaviours-new-and-improved-in-v30!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/09/18/chart-behaviours-new-and-improved-in-v30!/</guid>
                    <pubDate>Tue, 18 Sep 2012 13:44:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts 3.0 – Grab it while it’s hot!</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/09/17/visiblox-charts-30-–-grab-it-while-it’s-hot!/</comments>
                    <description><![CDATA[Today is an exciting day – we’re announcing the release of Visiblox Charts 3.0!  We’ve been working away at this release for 5 months and there’s some pretty cool stuff packed into it.  Read on to find out what’s new.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/09/17/visiblox-charts-30-–-grab-it-while-it’s-hot!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/09/17/visiblox-charts-30-–-grab-it-while-it’s-hot!/</guid>
                    <pubDate>Mon, 17 Sep 2012 15:16:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts and Windows 8 - Some News!</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/09/03/visiblox-charts-and-windows-8-some-news!/</comments>
                    <description><![CDATA[Many of you have asked if we’re planning on releasing Visiblox Charts for WinRT.  Well of course we would be remiss if we didn’t, like the rest of the WPF/Silverlight ecosystem, at least investigate WinRT as an option.  Clearly, the only real way to investigate WinRT in the context of Visiblox Charts is to port the component itself.  So that’s what we did.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/09/03/visiblox-charts-and-windows-8-some-news!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/09/03/visiblox-charts-and-windows-8-some-news!/</guid>
                    <pubDate>Mon, 03 Sep 2012 10:12:00</pubDate>
                </item>
                <item>
                    <title>What&#39;s on the horizon?</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/07/11/whats-on-the-horizon/</comments>
                    <description><![CDATA[It's been a while since we've posted on the blog so I thought I'd update you all on what we've got cooking. Ironically, the lack of posts on the blog is actually a reflection on how busy we've been, not how little is going on.  So much to do, so little time...]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/07/11/whats-on-the-horizon/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/07/11/whats-on-the-horizon/</guid>
                    <pubDate>Wed, 11 Jul 2012 00:00:00</pubDate>
                </item>
                <item>
                    <title>Seismic Events with Visiblox Charts</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/06/06/seismic-events-with-visiblox-charts/</comments>
                    <description><![CDATA[Chris Grant has published a new tutorial about how to build an app to monitor earthquakes using Visiblox Charts, Bing Maps and Silverlight.  It's pretty cool!]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/06/06/seismic-events-with-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/06/06/seismic-events-with-visiblox-charts/</guid>
                    <pubDate>Wed, 06 Jun 2012 13:26:00</pubDate>
                </item>
                <item>
                    <title>Selecting Regions With a RulerBehaviour</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/05/24/selecting-regions-with-a-rulerbehaviour/</comments>
                    <description><![CDATA[In Visiblox Charts 2.2 we introduced a new behaviour called the RulerBehaviour.  This was the result of customer feedback from a few of you asking for a way to measure and highlight certain areas of the chart and also a way to then determine which points on a series fall within that area.

All of that is now supported out of the box and this blog shows you how.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/05/24/selecting-regions-with-a-rulerbehaviour/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/05/24/selecting-regions-with-a-rulerbehaviour/</guid>
                    <pubDate>Thu, 24 May 2012 14:11:00</pubDate>
                </item>
                <item>
                    <title>WPF Disciple publishes findings of Visiblox Charts performance</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/04/30/wpf-disciple-publishes-findings-of-visiblox-charts-performance/</comments>
                    <description><![CDATA[<a href="http://www.scottlogic.co.uk/blog/colin">Colin Eberhardt</a>, WPF Disciple has published another performance comparison of charts, this time in WPF.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/04/30/wpf-disciple-publishes-findings-of-visiblox-charts-performance/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/04/30/wpf-disciple-publishes-findings-of-visiblox-charts-performance/</guid>
                    <pubDate>Mon, 30 Apr 2012 17:00:00</pubDate>
                </item>
                <item>
                    <title>So what’s this Ultimate Edition thing?</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/04/30/so-what’s-this-ultimate-edition-thing/</comments>
                    <description><![CDATA[As you may have noticed we released a new version of Visiblox Charts called the Ultimate Edition.  I thought I’d take a few minutes to explain what’s new about this product and how these features relate to previous Visiblox Charts versions.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/04/30/so-what’s-this-ultimate-edition-thing/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/04/30/so-what’s-this-ultimate-edition-thing/</guid>
                    <pubDate>Mon, 30 Apr 2012 11:23:00</pubDate>
                </item>
                <item>
                    <title>Siemens, Intel and Ferrari snap up charting software Visiblox as it launches new high-performing platform</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/04/27/siemens,-intel-and-ferrari-snap-up-charting-software-visiblox-as-it-launches-new-high-performing-platform/</comments>
                    <description><![CDATA[Charting experts Visiblox has secured a series of big name brands as it unveils its latest high-performance platform to transform complex data sets into charts in lightning speed.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/04/27/siemens,-intel-and-ferrari-snap-up-charting-software-visiblox-as-it-launches-new-high-performing-platform/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/04/27/siemens,-intel-and-ferrari-snap-up-charting-software-visiblox-as-it-launches-new-high-performing-platform/</guid>
                    <pubDate>Fri, 27 Apr 2012 11:57:00</pubDate>
                </item>
                <item>
                    <title>Welcome the Visiblox Charts Ultimate Edition</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/04/24/welcome-the-visiblox-charts-ultimate-edition/</comments>
                    <description><![CDATA[Here at Visiblox we are delighted to announce the launch of Visiblox Charts Ultimate Edition!]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/04/24/welcome-the-visiblox-charts-ultimate-edition/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/04/24/welcome-the-visiblox-charts-ultimate-edition/</guid>
                    <pubDate>Tue, 24 Apr 2012 12:05:00</pubDate>
                </item>
                <item>
                    <title>Interacting With The Legend</title>
	            <author>sshiells</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/04/16/interacting-with-the-legend/</comments>
                    <description><![CDATA[<p>The <code>Legend</code> of a Visiblox Chart is often never used to its full potential. This post will introduce a few simple ideas on how to enable user interactions with <code>LegendItems</code> in order to interact with the associated series. The source code of the examples can be downloaded <a href="/media/109029/interactivelegenditems.zip">here</a>. You will need to add a reference to the <a href="http://www.visiblox.com/buy">Visiblox Charts library</a> (if you have the free version of Visiblox Charts, you will need to complete the steps in the <a href="#preparingTheLegend">Preparing The Legend</a> section first).</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/04/16/interacting-with-the-legend/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/04/16/interacting-with-the-legend/</guid>
                    <pubDate>Mon, 16 Apr 2012 00:00:00</pubDate>
                </item>
                <item>
                    <title>Introducing StreamingMode</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/04/2/introducing-streamingmode/</comments>
                    <description><![CDATA[<p>One of the most common uses for charting components is to build a chart in which the data is updated in real time. The idea is to present a chart which streams the data in a smooth and controlled manner. Visiblox Charts version 2.2 introduces a new Streaming Mode function that makes this so easy to achieve, you'll wonder why it took so much effort before.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/04/2/introducing-streamingmode/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/04/2/introducing-streamingmode/</guid>
                    <pubDate>Mon, 02 Apr 2012 14:17:00</pubDate>
                </item>
                <item>
                    <title>Introducing DynamicFilterStrategy</title>
	            <author>sshiells</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/03/19/introducing-dynamicfilterstrategy/</comments>
                    <description><![CDATA[<h3>Introduction</h3>
<p><a href="http://www.visiblox.com/blog/tag/filtering">Previous blog posts</a> have introduced FilterStrategies and some different ways that they can be used. Today we introduce the DynamicFilterStrategy, which allows you to use different FilterStrategies depending on the chart's zoom level. This gives you more control and flexibility when it comes to filtering data by allowing you to abstract overly detailed regions when the chart is fully zoomed out, but to use a greater level of detail as you zoom in. Sound complicated? It isn't.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/03/19/introducing-dynamicfilterstrategy/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/03/19/introducing-dynamicfilterstrategy/</guid>
                    <pubDate>Mon, 19 Mar 2012 11:41:00</pubDate>
                </item>
                <item>
                    <title>Announcing Visiblox Charts 2.2</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/03/13/announcing-visiblox-charts-22/</comments>
                    <description><![CDATA[<p><p>The Visiblox team is delighted to announce the availability of Visiblox Charts v2.2!  You can get a copy of the free edition now <a href="http://www.visiblox.com/download" title="Download">right here</a>. If you are a Premium customer with a valid support license, contact <a href="mailto:info@visiblox.com">support</a> to arrange your free upgrade to the new version. Not yet a Premium customer? Head <a href="http://www.visiblox.com/buy">on over</a> to get access to our excellent support along with updates and bug fix releases and get access to the <a href="http://www.visiblox.com/feature-matrix-features" title="Feature matrix">premium features</a>.</p></p><p>We've been busy over the last few months putting some great new improvements into our charts.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/03/13/announcing-visiblox-charts-22/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/03/13/announcing-visiblox-charts-22/</guid>
                    <pubDate>Tue, 13 Mar 2012 12:02:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts 2.2 and New Examples</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/03/13/visiblox-charts-22-and-new-examples/</comments>
                    <description><![CDATA[<p>As we hope you are aware by now, Visiblox Charts 2.2 is out there and available to <a href="http://www.visiblox.com/download">download</a> now. If you are a Premium customer with an eligible support license key, please contact <a href="mailto:info@visiblox.com">support</a> to arrange your upgrade. If not, what are you waiting for? <a href="http://www.visiblox.com/buy">Head this way</a> to gain access to our excellent support and upgrades.</p><p>We thought we'd just take a second to point out some of the new examples we have put together as a result of the new functionality version 2.2 of the component brings us.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/03/13/visiblox-charts-22-and-new-examples/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/03/13/visiblox-charts-22-and-new-examples/</guid>
                    <pubDate>Tue, 13 Mar 2012 11:03:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts 2.2 coming soon!</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/02/13/visiblox-charts-22-coming-soon!/</comments>
                    <description><![CDATA[<p><p>Visiblox Charts has a good reputation for its performance and flexibility - we think it's a reputation well deserved.  What's more our customers consistently give us excellent feedback about the quality of the support we provide - which we're absolutely delighted about.  Rest assured that we're not standing still though.  We're continuing to develop the product and extend its capabilities, so we thought we'd take a minute or two and give you an idea of what we've been working on that you can expect in the next release.</p>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/02/13/visiblox-charts-22-coming-soon!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/02/13/visiblox-charts-22-coming-soon!/</guid>
                    <pubDate>Mon, 13 Feb 2012 09:34:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Axes (Part 2)</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/01/30/visiblox-axes-(part-2)/</comments>
                    <description><![CDATA[<h3>Introduction</h3>
<p>Following on from our <a href="http://www.visiblox.com/blog/2012/01/visiblox-axes-part-1">previous post</a> on retemplating axes, we are now going to take a look at how we can subclass our chosen axis type to completely alter its layout. We will do this through the OnApplyTemplate method which takes various elements from the ControlTemplate and positions those elements.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/01/30/visiblox-axes-(part-2)/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/01/30/visiblox-axes-(part-2)/</guid>
                    <pubDate>Mon, 30 Jan 2012 09:59:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Axes (Part 1)</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/01/23/visiblox-axes-(part-1)/</comments>
                    <description><![CDATA[<h3>Introduction</h3>
<p>Visiblox Charts has been developed with flexibility in mind. In particular, it provides a number of ways in which to alter the appearance of a chart and its constituent parts. In this series of posts, we will be looking at ways in which you can alter the appearance of the axes in your charts. This relatively short first post will look at altering our axis template to incorporate a scroll bar that allows us to pan around our chart.</p>
<p>This example uses features from the <a href="http://www.visiblox.com/download">free version</a> of Visiblox Charts and the source code can be downloaded <a href="/media/3131/Retemplating.zip">here</a>.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/01/23/visiblox-axes-(part-1)/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/01/23/visiblox-axes-(part-1)/</guid>
                    <pubDate>Mon, 23 Jan 2012 11:57:00</pubDate>
                </item>
                <item>
                    <title>Visiblox and Interactive Styling</title>
	            <author>jwalker</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/01/16/visiblox-and-interactive-styling/</comments>
                    <description><![CDATA[<p>Two key attractions of Visiblox Charts are the interactivity offers as standard out of the box, and also the ability to fully customize the charts' appearance and style. There are several concepts which link both of the above together - namely NormalStyle, HighlightedStyle and SelectedStyle on a given series. In this post we'll be looking at explaining the above concepts, and showing some examples of how the various styles can be used on different charts to enhance the interactive experience that Visiblox Charts provides.</p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/01/16/visiblox-and-interactive-styling/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/01/16/visiblox-and-interactive-styling/</guid>
                    <pubDate>Mon, 16 Jan 2012 09:38:00</pubDate>
                </item>
                <item>
                    <title>Point &amp; Figure Charts in Visiblox</title>
	            <author>mcrease</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/01/9/point-figure-charts-in-visiblox/</comments>
                    <description><![CDATA[<p>In this post we describe how to implement a Point &amp; Figure chart in Visiblox. This example uses the free version of <a href="http://www.visiblox.com/download">Visiblox Charts</a> and the source code can be downloaded <a href="/media/3103/VisibloxPointAndFigureChart.zip">here</a>.
<ul>
	<li><a href="#overview">Overview</a></li>
	<li><a href="#pointandfiguredatapoint">Point &amp; Figure Data Point</a></li>
	<li><a href="#pointandfigureseries">Point &amp; Figure Series</a></li>
	<li><a href="#styling">Styling</a></li>
	<li><a href="#puttingitalltogether">Putting it all Together</a></li>
	<li><a href="#summary">Summary</a></li>
</ul>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/01/9/point-figure-charts-in-visiblox/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/01/9/point-figure-charts-in-visiblox/</guid>
                    <pubDate>Mon, 09 Jan 2012 12:56:00</pubDate>
                </item>
                <item>
                    <title>Happy New Year!</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2012/01/3/happy-new-year!/</comments>
                    <description><![CDATA[<h3>Welcome to 2012!</h3>
<p>We hope you had a refreshing break over Christmas and New Year and are looking forward to 2012 as much as we are. We've got some exciting developments and additions in store for you this year and we'll be sure to keep you posted with developments and announcements as they come up. In the meantime, we're always on the look out for feature suggestions, ways we can make Visiblox Charts better for you, or even just to hear about how Visiblox Charts works for you. So if there's something you'd like to share, get in touch <a href="http://www.visiblox.com/feedback">via our website</a> or <a href="mailto:info@visiblox.com">by email</a> or send us a tweet (@visiblox)!</p>
<p>All the best for 2012,</p>
<p>The Visiblox Team</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2012/01/3/happy-new-year!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2012/01/3/happy-new-year!/</guid>
                    <pubDate>Tue, 03 Jan 2012 14:22:00</pubDate>
                </item>
                <item>
                    <title>Seasons Greetings...and Charts!</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/12/12/seasons-greetingsand-charts!/</comments>
                    <description><![CDATA[<p>It's that time of year again, the first snow has fallen (at least in these parts of the world) and the shop windows are packed with Christmas decorations.  It's still business as usual at Visiblox HQ...well for the most part.  Some of the elves took a little time out to provide our blog with a bit of Christmas spirit.  
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/12/12/seasons-greetingsand-charts!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/12/12/seasons-greetingsand-charts!/</guid>
                    <pubDate>Mon, 12 Dec 2011 16:37:00</pubDate>
                </item>
                <item>
                    <title>Extending Annotations Part 2</title>
	            <author>ekouri</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/12/6/extending-annotations-part-2/</comments>
                    <description><![CDATA[<p>In <a href="http://www.visiblox.com/blog/2011/11/extending-annotations-part-1">Extending Annotations Part 1</a> blog post, we explored how to implement a custom annotation by subclassing one of the built-in annotations. In this blog post, we will discuss how to create annotations from scratch in which case we need to extend the abstract base class AnnotationBase. We will take a more detailed look at the methods we can use and/or override as well as the available properties of this class. We will also be creating the following annotations from scratch: the ImageAnnotation and the PitchforkAnnotation.
<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#imageAnnotation">Image Annotation Example</a></li>
<li><a href="#pitchforkExample">Pitchfork Annotation Example</a></li>
<li><a href="#summary">Summary</a></li>
</ul>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/12/6/extending-annotations-part-2/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/12/6/extending-annotations-part-2/</guid>
                    <pubDate>Tue, 06 Dec 2011 12:02:00</pubDate>
                </item>
                <item>
                    <title>Extending Annotations Part 1</title>
	            <author>ekouri</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/11/30/extending-annotations-part-1/</comments>
                    <description><![CDATA[<p>In previous blog posts, we have demonstrated how to <a href="http://www.visiblox.com/blog/2011/07/introducing-annotations">create, delete and interact with annotations</a> and also how to <a href="http://www.visiblox.com/blog/2011/11/styling-annotations">style annotations</a>. In this blog post, we will explore some ways to extend annotations. We will also provide a custom annotation factory to use with the AnnotationBehaviour.
<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#subclassing">Subclassing a built-in annotation</a>
<ul>
<li><a href="#extendEvent">Extending the EventAnnotation</a></li>
<li><a href="#extendLine">Extending the LineAnnotation</a></li>
</ul>
</li>
<li><a href="#customFactory">Custom Annotation Factory</a></li>
<li><a href="#summary">Summary</a></li>
</ul>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/11/30/extending-annotations-part-1/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/11/30/extending-annotations-part-1/</guid>
                    <pubDate>Wed, 30 Nov 2011 15:55:00</pubDate>
                </item>
                <item>
                    <title>Plotting Large Datasets</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/11/21/plotting-large-datasets/</comments>
                    <description><![CDATA[<p>Sometimes you might want to plot large amounts of data.  One way of doing so without losing any performance is to filter the data - <a href="http://www.visiblox.com/blog/tag/filtering">previous blog posts</a> have introduced how to filter data.  This post gives an example chart featuring a data set with hundreds of thousands of points and shows how using filtering, alongside other performance tweaks, means that very large data sets can be rendered effortlessly.  </p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/11/21/plotting-large-datasets/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/11/21/plotting-large-datasets/</guid>
                    <pubDate>Mon, 21 Nov 2011 15:16:00</pubDate>
                </item>
                <item>
                    <title>Creating A Custom Behaviour (Part 3) - The Finale</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/11/14/creating-a-custom-behaviour-(part-3)-the-finale/</comments>
                    <description><![CDATA[<p>In the previous posts, we <a href="http://www.visiblox.com/blog/2011/09/creating-a-custom-behaviour-part-1">started off</a> by creating a new behaviour that allowed users to dynamically alter the Y value of single valued points. In the second post, we <a href="http://www.visiblox.com/blog/2011/11/creating-a-custom-behaviour-part-3">extended that behaviour</a> to include multi valued points, allowing changes to the individual Y values, as well as the entire point. In the final part of our custom behaviour, we will complete the behaviour by allowing changes to the X value of points. In addition we will add functionality to undo changes and to 'lock' changes for a particular axis. 
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/11/14/creating-a-custom-behaviour-(part-3)-the-finale/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/11/14/creating-a-custom-behaviour-(part-3)-the-finale/</guid>
                    <pubDate>Mon, 14 Nov 2011 11:42:00</pubDate>
                </item>
                <item>
                    <title>Styling Annotations</title>
	            <author>ekouri</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/11/7/styling-annotations/</comments>
                    <description><![CDATA[<p>In our blog post <a href="http://www.visiblox.com/blog/2011/07/introducing-annotations">Introducing Annotations</a>, we looked into the different ways of creating and deleting annotations from the chart and how we can interact with them. In this blog post, we will take a closer look at how we can style annotations. Annotations are only available in the <a href="http://www.visiblox.com/buy">premium version of Visiblox charts</a>.</p><p><ul>
<li><a href="#elements">Annotation Elements</a></li>
<li><a href="#styles">Element Styles</a></li>
<li><a href="#applyingStyles">Applying Custom Styles</a>
<ul>
<li><a href="#targettype">Selecting The TargetType</a></li>
<li><a href="#elementstyles">Custom Element Styles</a></li>
<li><a href="#annotationstyles">Custom Annotation Style</a></li>
<li><a href="#implicitstyles">Implicit Annotation Style</a></li>
</ul>
</li>
<li><a href="#example">Example</a></li>
<li><a href="#conclusion">Conclusion</a></li>
</ul>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/11/7/styling-annotations/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/11/7/styling-annotations/</guid>
                    <pubDate>Mon, 07 Nov 2011 00:00:00</pubDate>
                </item>
                <item>
                    <title>Animating Visiblox Charts</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/10/31/animating-visiblox-charts/</comments>
                    <description><![CDATA[<h3>Introduction</h3>
<p>I was recently asked by someone if it is possible to get Visiblox Charts to animate. While we don't provide an animation framework as part of the chart's API, it really isn't hard to do and Visiblox Charts fully supports animations. So I thought it might be interesting to take a look at how to do that. This post will show you how. The full source code for this example is available for <a href="/media/3065/ChartAnimation.zip" title="Source code for post">download from here</a>. Just add a reference to <a href="http://www.visiblox.com/download" title="Download Visiblox Charts">Visiblox Charts 2.1</a> and you're off. ]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/10/31/animating-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/10/31/animating-visiblox-charts/</guid>
                    <pubDate>Mon, 31 Oct 2011 09:11:00</pubDate>
                </item>
                <item>
                    <title>Bubble Charts</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/10/24/bubble-charts/</comments>
                    <description><![CDATA[<p>Bubble charts are used to present data in a similar manner to scatter charts, in that they display individual points based on their X and Y values. In addition, bubble charts can represent a third variable for each point which is used to determine the size of each point.  
The premium release of Visiblox Charts features the TemplatedSeries, which makes it easy to produce bubble charts - this blog post will show you how.  </p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/10/24/bubble-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/10/24/bubble-charts/</guid>
                    <pubDate>Mon, 24 Oct 2011 07:47:00</pubDate>
                </item>
                <item>
                    <title>Creating a custom Behaviour (part 2)</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/10/17/creating-a-custom-behaviour-(part-2)/</comments>
                    <description><![CDATA[<p>In this, the second part of our custom behaviour, we will look at extending our <a href="http://www.visiblox.com/blog/2011/09/creating-a-custom-behaviour-part-1">initial implementation</a> to allow extra functionality around MultiValueDataPoints.</p><p>Our first pass at this behaviour provided the ability to click on a point and drag it up and down, altering its Y Value. This works very well for series that use data points with only a single value, but what about the more complex series types, such as Candlestick or HLOC (High/Low/Open/Close)? This post will examine the techniques involved in allowing a user to alter any of the Y values associated with a point in one of these series types.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/10/17/creating-a-custom-behaviour-(part-2)/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/10/17/creating-a-custom-behaviour-(part-2)/</guid>
                    <pubDate>Mon, 17 Oct 2011 09:46:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Support for Theming</title>
	            <author>mroberts</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/10/11/visiblox-support-for-theming/</comments>
                    <description><![CDATA[<p>Version 2.1 of Visiblox now includes extensive support for theming which allows the entire chart and all series to be restyled dynamically by simply providing your own custom theme.</p><p>In this blog post, I plan to take you through each stage in creating a simple theme to display a simple line series in alternate theme to our traditional Visiblox styling. I'll also modify the chart control directly to reposition the title label after the chart.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/10/11/visiblox-support-for-theming/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/10/11/visiblox-support-for-theming/</guid>
                    <pubDate>Tue, 11 Oct 2011 08:05:00</pubDate>
                </item>
                <item>
                    <title>Creating a custom Behaviour (part 1)</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/09/26/creating-a-custom-behaviour-(part-1)/</comments>
                    <description><![CDATA[<p>In the first in a series of posts on creating a custom behaviour, we are going look at how to extend the BehaviourBase class to create a behaviour that allows a user to change data points using the mouse.</p><p>To begin with, the behaviour will only allow the moving of single valued points on the Y axis. As the behaviour progresses it will grow to allow the changing of multi-valued data points (such as those used in a Candlestick series), changing the X values of the points and interacting with other behaviours.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/09/26/creating-a-custom-behaviour-(part-1)/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/09/26/creating-a-custom-behaviour-(part-1)/</guid>
                    <pubDate>Mon, 26 Sep 2011 13:18:00</pubDate>
                </item>
                <item>
                    <title>Visiblox and Expression Blend</title>
	            <author>ekouri</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/09/20/visiblox-and-expression-blend/</comments>
                    <description><![CDATA[<p>In <a href="http://www.visiblox.com/blog/2011/09/announcing-visiblox-charts-2-1"> version 2.1 of Visiblox Charts</a>, we have added support for <a href="http://www.microsoft.com/expression/products/blend_overview.aspx" target="_blank">Microsoft Expression Blend</a>. The premium version is shipped along with a design library, the Visiblox.Charts.Design.dll, which holds some extra information when building charts with Expression Blend.</p>
<h3 id="overview">Overview</h3>
<p>Support for Blend includes the following:</p>
<ul>
<li><strong>Grouping Visiblox Charts properties</strong> in different attribute panels depending on their functionality.</li>
<li>Customizing the display of specific properties to provide a more <strong>user friendly interface</strong>. For example, when the chart is selected and the Series property is exposed, you can easily select a series type to add to the chart.</li>
<li>Adding the Visiblox Charts components into the <strong>asset library</strong>.</li>
<li>Providing <strong>default initializers</strong> for all the chart types.</li>
</ul>
<div style="overflow: hidden;">
<div style="float: left; width: 150px; text-align: center; margin: 10px 20px;"><a href="/media/3016/BlendPropertiesPanel.png"><img class="alignleft size-thumbnail wp-image-2908" src="/media/3007/BlendPropertiesPanel-150x150.png" alt="" width="150" height="150" /></a><br /> Grouping Properties</div>
<div style="float: left; width: 150px; text-align: center; margin: 10px 20px;"><a href="/media/3017/SeriesDropdown.png"><img class="alignleft size-thumbnail wp-image-2912" src="/media/3008/SeriesDropdown-150x150.png" alt="" width="150" height="150" /></a><br /> Adding a series</div>
<div style="float: left; width: 150px; text-align: center; margin: 10px 20px;"><a href="/media/3018/AssetLibrary.png"><img class="alignleft size-thumbnail wp-image-2911" src="/media/3009/AssetLibrary-150x150.png" alt="" width="150" height="150" /></a>Asset Library</div>
</div>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/09/20/visiblox-and-expression-blend/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/09/20/visiblox-and-expression-blend/</guid>
                    <pubDate>Tue, 20 Sep 2011 16:33:00</pubDate>
                </item>
                <item>
                    <title>Introduction to Discontinuous Line Series</title>
	            <author>ekouri</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/09/13/introduction-to-discontinuous-line-series/</comments>
                    <description><![CDATA[<p>One of the new features introduced in <a href="http://www.visiblox.com/blog/2011/09/announcing-visiblox-charts-2-1"> version 2.1 of Visiblox Charts</a> is the <strong>DiscontinuousLineSeries</strong>. In the previous versions, in order to render gaps in your line or change the styling for one particular region, you had to use multiple LineSeries or implement your own series. This blog post will demonstrate how to use the DiscontinuousLineSeries to easily and - most importantly - with minimum code get the desired results.</p>
<ul>
<li><a href="#how">How it works</a></li>
<li><a href="#examples">Examples</a>
<ul style="margin-left: 20px;">
<li><a href="#simple">Simple style change</a></li>
<li><a href="#hideExample">Hide points and areas across the discontinuity</a></li>
<li><a href="#showExample">Show diamond shaped points only across the discontinuity</a></li>
<li><a href="#specialPoints">Add special points on top of the base line</a></li>
</ul>
</li>
<li><a href="#application">Combined Application</a></li>
<li><a href="#conclusion">Summary</a></li>
</ul>
<h3 id="how">How it works</h3>
<p>The <strong>DiscontinuousLineSeries</strong> is based on the <strong>LineSeries</strong> which means that it inherits all the LineSeries styles and dependency properties. Also, just like every other series type, it gets its data from the DataSeries property. The difference is that you can add null DataPoints, which will affect the next DataPoint in the DataSeries. For example, if we added 3 DataPoints: (1,1), (2,2), (3,3) and we wanted point (2,2) to have a different style or introduce a gap in the line, we would have to add 4 DataPoints in the following order: (1,1), null, (2,2), (3,3).]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/09/13/introduction-to-discontinuous-line-series/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/09/13/introduction-to-discontinuous-line-series/</guid>
                    <pubDate>Tue, 13 Sep 2011 12:49:00</pubDate>
                </item>
                <item>
                    <title>Announcing Visiblox Charts 2.1</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/09/8/announcing-visiblox-charts-21/</comments>
                    <description><![CDATA[<p>The Visiblox team is delighted to announce the availability of Visiblox Charts v2.1!
<h3>New Features</h3>
Lots of new features have been added to the charts since 2.0, including:
<ul>
	<li><p><strong>Discontinuous line series</strong> - This new series type allows the plotting of lines with gaps or alternately styled segments. There are some examples of these in our <a href="http://www.visiblox.com/examples">examples gallery</a>: <a href="http://www.visiblox.com/examples/DiscontinuousLineChart">Discontinous Line Example</a> and <a href="http://www.visiblox.com/examples/ProjectionChart">Projection Example</a>.</p></li>
	<li><p><strong>Data labels</strong> - A number of chart series (line, bar, column and band series) now support data labels. These are labels placed next to the data points showing the value for that point. This is demonstrated by the example found <a href="http://www.visiblox.com/examples/ThemedChart">here</a>.</p></li>
	<li><p><strong>Reverse Axes</strong> - All axis types now support reversing, which allows them to be plotted in the reverse direction with the larger values at the bottom or left and the smaller values at the top or right for Y and X respectively. See this in action in our <a href="http://www.visiblox.com/examples/ReversedAxis">reversed axis example</a>.</p></li>
	<li><p><strong>Theme support and styling changes</strong> - We’ve introduced themes in Visiblox Charts 2.1 which with the simple switch of a resource file restyle the visuals of the chart. To support themes the styling code in Visiblox Charts has been reviewed and improved. In addition some pre-defined themes are included in the premium distribution which can be used as is or modified to suit. The <a href="http://www.visiblox.com/examples/ThemedChart">previously mentioned example</a> shows off the packaged themes.</p></li>
	<li><p><strong>Expression Blend support</strong> - To complement the new styling improvements, the premium edition of Visiblox Charts 2.1 now comes with design time support for Expression Blend.</p></li>
	<li><p><strong>Improved MVVM support</strong> - One of the missing jigsaw pieces to our MVVM support was to make the BindableDataSeries' ItemSource property bindable. This has now been implemented, making the use of Visiblox Charts in an MVVM context even easier.</p></li>
	<li><p><strong>New per-point styling on bar and column series</strong> - When you're only plotting one column or bar series on the chart, it can be desirable to have each bar or column rendered in a different colour. In previous versions of Visiblox Charts this wouldn't have been easily possible, but we've now introduced a per-point styling mode on bar and column series to support this. The Series will render each bar or column in a different colour, based on the Chart's palette.</p></li>
</ul>
There is a free version of <a href="http://www.visiblox.com/download">Visiblox Charts 2.1</a> available for download now, so why not give it a spin?</p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/09/8/announcing-visiblox-charts-21/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/09/8/announcing-visiblox-charts-21/</guid>
                    <pubDate>Thu, 08 Sep 2011 11:28:00</pubDate>
                </item>
                <item>
                    <title>Saving a Chart as an Image</title>
	            <author>awelsh</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/09/6/saving-a-chart-as-an-image/</comments>
                    <description><![CDATA[<p>We are often asked if there is a built-in way to save a Visiblox Chart as an image file. Unfortunately, at the time of writing, the answer to this is no. However, it doesn't take too much code to make it possible and this blog post is going to describe the steps involved.</p><p><h3>WPF vs Silverlight</h3>
This post focuses on the Silverlight solution, which is more complex and requires the use of third party classes. The source code for this post, which can be downloaded <a href="/media/2979/SaveAsImage.zip">here</a>, contains both Silverlight and WPF solutions to saving a chart as an image. If you look at this source, you will see that the WPF solution is a lot simpler, with all the functionality in one place and no external classes required.</p><p><h3>Chart Interaction</h3>
There are a number of ways to enable the save functionality on a chart; the most common being a Save As Image context menu. Using this approach required the use of the premium version of Visiblox Charts which allows us to disable the default context menu behaviour.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/09/6/saving-a-chart-as-an-image/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/09/6/saving-a-chart-as-an-image/</guid>
                    <pubDate>Tue, 06 Sep 2011 10:24:00</pubDate>
                </item>
                <item>
                    <title>Combining FilterStrategies</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/08/9/combining-filterstrategies/</comments>
                    <description><![CDATA[<p>A <a href="http://www.visiblox.com/blog/2011/04/visiblox-charts-data-filtering-sampling-and-the-filtereddataseries">previous blog post</a> has covered the topic of FilteredDataSeries - in short, they're a way of dynamically filtering out the DataPoints plotted by a series.  The policy used to determine which points are excluded is implemented in an IFilterStrategy and the FilteredDataSeries holds a reference to an instance of that implementation.  </p><p>Visiblox already comes with one implementation, WindowedFilterStrategy, another one can be downloaded from the blog post mentioned above and, of course, you can implement your own strategies.  But suppose the strategy you want is essentially a combination of pre-existing strategies?  This post shows how you can chain two filters together.  
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/08/9/combining-filterstrategies/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/08/9/combining-filterstrategies/</guid>
                    <pubDate>Tue, 09 Aug 2011 11:36:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts 2.1 - A Sneak Peek</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/07/19/visiblox-charts-21-a-sneak-peek/</comments>
                    <description><![CDATA[<p><h3>Introduction</h3></p><p>We get a lot of great feedback from our customers on what features they would like to see and we try and use that feedback to inform our product roadmap.  In the months since the last release the product team have been beavering away in the back room preparing a new release with some really exciting new features, so I thought it might be a nice idea to give you an idea of what's in the pipeline.</p><p>The main focus areas for this release have been implementing a number of features our customers have been asking for and working on the visuals of Visiblox Charts.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/07/19/visiblox-charts-21-a-sneak-peek/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/07/19/visiblox-charts-21-a-sneak-peek/</guid>
                    <pubDate>Tue, 19 Jul 2011 10:15:00</pubDate>
                </item>
                <item>
                    <title>Introducing Annotations</title>
	            <author>ekouri</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/07/12/introducing-annotations/</comments>
                    <description><![CDATA[<p>Chart annotations are visual elements that can be used to mark points or areas of some significance. For example, in stock charts they can be used to draw trend lines, callout text boxes, highlighted regions, cycle lines and many more. In this blog post, we will be introducing the annotations provided by the premium version of Visiblox charts.
<div style="overflow:hidden">
<div style="float:left; width: 190px; text-align:center"><a href="/media/2928/trendLine.png"><img src="/media/2922/trendLine-150x150.png" alt="" style="border:1px solid #000000" title="trendLine" width="150" height="150" class="alignleft size-thumbnail wp-image-2757" /></a><br />Trend Lines</div>
<div style="float:left; width: 190px; text-align:center"><a href="/media/2929/cycleLines.png"><img src="/media/2923/cycleLines-150x150.png" alt="" style="border:1px solid #000000" title="cycleLines" width="150" height="150" class="alignleft size-thumbnail wp-image-2756" /></a><br />Cycle Lines</div>
<div style="float:left; width: 190px; text-align:center"><a href="/media/2930/calloutRectangle.png"><img src="/media/2924/calloutRectangle-150x150.png" alt="" style="border:1px solid #000000" title="calloutRectangle" width="150" height="150" class="alignleft size-thumbnail wp-image-2755" /></a><br />Highlighted region with callout textbox</div>
</div>
<ul>
<li><a href="#overview">Basic Concepts</a></li>
<li><a href="#defaultAnnotations">Default Annotations in Visiblox</a></li>
<li><a href="#adding">Creating Annotations</a></li>
<ul style="margin-left:20px;">
<li><a href="#annotationBehaviour">Creating Annotations Interactively</a></li>
<li><a href="#annotationToolbar">Creating Annotations Interactively: Example (Building An Annotation Toolbar)</a></li>
<li><a href="#programmatic">Creating Annotations Programmatically</a></li>
<li><a href="#liveChart">Creating Annotations Programmatically: Example (Creating A Live Chart With Annotations)</a></li>
</ul>
<li><a href="#conclusion">Summary</a></li>
</ul>
<h3 id="overview">Basic Concepts</h3>
In  order to better understand how annotations work in Visiblox, we will start by introducing some basic concepts.
Every chart contains an <strong>Annotations Collection</strong> which holds all the annotations plotted against the chart. To add or remove annotations from the chart, constitutes - among others - the equivalent action on the Annotations Collection. </p><p>Annotations wouldn't be very useful (or fun!) if we couldn't interact with them - drag them around the plot area, resize them or edit the text. Interaction can very easily be enabled. You just need to set <strong>IsInteractionEnabled</strong> to true and <strong>ClickMode</strong> to <strong>Drag</strong>. And to make interaction even easier, grippers appear at the edges of the annotations when you mouse over them.</p><p>Interaction with annotations, includes creating and deleting them. The creation process is a bit more complicated and will be covered later in this blog post. Deletion is much easier; in fact, you only need to set ClickMode to <strong>Delete</strong> and the cursor will turn into an eraser. To delete an annotation programmatically, all you need to do is remove it from the Annotations Collection.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/07/12/introducing-annotations/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/07/12/introducing-annotations/</guid>
                    <pubDate>Tue, 12 Jul 2011 15:52:00</pubDate>
                </item>
                <item>
                    <title>Reducing Memory Usage in Visiblox Charts</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/07/7/reducing-memory-usage-in-visiblox-charts/</comments>
                    <description><![CDATA[<p><h3>Introduction</h3></p><p>When plotting really large volumes of data there are two primary concerns: performance and memory usage.  We have talked previously on various occasions about how to improve performance in Visiblox Charts by <a href="http://www.visiblox.com/blog/2011/01/optimising-visiblox-charts-performance">optimising the way you use the charts</a> and by<a href="http://www.visiblox.com/blog/2011/04/visiblox-charts-data-filtering-sampling-and-the-filtereddataseries"> introducing filtering or sampling</a> to reduce the amount of data you plot.  In this post we’re going to be looking at ways to reduce the amount of memory used by Visiblox Charts.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/07/7/reducing-memory-usage-in-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/07/7/reducing-memory-usage-in-visiblox-charts/</guid>
                    <pubDate>Thu, 07 Jul 2011 12:53:00</pubDate>
                </item>
                <item>
                    <title>Plotting Mathematical Functions on Visiblox</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/06/20/plotting-mathematical-functions-on-visiblox/</comments>
                    <description><![CDATA[<p>There was a <a href="http://www.scottlogic.co.uk/2011/06/mathematical-style-plots-retemplating-visiblox-charts/">recent, very cool blog post published</a> which showed how to re-template Visiblox Charts to produce a mathematical style quadrant plot.  One of the comments there suggested it would be nice if Visiblox Charts supported function plotting out of the box, so I thought I'd take the opportunity to show how easy it is to write your own IDataSeries implementation by doing just that.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/06/20/plotting-mathematical-functions-on-visiblox/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/06/20/plotting-mathematical-functions-on-visiblox/</guid>
                    <pubDate>Mon, 20 Jun 2011 12:32:00</pubDate>
                </item>
                <item>
                    <title>Data Binding with Visiblox Charts</title>
	            <author>shogarth</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/06/13/data-binding-with-visiblox-charts/</comments>
                    <description><![CDATA[<p>Data binding is one of the most powerful features in WPF and Silverlight - allowing you to connect your business logic to a user interface with minimal effort. Visiblox Charts is lightweight as it is built from the ground-up to support data binding. This blog post is a tutorial on how to integrate Visiblox Charts into your application using data binding.</p>
<h3>Contents</h3>
<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#bds">The BindableDataSeries class</a>
<ul>
<li><a href="#bds-intro">Introduction</a></li>
<li><a href="#bds-sa">Data Binding - Standard Approach</a></li>
<li><a href="#bds-mvc">Data Binding with Multi-Valued Charts</a></li>
<li><a href="#bds-sc">Data Binding with Stacked Charts</a></li>
</ul>
</li>
<li><a href="#asg">The AutoSeriesGenerator class</a>
<ul>
<li><a href="#asg-intro">Introduction</a></li>
<li><a href="#asg-sa">AutoSeriesGenerator - Standard Approach</a></li>
<li><a href="#asg-mvc">AutoSeriesGenerator with Multi-Valued Charts</a></li>
<li><a href="#asg-sc">AutoSeriesGenerator with Stacked Charts</a></li>
</ul>
</li>
<li><a href="#end">Summary</a></li>
</ul>
<hr />
<h3 id="overview">Overview</h3>
<p>In Visiblox Charts, there are two definitions of a series. A <strong>data series</strong> (defined by the IDataSeries interface) holds data that is to be plotted onto a chart. A <strong>chart series </strong> (defined by the IChartSeries interface) is responsible for the visual representation of a data series. Setting the <strong>DataSeries </strong> property on a chart series supplies its underlying data. This can be summarised in the following diagram:<br /> <a href="/media/2900/chart-series-relationship.png"><img class="aligncenter size-full wp-image-2630" src="/media/2900/chart-series-relationship.png" alt="" width="590" height="127" /></a></p>
<p>It is also possible to bind business objects directly to a chart series, removing the necessity to create a data point for each business object manually. Visiblox supports two methods of data binding:</p>
<ul>
<li>BindableDataSeries</li>
<li>AutoSeriesGenerator</li>
</ul>
<p>I will now cover each of these methods of data binding individually. This post is written against version 2.08 of Visiblox Charts, which at the time of writing is the most recent version. Data binding with Visiblox is possible both in XAML and code-behind. For brevity I will provide all of my sample solutions in XAML-only, although the attached example solution file will also contain code-behind samples. So, let's begin!</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/06/13/data-binding-with-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/06/13/data-binding-with-visiblox-charts/</guid>
                    <pubDate>Mon, 13 Jun 2011 13:16:00</pubDate>
                </item>
                <item>
                    <title>Plotting Candlestick Series with Visiblox Charts</title>
	            <author>plal</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/05/24/plotting-candlestick-series-with-visiblox-charts/</comments>
                    <description><![CDATA[<p><i>In this post we look at plotting large amounts of data using candlestick series</i>
<ul>
<li><a href="#bindable">Using Candlesticks/HLOC with a BindableDataSeries</a>
<li><a href="#navigation">Navigating time series</a>
<li><a href="#xAxis">Fixing x-axis height</a>
<li><a href="#filtering">FilteredDataSeries</a>
<li><a href="#rescaling">Rescaling the Y-axis</a>
<li><a href="#weekends">Dealing with weekend gaps</a>
<li><a href="#conclusion">Putting it all together</a>
</ul></p><p>The <a href="http://www.visiblox.com/feature-matrix-features">premium release</a> of Visiblox Charts supports candlestick and HLOC series.  Whilst there are <a href="http://www.visiblox.com/examples/CandlestickChart">examples</a> provided on the <a href="http://www.visiblox.com/examples">examples page</a>, this blog post describes a chart that plots substantially more data and with a few more interesting features also added in.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/05/24/plotting-candlestick-series-with-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/05/24/plotting-candlestick-series-with-visiblox-charts/</guid>
                    <pubDate>Tue, 24 May 2011 14:37:00</pubDate>
                </item>
                <item>
                    <title>Printing Visiblox Charts</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/05/17/printing-visiblox-charts/</comments>
                    <description><![CDATA[<p>A question we get a lot from our customers is "Does Visiblox Charts provide support for printing?".  Well the answer is yes, you can print Visiblox Charts using the standard WPF and Silverlight printing APIs.  </p><p>In this post we're going to take a look at printing with Visiblox Charts.  I'm going to focus on the Silverlight platform.  However, I will make some comments about using Visiblox Charts in WPF printing at the end as well.</p><p><h3>Printing In Silverlight</h3></p><p>There are already lots of articles out there on the web about how to use the printing capabilities provided by the framework.  If you need more information on that I suggest you check out <a href="http://www.silverlightshow.net/items/Advanced-printing-in-Silverlight-4.aspx">this for Silverlight</a> and <a href="http://www.switchonthecode.com/tutorials/printing-in-wpf">this for WPF</a>, or any of the many other resources to be found out there on the subject.</p><p>Here we're just going to concentrate on the Visiblox Charts part of the story.</p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/05/17/printing-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/05/17/printing-visiblox-charts/</guid>
                    <pubDate>Tue, 17 May 2011 08:27:00</pubDate>
                </item>
                <item>
                    <title>Common Windows Phone 7 Performance Challenges</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/05/10/common-windows-phone-7-performance-challenges/</comments>
                    <description><![CDATA[<p>This article aims to collect the most important performance challenges I've come across when working on various WP7 projects - the most well known being <a href="http://www.visiblox.com/blog/2011/02/announcing-visiblox-charts-for-windows-phone-7">Visiblox Charts for Windows Phone 7</a> and <a href="http://cocktailflow.com">Cocktail Flow</a> (On a note, I gave a talk on this topic at the <a href="http://wpug.net/">London Windows Phone 7 user group</a> - the slides from that event can be viewed <a href="http://www.slideshare.net/GergelyOrosz/windows-phone-7-real-world-performance-challenges">from here</a>).</p><p><h3>Networking Causing UI Lags</h3></p><p>The most common class to use for networking tasks is the <a href="http://msdn.microsoft.com/en-us/library/system.net.webclient(v=vs.95).aspx">WebClient</a> class. It's the simplest networking class to use, it takes 3 lines to grab a piece of web content:
<pre class="brush: c-sharp; toolbar: false; ">
var client = new WebClient();
client.DownloadStringCompleted += (s, ev) =&gt; { responseTextBlock.Text = ev.Result; };
client.DownloadStringAsync(new Uri("http://www.sherdog.com/rss/news.xml"))
</pre></p><p>Unfortunately there's a serious issue that's not mentioned in the documentation of this class - it runs on the UI thread most of the time making the UI unresponsive at times.</p><p>The workaround to this issue is to not use WebClient, but use the <a href="http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest(v=vs.95).aspx">HttpWebRequest</a> class (which is actually used by WebClient as well). HttpWebRequest has a bit less straightforward API than WebClient and - since it doesn't run on the UI thread - it's the caller's responsibility to marshall back to the UI thread:
<pre class="brush: c-sharp; toolbar: false; ">
var request = (HttpWebRequest)WebRequest.Create(new Uri("http://www.sherdog.com/rss/news.xml"));
request.BeginGetResponse(r =&gt;
{
        var httpRequest = (HttpWebRequest)r.AsyncState;
        var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(r);

        using (var reader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var response = reader.ReadToEnd();

            Deployment.Current.Dispatcher.BeginInvoke(new Action(() =&gt;
                {
                    responseTextBlock.Text = response;
                }));
        }
}, request);
</pre>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/05/10/common-windows-phone-7-performance-challenges/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/05/10/common-windows-phone-7-performance-challenges/</guid>
                    <pubDate>Tue, 10 May 2011 14:35:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts, data filtering, sampling and the FilteredDataSeries</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/04/26/visiblox-charts,-data-filtering,-sampling-and-the-filtereddataseries/</comments>
                    <description><![CDATA[<p><h3>Too much data?</h3></p><p>As has been previously <a href="http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/">discussed</a>, Visiblox Charts is pretty fast.  We're continually working to find further improvements as well.  In addition, there are <a href="http://www.visiblox.com/blog/2011/01/optimising-visiblox-charts-performance">a number of things you can look at</a> to squeeze the last bit of performance of the component as well.  Unfortunately, if you throw enough data at it even Visiblox Charts will eventually struggle.  When that happens there are basically two options:</p><p><ol>
	<li>Change the requirements so you don't have to show as much data</li>
	<li>Filter or sample the data</li>
</ol></p><p>Clearly, option 1 isn't always a possibility or even desirable.  Usually people who are in favour of data sampling will point out that a chart is only a fixed number of pixels wide and so showing much more data than that doesn't add that much value which is true to a certain degree.  In Visiblox Charts, this is not quite as clear an argument because the component gives the user the ability to zoom in and see more detail, which clearly isn't possible if that data isn't there.  Where data sampling gets really tricky though is trying to preserve the important aspects of the data while reducing the amount of data.</p><p>The obvious option is to just sample the data in your model and only present the sampled data to the chart.  That works just fine if your use case is relatively static, but if you need to change the way sampling works based on some interaction of the user (e.g. zooming) it may be nicer to let the sampling happen in the chart.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/04/26/visiblox-charts,-data-filtering,-sampling-and-the-filtereddataseries/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/04/26/visiblox-charts,-data-filtering,-sampling-and-the-filtereddataseries/</guid>
                    <pubDate>Tue, 26 Apr 2011 08:12:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts 2.0 released</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/04/19/visiblox-charts-20-released/</comments>
                    <description><![CDATA[<p>The Visiblox team is happy to announce the release of Visiblox Charts v2.0. The free version with the documentation can be downloaded from the <a href="http://visiblox.com/download">download page</a>.</p><p><h3>New Features</h3>
Lots of new features have been added to the charts since 1.9, including:</p><p><ul>
<li><strong>Premium version of Visiblox Charts for Windows Phone 7</strong> - Following the <a href="http://www.visiblox.com/blog/2011/02/announcing-visiblox-charts-for-windows-phone-7">beta release of Visiblox Charts for Windows Phone 7</a> in 1.9, we are now proud to announce the full availability of our <a href="http://www.visiblox.com/buy">premium edition component</a> on the Windows Phone 7 platform.   
</li>
<li><strong>Radar and Polar Charts</strong> - We’ve expanded the range of chart types supported by Visiblox Charts to include Radar and Polar charts.  You can see some examples of these on our website: <a href="http://www.visiblox.com/examples/RadarChart">radial chart example</a> and <a href="http://www.visiblox.com/examples/PolarChart">polar chart example</a>.
<li><strong>New Stacking API</strong> - We’ve redesigned the way stacked charts are handled, now allowing stacking of line series, area series, staircase and spline series. Hundred percent stacked mode is supported, as well as placing multiple stacked series next to each other. <a href="http://www.visiblox.com/examples">Check out the examples section</a> of our website for a look at the new stacked charts.
</li>
<li><strong>Spline Charts</strong> - We’ve introduced spline (or rounded curve) charts.  These operate just like normal line series but provide curve smoothing with variable tension. Spline charts can be created using the SplineSeries class.</li>
<li><strong>Automatic Series Construction Support</strong> - We’ve added functionality to support directly binding data sources to the chart and have it automatically create the chart series to display that data.  For example, bind collections of domain objects and have the chart automatically generate a number of line series from those.  Take a look at the AutoSeriesGenerator class for this new functionality.</li>
<li><strong>Improved Core Component</strong> - In addition to the new features we've spent considerable time further improving existing features. Enhancements include memory optimisations, pixel snapping for sharper rendering on all platforms, better axis label positioning and alignment and more.</li>
</ul></p><p>Why not <a href="http://www.visiblox.com/download">download version 2.0</a> at and give it a spin?</p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/04/19/visiblox-charts-20-released/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/04/19/visiblox-charts-20-released/</guid>
                    <pubDate>Tue, 19 Apr 2011 09:19:00</pubDate>
                </item>
                <item>
                    <title>Using TemplatedSeries with Visiblox Charts: An Example</title>
	            <author>shogarth</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/03/22/using-templatedseries-with-visiblox-charts-an-example/</comments>
                    <description><![CDATA[The ability to template controls in Silverlight and WPF is a powerful feature, representing a <strong>separation of concerns</strong> between the domain logic and the presentation of that logic; all glued together through data binding. Support for templating and data binding are both included in Visiblox Charts *, and this blog post will demonstrate how to develop an application putting these concepts into use. The application I will build is based upon searching the Twitter public feed for a user-defined search term. Tweets are gathered using the <a href="http://search.twitter.com/" target="_blank" title="Twitter Search API">Twitter Search API</a> (<a href="http://www.silverlight.net/learn/videos/all/twitter-search-monitor/">as originally documented by Tim Heuer</a>), analysed for a mood and plotted onto a Visiblox data series.]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/03/22/using-templatedseries-with-visiblox-charts-an-example/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/03/22/using-templatedseries-with-visiblox-charts-an-example/</guid>
                    <pubDate>Tue, 22 Mar 2011 09:21:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts Ranges Demystified</title>
	            <author></author>
                    <comments>http://www.visiblox.com/blog/posts/2011/03/15/visiblox-charts-ranges-demystified/</comments>
                    <description><![CDATA[<p>This blog post will introduce the concept of a Range that Visiblox Charts uses to describe the limits of an axis.  It will cover the following topics:
<ul>
	<li><a href="#section1">What is a Range?</a></li>
	<li><a href="#section2">Auto-Calculated Ranges</a></li>
	<li><a href="#section3">Setting a Fixed Range</a></li>
	<li><a href="#section4">IAxis.Range vs IAxis.ActualRange</a></li>
	<li><a href="#section5">IRange and IRangeWithEffectiveLimits</a></li>
	<li><a href="#section6">Exploring Continuous and Discontinuous Ranges</a></li>
	<li><a href="#section7">Conclusion</a></li>
</ul></p><p></p><p><a name="section1"></a>
<h3 >What is a Range?</h3></p><p>In Visiblox Charts we have a notion, described by the <code>IRange</code> interface, of a value range.  This is primarily used to tell an axis how much of a value range to show.  The <code>IRange</code> interface is really quite simple and basically just has a <code>Maximum</code> and a <code>Minimum</code> (and a few methods to grow the range).  There are various implementations of <code>IRange</code> (or rather more specifically <code>IRange&lt;T&gt;</code>) out of the box which provide strongly typed versions of <code>Maximum</code> and <code>Minimum</code>.  These are: <code>DoubleRange</code>, <code>DateTimeRange</code> and <code>CategoryRange</code>, which map quite nicely to the various axes which are provided out of the box with Visiblox Charts.</p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/03/15/visiblox-charts-ranges-demystified/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/03/15/visiblox-charts-ranges-demystified/</guid>
                    <pubDate>Tue, 15 Mar 2011 16:34:00</pubDate>
                </item>
                <item>
                    <title>Using Pie Charts in Visiblox Charts (Silverlight, WPF and Windows Phone)</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/03/1/using-pie-charts-in-visiblox-charts-(silverlight,-wpf-and-windows-phone)/</comments>
                    <description><![CDATA[<p>In the <a href="http://www.visiblox.com/blog/2011/02/visiblox-charts-v1-9-1-released">1.9 release of Visiblox</a> we've added support for pie charts. This article gives an overview of these, shows basic usage and also implements an example application running on Silverlight, WP7 and WPF that uses nested pie charts. </p><p>Here's what the application looks like running on Windows Phone 7:
<img src="/media/2831/wp7PieChart.jpg" alt="" title="wp7PieChart" width="590" height="320" class="alignnone size-full wp-image-2213" /></p><p>This article is going to cover the following:</p><p><ul>
<li><a href="#relationBetweenPieCharts">Relationship Between Pie Charts and Other Series</a></li>
<li><a href="#creatingPieCharts">Creating Pie Charts</a>
<ul>
<li><a href="#creatingPieChartsWithNoDataBinding">Creating Pie Charts without Data Binding</a></li>
<li><a href="#creatingPieChartsWithDataBinding">Creating Pie Charts with Data Binding</a></li>
<li><a href="#selectionOnPieChartsAndExplodingPieCharts">Selection on Pie Charts and Exploding Pie Charts</a></li>
</ul>
</li>
<li><a href="#exampleApplicationUsingNestedPieCharts">An Example Silverlight Application Using Drill-down Pie Charts</a>
<ul>
<li><a href="#definingTheModel">Defining the Model</a></li>
<li><a href="#creatingTheView">Creating the View</a></li>
<li><a href="#tieItAllTogether">Tying it All Together: Handling Selection and Updating the Drill-down Chart</a></li>
<li><a href="#downloadTheCode">Download the Code</a></li>
</li>
</ul>
</li>
<li><a href="#examplePieChartApplicationInWPF">Example Pie Chart Application in WPF</a></li>
<li><a href="#examplePieChartApplicationOnWindowsPhone7">Example Pie Chart Application on Windows Phone 7</a></li>
<li><a href="#summary">Summary</a></li>
</ul></p><p><a name="relationBetweenPieCharts"></a>
<h3>Relationship Between Pie Charts and Other Series</h3></p><p>Pie Charts are conceptually different than other series - e.g. <a href="http://www.visiblox.com/static/releases/latest/Docs/html/f6e57140-b729-9545-6897-099480f07612.htm">LineSeries</a>, ColumnSeries or BarSeries. A pie chart isn't represented in the Cartesian coordinate system, but in a special, radial coordinate system. The X axis is represented as a polar category axis, while Y values define the amount of area filled by each pie piece.</p><p>Also, while it does make sense to <a href="http://www.visiblox.com/examples/CombinationChart">combine e.g. LineSeries and ColumnSeries</a>, combining pie charts with other series or other pie series is not a clear concept.</p><p>For this reason pie charts are treated as a separate chart type and are encapsulated in the <a href="http://www.visiblox.com/static/releases/latest/Docs/html/0b230568-4c4e-22c5-61a8-55a2bec91e74.htm">PieChart</a> class. This results in a somewhat different API than many other charting components provide, where pie series is treated like a normal series. Our goal with this approach was to not force pie series into the Cartesian model that the <a href="http://www.visiblox.com/static/releases/latest/Docs/html/c361ef0b-9219-451d-18db-2ccfae6dc70b.htm">Chart</a> class represents.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/03/1/using-pie-charts-in-visiblox-charts-(silverlight,-wpf-and-windows-phone)/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/03/1/using-pie-charts-in-visiblox-charts-(silverlight,-wpf-and-windows-phone)/</guid>
                    <pubDate>Tue, 01 Mar 2011 16:33:00</pubDate>
                </item>
                <item>
                    <title>Announcing Visiblox Charts for Windows Phone 7</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/02/21/announcing-visiblox-charts-for-windows-phone-7/</comments>
                    <description><![CDATA[<p>We are proud to announce that Visiblox Charts for Windows Phone 7 Beta has been released in version 1.9 of Visiblox Charts and <a href="http://www.visiblox.com/download">can be downloaded for free here</a> (note: the prerequisite for this release is to download and install the <a href="http://silverlight.codeplex.com">Silverlight Toolkit for Windows Phone</a>). To get started developing on the phone read our tutorial on <a href="http://www.visiblox.com/blog/2011/02/visiblox-for-wp7-basic-charts-selection-and-zooming"> getting started with Visiblox Charts for WP7</a>.</p>
<p>Visiblox Charts for WP7 is the first charting library that has support for seamingless zooming, panning, and selection - all optimized for the phone. Similar to Visiblox Charts on other platforms it also provides <a href="http://www.visiblox.com/blog/2010/12/visiblox-on-top-in-silverlight-charts-comparison"> excellent performance</a>, can be easily customized and styled and was built to be easy to extend. For a quick tour on the Windows Phone version, see the following video:</p>
<div umb_macroalias="InsertIFrame" umb_height="360" umb_frameborder="0" umb_title="YouTube video player" umb_width="590" umb_allowfullscreen="1" umb_source="http://www.youtube.com/embed/FHsulCfx4Uc" ismacro="true" onresizestart="return false;" umbversionid="ac6b27f3-de71-4a2b-a480-6c844dd1d6dc" umbpageid="2846" title="This is rendered content from macro" class="umbMacroHolder"><!-- startUmbMacro --><iframe width="590" height="360" title="YouTube video player" src="http://www.youtube.com/embed/FHsulCfx4Uc" frameborder="0" allowfullscreen="true"></iframe><!-- endUmbMacro --></div>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/02/21/announcing-visiblox-charts-for-windows-phone-7/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/02/21/announcing-visiblox-charts-for-windows-phone-7/</guid>
                    <pubDate>Mon, 21 Feb 2011 17:10:00</pubDate>
                </item>
                <item>
                    <title>Visiblox for WP7 - Basic Charts, Selection and Zooming</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/02/21/visiblox-for-wp7-basic-charts,-selection-and-zooming/</comments>
                    <description><![CDATA[<p>Visiblox for Windows Phone 7 Beta was released a few days ago (<a href="http://www.visiblox.com/blog/2011/02/announcing-visiblox-charts-for-windows-phone-7">see the announcement post here</a>). This posts shows how to get started with it and create line, bar and pie series, enable selection and add zooming and panning behaviours to them.</p><p>The structure of the article is as follows:
<ul>
<li><a href="#lineSeries">Line Series</a>
<ul>
<li><a href="#creatingAChart">Creating A Chart</a></li>
<li><a href="#addingTheSeriesToTheChart">Adding the Series to the Chart</a></li>
<li><a href="#creatingALineSeriesWithManualData">Creating a Line Series with Manually Created Data</a>
</ul>
</li>
<li><a href="#addingZoomingAndPanningToTheChart">Adding Zooming and Panning to the Chart</a></li>
<li><a href="#enablingSelectionOnTheSeries">Enabling Selection on the Series</a>
<ul>
<li><a href="#selectionOfTheWholeSeries">Selection of the Whole Series</a></li>
<li><a href="#selectionOfIndividualPoints">Selection of Individual Points</a></li>
</ul>
</li>
<li><a href="#basicStylingOfTheChart">Basic Styling of the Chart: Adding Titles, Positioning the Legend</a>
<ul>
<li><a href="#addingTitlesToTheChart">Adding Titles to the Chart, Axes and Series</a></li>
<li><a href="#stylingTheTitlePositionAndTheLegend">Styling the Title and Positioning of the Legend</a></li>
</ul>
</li>
<li><a href="#barAndColumnSeries">Bar and Column Series</a>
<ul>
<li><a href="#creatingAColumnSeries">Creating a Column Series Using Data Binding</a></li>
<li><a href="#creatingABarSeries">Creating a Bar Series</a></li>
</ul>
</li>
<li><a href="#downloadTheSourceCode">Download the Source Code</a></li>
</ul>
<a name="lineSeries"></a></p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/02/21/visiblox-for-wp7-basic-charts,-selection-and-zooming/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/02/21/visiblox-for-wp7-basic-charts,-selection-and-zooming/</guid>
                    <pubDate>Mon, 21 Feb 2011 16:54:00</pubDate>
                </item>
                <item>
                    <title>Using Multiple Visiblox Charts</title>
	            <author>jwalker</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/02/15/using-multiple-visiblox-charts/</comments>
                    <description><![CDATA[<p>This post looks at using multiple Visiblox charts within one application, and how to link behaviours and properties between them. Specifically, it will look at binding Zoom behaviours, axis ranges, size, and trackball behaviour.</p>
<h3>Binding Zoom Behaviour</h3>
<p>There may be occasions where you want to have several charts, all of which react to a zoom on any of the others. This may be especially useful if you have charts stacked one on top of the other, all of which have a common X axis. You might decide, as is done in the <a href="http://www.visiblox.com/examples/LiveStreaming">Live Streaming Example</a>, to only show the axis on the bottom chart, to maximise the space available to plot data. In this situation it makes sense to zoom all charts whenever another zooms, to ensure the single X axis is still correct for all charts.</p>
<p>This can be demonstrated easily with two charts, and extended to any number you want to link together. First we need to create a couple of charts and add some data, done simply in XAML and code-behind as follows :</p>
<pre class="brush: xml; toolbar: false; ">&lt;Grid x:Name="LayoutRoot" Background="White"&gt;
    &lt;Grid.RowDefinitions&gt;
        &lt;RowDefinition /&gt;
        &lt;RowDefinition /&gt;
    &lt;/Grid.RowDefinitions&gt;
    &lt;charts:Chart x:Name="Chart1" Grid.Row="0" LegendVisibility="Collapsed"&gt;
        &lt;charts:Chart.Series&gt;
            &lt;charts:LineSeries /&gt;
        &lt;/charts:Chart.Series&gt;
    &lt;/charts:Chart&gt;
    &lt;charts:Chart x:Name="Chart2" Grid.Row="1" LegendVisibility="Collapsed"&gt;
        &lt;charts:Chart.Series&gt;
            &lt;charts:LineSeries /&gt;
        &lt;/charts:Chart.Series&gt;
    &lt;/charts:Chart&gt;
&lt;/Grid&gt;
</pre>
<pre class="brush: c-sharp; toolbar: false; ">public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
        Chart1.Series[0].DataSeries = GenerateDataSeries(10);
        Chart2.Series[0].DataSeries = GenerateDataSeries(20);
    }

    private DataSeries GenerateDataSeries(int seed)
     {
        DataSeries&lt;DateTime, double&gt; dataSeries = new DataSeries&lt;DateTime, double&gt;();
        DateTime _currentDate = new DateTime(2000, 01, 01);
        DateTime _maxDate = new DateTime(2010, 01, 01);
        Random rnd = new Random(seed);
        double value = rnd.NextDouble();

        while (_currentDate &lt; _maxDate)
        {
            dataSeries.Add(new DataPoint&lt;DateTime, double&gt;() 
              { X = _currentDate, Y = value });
            value = rnd.NextDouble();
            _currentDate = _currentDate.AddMonths(1);
        }
        return dataSeries;
     }
}
</pre>
<p>This gives a basic chart with some data :</p>
<div style="align: center;"><object width="430" height="420" data="data:application/x-silverlight," type="application/x-silverlight-2"><param name="source" value="/media/2792/MultipleVisibloxCharts-BasicCharts.xap" /><param name="src" value="data:application/x-silverlight," /></object></div>
<p>Then, we'll add a zoom to Chart1 and link it to Chart2. To add a zoom behaviour to Chart1, we have :]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/02/15/using-multiple-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/02/15/using-multiple-visiblox-charts/</guid>
                    <pubDate>Tue, 15 Feb 2011 12:00:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts 1.9.1 released!</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/02/11/visiblox-charts-191-released!/</comments>
                    <description><![CDATA[<p>We are delighted to announce the availability of <a title="Visiblox Charts v1.9.1" href="http://www.visiblox.com/download">Visiblox Charts 1.9.1</a>.  This version includes a number of new features including:
<ul>
	<li>Support for pie charts</li>
	<li>Support for Windows Phone 7 with API extensions to support zooming and panning via gestures (beta release)</li>
	<li>Multiple X-axis support, allowing for an arbitrary number of X-axes above and below the chart</li>
	<li>Mouse-wheel support for zooming</li>
	<li>Improved legend positioning and styling options</li>
	<li>New annotation types including event markers and text annotations (premium edition only)</li>
	<li>New FilteredDataSeries class to make it easier to implement data sampling or filtering (premium edition only)</li>
</ul>
On top of the above changes we’ve fixed bugs and have improved performance across a number of scenarios.</p><p>Why not grab this new version at <a href="http://www.visiblox.com/download">www.visiblox.com/download</a> and give it a spin?</p><p>Please see below for the full set of API changes since version 1.8.1:
<ul>
	<li>General
<ul>
	<li>Added IAxisAware, IInteractable, IRenderElementOwner, IMarginPreference interfaces</li>
	<li>Added InvalidatableCollectionBase class</li>
	<li>UniqueAndNotNullItemsObservableCollection class renamed to UniqueAndNotNullShadowedObservableCollection</li>
	<li>Added SortedList class</li>
</ul>
</li>
	<li>Annotations
<ul>
	<li>Added TextAnnotation, CalloutTextAnnotation, EventAnnotation classes</li>
	<li>Added AnnotationBase.PreviewingPropertyChanged method</li>
	<li>Renamed AnnotationBase.IsEnabled property to IsInteractionEnabled</li>
</ul>
</li>
	<li>Axes
<ul>
	<li>Added DateTimeAxisIntervalSpan.Undefined enumeration member which is the new default for DateTimeAxis.MajorTickIntervalType and DateTimeAxis.MinorTickIntervalType which are now non-nullable</li>
	<li>Added IAxis.RenderingEnabled property</li>
	<li>Added AxisLabel.FormatString, AxisLabel.Orientation, AxisLabel.CalculatedWidth and AxisLabel.CalculatedHeight dependency properties</li>
	<li>Added AxisBase.GetFormattedDataValueInternal method</li>
	<li>Added new protected virtual method on AxisBase.InvalidateGridlinesAnnotations</li>
	<li>Added AxisBase.RenderingEnabled dependency property</li>
	<li>Changed IAxis.ActualRange type from IRange to IRangeWithEffectiveLimits&lt;T&gt;</li>
	<li>Added IRangeWithEffectiveLimits interface and DoubleRangeWithEffectiveLimits, DateTimeRangeWithEffectiveLimits, CategoryRangeWithEffectiveLimits classes</li>
	<li>Removed DiscontinousDateTimeRange</li>
	<li>Removed ContrinousRangeBase</li>
	<li>DoubleRange and DateTimeRange now inherit from RangeBase&lt;T&gt;</li>
	<li>Added IAxis.IsDataValueRenderable() method</li>
	<li>Renamed IsMarginEnabled property to IsAutoMarginEnabled</li>
	<li>Removed AxisBase.GetDataValueAsRenderPositionWithZoomInternal and AxisBase.GetDataValueAsRenderPositionWithoutZoomInternal</li>
	<li>Added AxisBase GetAxisValueAsRenderPosition</li>
	<li>Added AxisPanel.IsElementHidden dependency property</li>
	<li>Added AxisLabel.FitToAxisSize dependency property</li>
	<li>Changed DiscontinuousDateTimeAxis.FilterDateValues visibility from protected to protected virtual</li>
</ul>
</li>
	<li>Behaviours
<ul>
	<li>Added ZoomBehaviour.DisableAxisRendering and PanBehaviour.DisableAxisRendering dependency properties to allow the behaviours to disable axis rendering for the duration of an animation or user interaction to improve performance</li>
	<li>Added MouseWheel method to IBehaviour and all implementations</li>
	<li>Added HideCollidingAxisLabels, XAxisLabelFormatString, XAxisLabelHorizontalAlignment, XAxisLabelVerticalAlignment, YAxisLabelFormatString, YAxisLabelHorizontalAlignment, YAxisLabelVerticalAlignment DPs to CrosshairBehaviour</li>
	<li>Added BehaviourBase.Tag property</li>
	<li>TrackballBehaviour inherits from BehaviourBase instead of BehaviourWithAxesBase</li>
	<li>Added ZoomMode enumeration</li>
	<li>Added TrackingSnapPattern class</li>
	<li>Added TrackballBehaviour.SnapMode property</li>
</ul>
</li>
	<li>Chart
<ul>
	<li>Added Chart.SecondaryXAxis, Chart.AdditionalPrimaryXAxis and Chart.AdditionalSecondaryXAxis</li>
	<li>Added Chart.SetAxisRenderingEnabledState method</li>
</ul>
</li>
	<li>Data and ChartSeries
<ul>
	<li>Added FilteredDataSeries, IFilterStrategy, WindowedFilterStrategy classes</li>
	<li>Added IChartSeries. Init, IChartSeries.DeInit methods</li>
	<li>Added IChartSeries.IsPointRenderable</li>
	<li>Removed ChartSeriesBase. GetPointValueOnXAxis and ChartSeriesBase. GetPointValueOnYAxis methods</li>
	<li>Added ChartSeriesBase.ClearCanvas method</li>
	<li>Added DataPoint.Tag property</li>
	<li>Changed signatures for MultiValueSeriesBase.UpdatePoint, and MultiValueSeriesBase.UpdatePointInteractionHelper methods</li>
	<li>Changed MultiValueSeriesBase.StyleNormalPoint, MultiValueSeriesBase.StyleHighlightedPoint, MultiValueSeriesBase.StyleSelectedPoint methods from protected abstract to protected virtual</li>
	<li>Added MultiValueSeriesBase.PositionPointOnZoomCanvas method</li>
	<li>Added TemplatedLineSeries.SetCenteredStyleOnPoint method</li>
</ul>
</li>
	<li>Invalidation
<ul>
	<li>Added IInvalidatable.Invalidate method</li>
	<li>Added InvalidationHandler.CancelInvalidationRequest method</li>
</ul>
</li>
	<li>Legend
<ul>
	<li>Added LegendVerticalAlignment, LegendHorizontalAlignment and LegendPosition DPs to Chart</li>
	<li>Added LegendPosition enum</li>
	<li>Added IsDisplayedOnLegend property to IChartSeries</li>
	<li>Added LegendMaxHeightRatio DP to Chart</li>
</ul>
</li>
	<li>Pie charts
<ul>
	<li>Added PieChart class</li>
	<li>Added PiePiece class</li>
</ul>
</li>
	<li>Range
<ul>
	<li>Removed IRange.EffectiveMinimum, IRange.EffectiveMaximum properties</li>
	<li>Removed IRange.ToDiscreteValueRange and IRange.ToContinuousValueRange methods.</li>
             <li>Added IRangeWithEffectiveLimits interface and implementations</li>
	<li>Added RangeBase.Tag property</li>
</ul>
</li>
</ul></p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/02/11/visiblox-charts-191-released!/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/02/11/visiblox-charts-191-released!/</guid>
                    <pubDate>Fri, 11 Feb 2011 08:31:00</pubDate>
                </item>
                <item>
                    <title>New Chart Examples</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/02/11/new-chart-examples/</comments>
                    <description><![CDATA[<p>We've just added a number of new examples to the website to demonstrate the features of Visiblox Charts.
<ul>
	<li><a title="Pie Chart Example" href="http://www.visiblox.com/examples/PieChart">Pie charts</a> - Visiblox Charts 1.9.1 introduces support for pie charts</li>
	<li><a title="Multiple Y-Axes Example" href="http://www.visiblox.com/examples/MultipleYAxes">Multiple Y-axis support</a> - this example shows the use of y-axes on either side of the chart to display data.  Visiblox Charts supports an arbitrary number of x- and y-axes on either side of the chart.</li>
	<li><a title="Term Structure Example" href="http://www.visiblox.com/examples/TermStructure">Term structure</a> - Combine multiple series together to produce more complex charts such as a term structure.</li>
	<li><a title="JavaScript Integration Example" href="http://www.visiblox.com/examples/JavaScript">Javascript Integration</a> - Silverlight provides javascript integration which lets you manipulate your charts directly from Javascript.  This example shows you how!</li>
	<li><a title="Staircase Chart Example" href="http://www.visiblox.com/examples/StaircaseChart">Staircase chart</a> - Staircase charts (or step charts) are a special form of line series which show discrete step changes in the data.</li>
	<li><a title="Band Chart Example" href="http://www.visiblox.com/examples/BandChart">Band chart</a> - Band charts are charts with two lines and an area fill between them.  The fill colour automatically changes when the lines invert.</li>
	<li><a title="Stacked Column Chart Example" href="http://www.visiblox.com/examples/StackedColumnChart">Stacked column</a> - Visiblox Charts supports stacked column charts out of the box.</li>
	<li><a title="Stacked Bar Chart Example" href="http://www.visiblox.com/examples/StackedBarChart">Stacked bar</a> - Stacked bar charts are supported as well to stack horizontally across the chart.</li>
	<li><a title="Live Streaming Example" href="http://www.visiblox.com/examples/LiveStreaming">Live streaming</a> - A new live data streaming example shows integration with Caplin's live data feed API with Visiblox Charts to display FX data in real time!</li>
</ul>
If you've not tried it yet, <a href="http://www.visiblox.com/download">download Visiblox Charts 1.9.1</a> and try it out!</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/02/11/new-chart-examples/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/02/11/new-chart-examples/</guid>
                    <pubDate>Fri, 11 Feb 2011 08:31:00</pubDate>
                </item>
                <item>
                    <title>Styles in Silverlight: Everything a Developer Needs To Know</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/02/1/styles-in-silverlight-everything-a-developer-needs-to-know/</comments>
                    <description><![CDATA[<p>This post is a summary on my 4 part series covering everything I think a developer needs to know about Styles in Silverlight in order to work with them in XAML or programatically. The overview of the series is as follows. All of the topics link to the original, more detailed article: feel free to explore the parts that interest you most!</p><p><strong><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction">Introduction</a></strong>
<ul>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#whatAreStyles">What are Styles?</a></li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#whatarestyles2">Styles: List of Setters for a Given Type</a> - Styles are collections of property setters to be applied to a visual element. It is mandatory to specify the TargetType for each Style. 
<ul>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#targetType">TargetType</a></li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#setters">Setters</a></li>
</ul>
</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#definingStylesInXAML">Defining Styles in XAML</a> - this can be done two ways: either within the Resources section or inline. 
<ul>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#resources">Defining Styles in the Resources Section</a> - this is the recommended way. Styles defined here need to specify an x:Key attribute and can be reused within the document with StaticResources. Keys need to be unique within a resource section.</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#inline">Defining Styles Inline</a> - declaring styles inline does not have real advantages: it’s lengthy and the Style declared can’t be re-used from the XAML.</li>
</ul>
</li>
</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#referencing">Referencing Styles Defined in XAML from Code Behind</a> - Styles defined in XAML (within the Resources section) can be referenced from code behind.</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-an-introduction#templates">Styling Controls Can’t Always Be Done With Styles: Templates and Themes</a> - The visual look of controls can’t always be altered just by setting properties of the control via styles. A more powerful way of customizing control look and feel is via Control Templates and Themes.</li>
</ul>
<strong><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics">Inheritance, Precedence and Other Advanced Topics</a></strong>
<ul>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics#reusingStyles">Re-Using Styles for Different Types</a>: the TargetType of the Style can be a parent type of the target object as long as it only sets properties of the parent type.</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics#styleBasedOn">Style Inheritance: The BasedOn property</a> - inheriting styles can be done using the BasedOn property. Styles support single inheritance and the depth of inheritance is not limited.</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics#implicitStyling">Implicit Styling</a> - in Silverlight 4 the default styles of elements on a page / control can be specified in a simple way using implicit styles.</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics#stylePrecedence">Style Precedence</a>: a Style’s Setters only get applied if the object’s particular property is not animated, not set locally and not set in the control template belonging to the object.</li>
<li><a href="http://www.visiblox.com/blog/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics#styleSetterPrecedence">Style Setter Precedence</a>: setters specifying the value of the same property may be declared within the same Style. The last one of them has the highest precedence and will be used.</li>
</ul></p><p><strong><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2">Further Advanced Topics</strong>
<ul>
<li><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2#stylesAreDependencyProperties">Style is a Dependency Property</a>. This means that it supports the following features:
<ul>
<li><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2#dataBinding">Data binding</a>: it’s possible to bind styles on to another – even though this is probably a very rare real world scenario.</li>
<li><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2#propertyChangedNotifications">Property changed notifications</a>: it’s not possible to directly subscribe to property changed notifications for the Style property due to the feature missing in Silverlight, however there is a complicated, but working workaround available to detect when the Style is being changed.</li>
<li><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2#clearValue">ClearValue</a>: unsetting the value of a Style is not the same as setting it to null. When wanting to reset or clear the style, ClearValue is the method to be used.</li>
</ul>
</li>
<li><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2#declaringStylesInCodeBehind">Declaring Styles In Code Behind is possible</a>, it results in more complex code though then doing the same thing in XAML.</li>
<li><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2#otherNotes">Other Notes About Styles</a>
<ul>
<li><a href="#onlyDependencyPropertiesCanBeStyled">Only Dependency Properties Can Be Styled</a>: styling CLR properties will result in either a compile time or runtime error.</li>
<li><a href="http://www.visiblox.com/blog/2010/08/styles-in-silverlight-further-advanced-topics-2#onlyFrameworkElementsHaveStyles">Not All Classes Have Styles</a>: only Ones Derived From FrameworkElement have the Style property and thus can be styled. All of the built-in visual controls, the Control and UserControl class are descendants of this class. It’s worth remembering this when creating custom classes that might need to be styled.</li>
</ul></li>
</ul></p><p><strong><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime">Manipulating Styles at Runtime</a></strong>
<ul>
<li><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime#isSealed">Modifying Styles at Runtime: the IsSealed Property</a> - Modifying the Setters of a Style can only be done if the IsSealed property is set to false. This property is false when the Style is created and is set to true once the Style is applied to any element in the visual tree.</li>
<li><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime#cloningStyles">Cloning Styles</a> - since styles can't be modified once the IsSealed property is set to true, the most convenient way to modify an existing style is to clone it, than modify the cloned style.</li>
<li><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime#mergingStyles">Merging Styles Runtime</a> - a more advanced scenario from simply modifying a few setters in a Style is merging two Styles into one.
<ul>
<li><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime#mergingByCopying">Using the BasedOn Property</a> - an easy way of implementing merging of styles is to use the BasedOn property when creating the merged style.</li>
<li><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime#mergingUsingBasedOn">Copying Setters of the Styles</a> - another, slightly more complicated approach is to create a Style by manually copying over the Setters from the ChildStyle and then copy the non conflicting Setters from the ParentStyle.</li>
<li><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime#exampleOfBothApproaches">An Example of Both Approaches<a/></li>
</ul></li>
<li><a href="http://www.visiblox.com/blog/2010/11/styles-in-silverlight-manipulating-in-runtime#someBugs">Some Bugs when Manipulating Styles at Runtime</a> - there are some smaller bugs I’ve come across when manipulating Styles runtime in Silverlight. These include <a href="http://gregdoesit.com/2010/09/setting-the-strokedasharray-using-a-style-in-silverlight/">StrokeDashArray problems</a> and <a href="http://gregdoesit.com/2010/09/disappearing-style-setters-in-silverlight-3-and-wp7-fixed-in-silverlight-4/">disappearing style setters in Silverlight 3 and WP7</a>.</li>
</ul></p><p>I hope this summary on styles in Silverlight was helpful.</p><p><div style='border-top:1px dotted #C7C7C7;padding:10px;'>
Interested in an easy to style, very performant Silverlight / WPF charting library? Give the <a href="http://www.visiblox.com/download">free version of Visiblox</a> a try!
</div>
</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/02/1/styles-in-silverlight-everything-a-developer-needs-to-know/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/02/1/styles-in-silverlight-everything-a-developer-needs-to-know/</guid>
                    <pubDate>Tue, 01 Feb 2011 16:26:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts used to show live financial data</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/01/21/visiblox-charts-used-to-show-live-financial-data/</comments>
                    <description><![CDATA[<p>Check out <a href="http://www.codeproject.com/KB/silverlight/visualizingstockdata.aspx">this Code Project article</a> on using Visiblox Charts to display live data from Google Finance.  Also keep an eye on our <a href="http://www.visiblox.com/blog">blog</a> for follow ups to the article and other useful information on using Visiblox Charts.</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/01/21/visiblox-charts-used-to-show-live-financial-data/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/01/21/visiblox-charts-used-to-show-live-financial-data/</guid>
                    <pubDate>Fri, 21 Jan 2011 13:42:00</pubDate>
                </item>
                <item>
                    <title>Optimising Visiblox Charts Performance</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2011/01/12/optimising-visiblox-charts-performance/</comments>
                    <description><![CDATA[<p><a href="/media/2750/tacho.jpg"><img src="/media/2750/tacho.jpg" alt="speedometer" title="speedometer" width="224" height="205" style="float: right" /></a></p><p>The good performance of Visiblox Charts <a href="http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/">has been well documented</a>.  Even so, there are things you can do to help get the most out of the chart in that respect.  These can be grouped into 6 main bullet points:
<ul>
	<li><a href="#seriesType">Consider carefully the type of series to use</a></li>
	<li><a href="#explicitRanges">Where possible set explicit ranges on the axes</a></li>
        <li><a href="#removePointsOffscreen">Remove points that are offscreen from the DataSeries</a></li>
	<li><a href="#userDataSeries">Use DataSeries rather than BindableDataSeries</a></li>
       <li><a href="#removeDataGenerationFromUIThread">Remove data generation from the UI thread</a></li>
	<li><a href="#disableAnimation">Reduce or disable animations</a></li>
	<li><a href="#updateFrequency">Think carefully about the amount of data and the frequency of updates</a></li>
  </ul></p><p>Clearly not all of these items apply to all cases but if you're really trying to squeeze the last drop of performance out of the charts, these are all things you should consider.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2011/01/12/optimising-visiblox-charts-performance/</link>
                    <guid>http://www.visiblox.com/blog/posts/2011/01/12/optimising-visiblox-charts-performance/</guid>
                    <pubDate>Wed, 12 Jan 2011 12:24:00</pubDate>
                </item>
                <item>
                    <title>Visiblox On Top In Silverlight Charts Comparison</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/12/13/visiblox-on-top-in-silverlight-charts-comparison/</comments>
                    <description><![CDATA[<p>Colin Eberhardt, the established Silverlight and WPF expert, has recently posted a blog comparing the performance and APIs of some of the top rated Silverlight charting solutions.  This blog not only shows that Visiblox Charts comes out on top in terms of performance, but it does so while providing a clean, usable and easy to understand API.  </p><p>Why not <a href="http://www.visiblox.com/download">download</a> our free edition and try it yourself?</p><p>Read Colin's full post at <a href="http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/">http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/</a>.</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/12/13/visiblox-on-top-in-silverlight-charts-comparison/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/12/13/visiblox-on-top-in-silverlight-charts-comparison/</guid>
                    <pubDate>Mon, 13 Dec 2010 08:30:00</pubDate>
                </item>
                <item>
                    <title>10 Things Developers Will Love About Silverlight 5</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/12/3/10-things-developers-will-love-about-silverlight-5/</comments>
                    <description><![CDATA[<p>During the <a href="http://www.silverlight.net/news/events/firestarter/">Silverlight Firestarter</a> Scott Guthrie gave a preview of Silverlight 5. Based on the <a href="http://www.microsoft.com/silverlight/future/">list of new features</a> it seems Silverlight 5 will be at least as significant of an update from SL 4 than SL 4 was from SL3.</p>
<p>In this article I'm looking at the 10 most important things any Silverlight developer - like myself - should be excited about in this upcoming release.</p>
<h3>1. Debug Data Binding Expressions by Using Breakpoints in XAML</h3>
<p>In Silverlight 4 data binding expressions are great... when you've set them up correctly that is. When you want to debug them it's a real pain to do so. In Silverlight 4 the two ways to debug data binding expressions are:</p>
<ul>
<li>either to look at the debug output window dump and hope that some relevant information is revealed</li>
<li>or set up dummy <a href="http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter(VS.95).aspx"> ValueConverters</a> so you could your break when the binding actually occurs - if it occurs!</li>
</ul>
<p>With the ability to be able to place break points in the XAML on binding expressions, none of this hacking will be needed, saving lots of time and frustration. When breaking on a binding a BindingState object is shown in the Locals windows that returns all information on the binding that should help solve the issue with it.</p>
<p><a href="/media/2728/dataBinding.png"><img class="alignnone size-full wp-image-1823" src="/media/2728/dataBinding.png" alt="" width="500" height="243" /></a></p>
<h3>2. Animations Made Easy with Transitions</h3>
<p>Animations are really powerful in Silverlight, the only problem with them is that they're complicated to write. You need to have StoryBoards, Animations within those and creating and configuring just a simple animation is about 10-15 lines of code both in code behind and XAML.</p>
<p>Silverlight 5 introduces transitions that make defining animations possible in much fewer lines of code. Transitions seem to be wrapper classes around animations. Now instead of having to specify an animation from scratch, you can easily configure the most commonly animated element properties (e.g. opacity, x/y start and end offsets, easing function) on an easy to interpret class interface:</p>
<pre class="brush: xml; toolbar: false; ">&lt;LoadTransition StartXOffset="300" GeneratedDuration="0:0:1.0" StartOpacity="0.2"&gt;
   &lt;LoadTransition.GeneratedEasingFunction&gt;&lt;CircleEase/&gt;&lt;/LoadTransition.GeneratedEasingFunction&gt;
&lt;/LoadTransition&gt;
</pre>
<h3>3. Navigating Up the Visual Tree in Bindings using RelativeSource and Mode=FindAncestor</h3>
<p>When using DataTemplates in specifying list items, it would sometimes be great to be able to "reach outside" of the model's DataContext to another object in the visual tree and use that object as a binding. Say you have ListBox showing off Book items in it's DataTemplate and you'd like to have a ListBox inside of each of these book items that would show the deals for the book. The problem is, the Book model has no notion of Deals, the Deals object is somewhere else in the visual tree.</p>
<p>In Silverlight 5, this problem can be solved by using a RelativeSource, Mode=FindAncestor expression:</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/12/3/10-things-developers-will-love-about-silverlight-5/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/12/3/10-things-developers-will-love-about-silverlight-5/</guid>
                    <pubDate>Fri, 03 Dec 2010 13:40:00</pubDate>
                </item>
                <item>
                    <title>Sparklines with Visiblox Charts</title>
	            <author>nwolverson</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/11/29/sparklines-with-visiblox-charts/</comments>
                    <description><![CDATA[<p>The term <a href="http://en.wikipedia.org/wiki/Sparkline">sparkline</a> was coined by <a href="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR">Edward Tufte</a> for "small, high resolution graphics embedded in a context of words, numbers, images". These are typically small charts embedded in text or tables which allow trends in a number of data series to be visualized at a glance. </p><p>The use of sparklines has become relatively widespread, and there are now a number of sparkline implementations for various platforms. This article demonstrates how Visiblox Charts can easily be styled to produce sparklines.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/11/29/sparklines-with-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/11/29/sparklines-with-visiblox-charts/</guid>
                    <pubDate>Mon, 29 Nov 2010 10:44:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts - this is our way</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/11/22/visiblox-charts-this-is-our-way/</comments>
                    <description><![CDATA[<p>Whenever a new product arrives on the scene the obvious question poses itself which is "What does this product do that the other's don't?"  On that basis, given that Visiblox Charts is exactly such a new product, I thought I'd talk a little bit about that issue.  However, it seemed to me it might be interesting to look beyond specific feature comparisons.  Clearly there are feature differences between Visiblox Charts and our competitors and those are important, but they are fairly self-evident from the documentation on respective websites.  Instead I'd like to talk a little bit about where Visiblox came from and why it was built because that gives quite a good picture of where our attention is focused and what we think Visiblox brings to the table.
 
<h3>Why are all the wheels out there square?</h3></p><p><img style="float:left; padding: 0px 10px 10px 0px;" src="/media/2709/question_mark_man-e1290070912425.jpg" alt="Question Mark" />Some time ago, a client approached us and was interested in writing a financial application front end using WPF and exposing that on the web using Silverlight.  They were interested in benefiting from the single technology stack for both platforms.  We've been building charting solutions and components for years in all sorts of technologies (Java, Flex, JS/HTML, .NET ... take your pick) so we set about doing some research into existing Silverlight charting components as charting was going to be a key element of the application.  Our findings did not fill us with confidence, none of the products we found and tried from the Silverlight Toolkit through to the various commercial offerings, were able to cope with anything close to the volume of data we needed and offer a level of performance we deemed even close to acceptable.  The few products that did offer something approaching to decent performance used heavy data sampling to do so which is a lossy procedure and can result in the data "meaning" being skewed so we weren't too happy about that.  Sampling, to my mind, is a last resort fall-back, not a first candidate.
 
That left us with the decision about where to go from there, so we thought we'd do a little proof of concept implementation of a chart in Silverlight that was explicitly built for performance and with that Visiblox took its first baby steps.  From there we quickly realised that we had a blank canvas to work with and an opportunity to create a really high quality charting component.  The rest, as they say, is history.  Fast-forward past all the hard work that went into turning that first little demo into a fully-fledged, versatile and powerful charting component product and Visiblox Charts has arrived.
 
<h3>Have your cake and eat it too - The Visiblox Way</h3>
 
<img style="float:right; padding: 0px 0px 10px 10px;" src="/media/2710/path.jpg" alt="Question Mark" />Knowing a bit about where Visiblox came from, let's get back to the original question, what makes Visiblox Charts different? </p><p>The answer is four-fold:
<ul>
	<li><strong>Performance:</strong>  Visiblox Charts was built from that very first proof of concept with the main focus of delivering on the performance front.  Compared to the competition out there it's fast and it handles a lot of data.  Enough said.</li>
	<li><strong>Flexibility:</strong> Alas, in software, high performance usually involves a trade-off of some kind and Visiblox Charts is no different here.  If you want to get the best performance out of Visiblox Charts, you're going to have to sacrifice a bit of customisability.  But fear not!  Wherever we've had to impose a limitation to preserve performance, or for any other reason, we've tried to offer an alternative without that limitation. By way of example, in most series types you can't template each individual point to completely change its presentation (note you _can_ still change the style of the series which for most cases is more than enough).   If you do need the ability to change points individually (e.g. you need each point to show a different image), Visiblox Charts does offer that capability in the form of the TemplatedSeries.  It might not offer quite the same performance but you're not missing out in terms of flexibility either, you choose what's important to you.</li>
	<li><strong>Extensibility:</strong>  It's not just performance and flexibility that we bring to the table though.  Driven by the nature of Visiblox's genesis, it's always been on the forefront of our mind that we're not going to be able to deliver the perfect product for everyone's needs.  No-one can.  The range and diversity of use cases is simply too big and in some cases even contradictory.  However, what we can do is make sure developers can extend Visiblox Charts easily to meet their needs.  What does that mean in practice?  If you need a different kind of series, say a box plot series, the extension points are there, you just need to write the bit of code that actually renders your boxes.  If you need a different axis with some obscure domain specific tick generation?  Extend AxisBase and generate those crazy ticks!  At all the key points in our API you will find a base class that makes extension easy and an interface to implement if the base class absolutely doesn't do what you need.</li>
	<li><strong>Interactivity:</strong> Traditional charting controls in the web space were usually based around some sort of server-side component generating images on the basis of HTTP requests.  The huge advantage of desktop apps and Rich Internet Applications (RIAs) is interactivity.  We've made that a first class citizen of our charting component, not an afterthought.  Zooming, panning, trackballs, crosshairs, tool tips and annotations: it's all there out of the box and built into the chart's infrastructure, ready to go.  Again, if we've missed something that you really need, we at least make sure that you can add it by providing base classes and interfaces for you to write your own behaviours.</li>
</ul>
 
Those four cornerstones make up "The Visiblox Way", if you will.  They will continue to drive how we build our charts, and if we ever move beyond charts they will drive how we build our other offerings as well.  Performance, Flexibility, Extensibility and Interactivity are what we're about.</p><p>Oh, and that financial client?  They're using Visiblox Charts now.</p><p>Cheers,
Jesse
</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/11/22/visiblox-charts-this-is-our-way/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/11/22/visiblox-charts-this-is-our-way/</guid>
                    <pubDate>Mon, 22 Nov 2010 08:46:00</pubDate>
                </item>
                <item>
                    <title>Silverlight guru benchmarks Visiblox Charts</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/11/16/silverlight-guru-benchmarks-visiblox-charts/</comments>
                    <description><![CDATA[<p>Colin Eberhardt kindly had a look at Visiblox Charts and did a little comparison between it and the Silverlight Toolkit Charts.  You can read his findings at <a href="http://www.scottlogic.co.uk/blog/colin/2010/11/visiblox-charts-vs-silverlight-toolkit-charts-a-test-of-performance-2/">http://www.scottlogic.co.uk/blog/colin/2010/11/visiblox-charts-vs-silverlight-toolkit-charts-a-test-of-performance-2/</a>.</p><p>One of the things Colin says is that according to his measurements Visiblox Charts is 50-100 times faster than Silverlight Toolkit Charts, which sounds about right to us!  One thing that Colin doesn't explicitly say, but which is pretty evident from his code snippets is that the API for Visiblox Charts also looks much cleaner.  The XAML is about half the length from the Silverlight Toolkit equivalent.</p><p>As Microsoft's David Anson points out in his <a href="http://www.scottlogic.co.uk/blog/colin/2010/11/visiblox-charts-vs-silverlight-toolkit-charts-a-test-of-performance-2/#comment-25026">response</a>, the Silverlight Toolkit Charts haven't been optimised for performance, which is a valid point, but that's one of the places where Visiblox Charts excels!  He does suggest some alternative approaches and it would be great to see how they stack up.</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/11/16/silverlight-guru-benchmarks-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/11/16/silverlight-guru-benchmarks-visiblox-charts/</guid>
                    <pubDate>Tue, 16 Nov 2010 16:19:00</pubDate>
                </item>
                <item>
                    <title>Zooming and Panning in Silverlight using Visiblox Charts</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/11/16/zooming-and-panning-in-silverlight-using-visiblox-charts/</comments>
                    <description><![CDATA[<p>Zooming and panning are features that are often needed when using a charting component. This article shows how zooming and panning can be achieved using the <a href="http://www.visiblox.com/download">free version of Visiblox Silverlight charts</a> with a few lines of code. It then digs a bit deeper to understand how zooming and panning is implemented on Visiblox charts.</p>
<p>The structure of the article is the following:</p>
<ul>
<li><a href="#setingUpABasicChart">Setting Up a Basic Chart</a></li>
<li><a href="#addingZoomingAndPanning">Adding Zooming and Panning</a>
<ul>
<li><a href="#theBehaviourModel">The Behaviour Model</a></li>
<li><a href="#zoomingWithTheZoomBehaviour">Zooming Using the ZoomBehaviour</a></li>
<li><a href="#pannignWithThePanBehaviour">Panning Using the PanBehavior</a></li>
<li><a href="#multipleBehaviours">Multiple Behaviours Using the BehaviourManager</a></li>
</ul>
</li>
<li><a href="#understandingHowZoomingAndPanningWork">Understanding how Zooming and Panning Work</a>
<ul>
<li><a href="#zoomingAndPanningViaBindings">Zooming and Panning via Bindings</a></li>
</ul>
</li>
<li><a href="#conclusion">Conclusion</a></li>
</ul>
<p> </p>
<h3>Setting Up a Basic Chart</h3>
<p>Before adding zooming and panning support, let's create a simple chart with some random data. This is pretty straightforward to do, let's add a <a href="http://www.visiblox.com/static/releases/1.8.1/Docs/html/c361ef0b-9219-451d-18db-2ccfae6dc70b.htm"> Chart</a>in XAML and in the constructor of the main page auto generate some points:</p>
<pre class="brush: xml; toolbar: false; ">&lt;UserControl (...) xmlns:charts="clr-namespace:Visiblox.Charts;assembly=Visiblox.Charts"&gt;
    &lt;Grid x:Name="LayoutRoot" Background="White"&gt;
        &lt;charts:Chart x:Name="MainChart"/&gt;
    &lt;/Grid&gt;
&lt;/UserControl&gt;
</pre>
<pre class="brush: c-sharp; toolbar: false; ">// Add 100 points to the chart
var rnd = new Random();
var dataSerires = new DataSeries&lt;DateTime, double&gt;(){ Title = "Series 1" };
var startDate = Convert.ToDateTime("2010. 08. 01.");
for (int i = 0; i &lt; 100; i++)
{
    dataSerires.Add(new DataPoint&lt;DateTime, double&gt;(startDate.AddDays(i), rnd.Next(-20, 20)));
}
// Add a line series with the created data series that shows points
MainChart.Series.Add(new LineSeries() { DataSeries = dataSerires, ShowPoints = true, ToolTipEnabled=true});
</pre>
<p>The result is the following simple chart with a line series: <object width="600" height="200" data="data:application/x-silverlight," type="application/x-silverlight-2"><param name="source" value="/media/2682/ZoomingAndPanningWithVisiblox6.xap" /><param name="src" value="data:application/x-silverlight," /></object></p>
<p> </p>
<h3>Adding Zooming and Panning</h3>
<p> </p>
<h4>The Behaviour Model</h4>
<p>Both zooming and panning are quite similar in both of them have to respond to mouse events. For such "interactive" behaviours, Visiblox has defined the Behaviour model which is an easy extension point for creating interactive components. Both zoom and pan are such behaviours ( <a href="http://www.visiblox.com/static/releases/1.8.1/Docs/html/d015dcae-046e-3436-3b21-2de479d07907.htm"> IBehaviours</a>). To use them, one simply has to assign either of them as the <a href="http://www.visiblox.com/static/releases/1.8.1/Docs/html/965d69eb-9926-886c-a1ef-809d5c7a49e3.htm"> Behaviour</a> property of the chart. So let's add that single line to enable them: ]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/11/16/zooming-and-panning-in-silverlight-using-visiblox-charts/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/11/16/zooming-and-panning-in-silverlight-using-visiblox-charts/</guid>
                    <pubDate>Tue, 16 Nov 2010 12:19:00</pubDate>
                </item>
                <item>
                    <title>Styles In Silverlight: Manipulating At Runtime</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/11/4/styles-in-silverlight-manipulating-at-runtime/</comments>
                    <description><![CDATA[<p>This article is part 4 of 4 in a series covering everything that I think is worth knowing about styles in Silverlight. The previous parts of the series are <a href="http://www.scottlogic.co.uk/blog/gergely/2010/07/styles-in-silverlight-an-introduction/">Styles in Silverlight: an Introduction</a> and <a href="http://www.scottlogic.co.uk/blog/gergely/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics/">Styles in Silverlight – Inheritance, Precedence and Other Advanced Topics</a> and <a href="http://www.scottlogic.co.uk/blog/gergely/2010/08/styles-in-silverlight-further-advanced-topics//">Styles in Silverlight – Further Advanced Topics</a>.</p><p>This part of the series explores manipulating, merging and modifying Styles at runtime. Manipulation of Styles runtime is quite an uncommon scenario and is not really documented, this article tries to cover all important aspects of it.</p><p><h3><a name="isSealed"></a>Modifying Styles Runtime: the IsSealed Property</h3></p><p>Modifying the Setters of a Style can only be done if the IsSealed property is set to false. This property is false when the Style is created and is set to true once the Style is applied to any element in the visual tree. Thus it's safe to say that Styles are a immutable in a special way: they can only be modified until applied to any element in a visual tree.</p><p>Trying to modify a Style that is sealed (IsSealed property set to true) can result in multiple errors:
<li>If trying to modify the value of a Setter in the Style, an
 UnauthorizedAccessException to be thrown with the error message <em>Attempted to perform an unauthorized operation</em>.</li>
<li>If trying to add another Setter to the Style, an Exception will be thrown with the (not so informative) error message <em>Error HRESULT E_FAIL has been returned from a call to a COM component</em>.</li>
<li>When removing a Setter from the Style's Setters, no exception is thrown, but the operation will have no result.</li></p><p>I've created a simple example to demonstrate how modifying the assigned Style object will not work and throw exceptions or not do anything:</p><p><object type="application/x-silverlight-2" data="data:application/x-silverlight,"  width="400" height="140">
 <param name="source" value="/media/2638/ChangingStyleOnTheFly.xap"/>
</object></p><p>The code behind for the event handlers on the buttons are as follows:
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/11/4/styles-in-silverlight-manipulating-at-runtime/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/11/4/styles-in-silverlight-manipulating-at-runtime/</guid>
                    <pubDate>Thu, 04 Nov 2010 15:02:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts version 1.8.1 for Silverlight and WPF released</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/11/1/visiblox-charts-version-181-for-silverlight-and-wpf-released/</comments>
                    <description><![CDATA[<p><p>We are pleased to announce the availability of Visiblox Charts version 1.8.1 for Silverlight and WPF.  This release includes some great new features and improvements including:</p>
<ul>
<li>Even better performance across the entire library with up to 300% improvements in some places</li>
<li>Ability to auto-scale axes based on visible data</li>
<li>Ability to render custom labels on the axes</li>
<li>Support for Crosshair behaviour to render axis labels</li>
<li>Improved highlight and selection model throughout the library</li>
<li>New PanBehaviour to add panning support to the chart</li>
<li>Repositioned and reduced size of the watermark to make it less prominent (Free Edition only)</li>
<li>New horizontal and vertical line annotations which render axis labels (Premium Edition only)</li>
<li>New DiscontinuousDateTimeAxis implementation to allow greater flexibility and extensibility  (Premium Edition only)</li>
<li>New High, Low, Close (HLC) series (Premium Edition only)</li>
</ul>
<p>We recommend you <a href="/download">download</a> the new version and give it a spin!  If you have any feedback we'd love to hear from you.</p>
<p>
 Regards,
 Visiblox Team
</p></p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/11/1/visiblox-charts-version-181-for-silverlight-and-wpf-released/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/11/1/visiblox-charts-version-181-for-silverlight-and-wpf-released/</guid>
                    <pubDate>Mon, 01 Nov 2010 15:18:00</pubDate>
                </item>
                <item>
                    <title>New Visiblox blog</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/11/1/new-visiblox-blog/</comments>
                    <description><![CDATA[<p>We've recently added blog support to our website.  Gergely Orosz, one of the core developers of Visiblox, will be hosting his blog <a href="http://www.visiblox.com/blog/author/gorosz">Gergely on Silverlight</a> here, covering all sorts of topics relating to Silverlight, Windows Phone 7, .NET development in general and of course Visiblox Charts.  Stay tuned for more exciting developments in this area in the coming months as we add more content and blogs.</p><p>Have a look at <a href="http://www.visiblox.com/blog">http://www.visiblox.com/blog</a> and let us know what you think.</p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/11/1/new-visiblox-blog/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/11/1/new-visiblox-blog/</guid>
                    <pubDate>Mon, 01 Nov 2010 15:14:00</pubDate>
                </item>
                <item>
                    <title>Visiblox Charts for Silverlight and WPF Released</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/09/29/visiblox-charts-for-silverlight-and-wpf-released/</comments>
                    <description><![CDATA[<p><p>
We are happy  to announce the first public release of the Visiblox Charts, a Silverlight and WPF charting component.
</p>
<p>
Visiblox Charts is a fully featured, high-performance charting component. The component includes a wide array of chart types and supports 
interactive behaviours out of the box such as zooming, annotations and selection among others. 
Visiblox Charts is fully customizable through styling and templating and has been designed for extensibility.
</p>
<p>
Visiblox Charts is designed to meet all manner of charting needs but also provides support for features specific to the financial domain out of the box. 
These include datetime axis with support for omitting trading hours, holidays or weekends, real time updates via streaming, candlestick and HLOC series.
</p>
<p>
A more detailed list of the capabilities of Visiblox Charts can be found on the <a href="/features">Features</a> page. 
We have also created a gallery of examples with source code, showing a variety of possible component usages. These can be viewed under the <a href="/examples">Examples</a> page.
</p>
<p>
Why not download Visiblox Charts <a href="/download">now</a>?
</p></p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/09/29/visiblox-charts-for-silverlight-and-wpf-released/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/09/29/visiblox-charts-for-silverlight-and-wpf-released/</guid>
                    <pubDate>Wed, 29 Sep 2010 14:02:00</pubDate>
                </item>
                <item>
                    <title>Examples Now Available</title>
	            <author>jbeaumont</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/09/29/examples-now-available/</comments>
                    <description><![CDATA[<p><p>
A range of <a href="/examples">examples</a> is now available demonstrating the functionality of the Visiblox Charts component. Many of these examples are provided with full source code, 
allowing you to quickly get up to speed and start developing your Visiblox Charts based applications today.
</p>
<p>
Why not have a look at the range of chart types Visiblox Charts has to offer, or see how to integrate various features such as live update, data binding, or custom styling into your charts. Or have a look at <a href="/examples/Hindsight">Hindsight</a>, a more complex example demonstrating a variety of Visiblox Charts features integrated in the context of a larger application.
</p></p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/09/29/examples-now-available/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/09/29/examples-now-available/</guid>
                    <pubDate>Wed, 29 Sep 2010 14:02:00</pubDate>
                </item>
                <item>
                    <title>Styles In Silverlight: Further Advanced Topics</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/08/19/styles-in-silverlight-further-advanced-topics/</comments>
                    <description><![CDATA[<p>This article is part 3 of 4 in a series covering everything that I think is worth knowing about styles in Silverlight. The previous parts of the series are <a href="http://www.scottlogic.co.uk/blog/gergely/2010/07/styles-in-silverlight-an-introduction/">Styles in Silverlight: an Introduction</a> and <a href="http://www.scottlogic.co.uk/blog/gergely/2010/07/styles-in-silverlight-inheritance-precedence-and-other-advanced-topics/">Styles in Silverlight – Inheritance, Precedence and Other Advanced Topics</a>.</p><p>This part of the series explores some further advanced topics: data binding, change notification, declaring styles in code behind and some other useful notes on styles.</p><p><h3><a name="stylesAreDependencyProperties"></a>Style is a Dependency Property</h3></p><p>The Style property is a <a href="http://msdn.microsoft.com/en-us/library/cc221408(VS.95).aspx" target="_blank">dependency property</a>. This means that they give you some extra features that CLR properties would not. The features that can be used in case of the Style dependency property are the following:
<ul>
<li><strong>Data binding</strong></li>
<li><strong>Property changed notifications</strong></li>
<li><strong>ClearValue</strong></li>
</ul></p><p>Note that dependency properties have two other important features that can't be used with the Style dependency property: <em>animation </em>and <em>styles</em>:
<ul>
<li>The Style property <strong>can't be animated</strong> as it's value type isn't supported by any <a href="http://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline(v=VS.95).aspx" target="_blank">Timeline</a> derived animation type.</li>
<li>Styles can't be applied to the Style dependency property... because this is the property that styles need to be applied through (all dependency properties can be styled except for Style).</li>
</ul></p><p><h3><a name="dataBinding"></a>Data binding</h3></p><p>As Style is a dependency property it can be data binded - even though there seem to be very few real world examples when this functionality would actually be needed.</p><p>The following example demonstrates how this feature works. Two Ellipses are used: LeftEllipse and RightEllipse. RightEllipse binds its style to LeftEllipse so whenever the style of LeftEllipse changes, so does the style of RightEllipse. When clicking on the button it changes the style of LeftEllipse and thus through the binding the style of RightEllipse is changed as well:</p><p><object type="application/x-silverlight-2" data="data:application/x-silverlight,"  width="300" height="70">
 <param name="source" value="/media/2649/StyleDataBinding.xap"/>
</object></p><p>The code (XAML):
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/08/19/styles-in-silverlight-further-advanced-topics/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/08/19/styles-in-silverlight-further-advanced-topics/</guid>
                    <pubDate>Thu, 19 Aug 2010 09:36:00</pubDate>
                </item>
                <item>
                    <title>Styles in Silverlight - Inheritance, Precedence and Other Advanced Topics</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/07/29/styles-in-silverlight-inheritance,-precedence-and-other-advanced-topics/</comments>
                    <description><![CDATA[<p>This article is part 2 of 4 in a series attempting to cover everything I think is worth knowing about styles in Silverlight 4. The previous article in the series was <a href="http://www.scottlogic.co.uk/blog/gergely/2010/07/styles-in-silverlight-an-introduction/">Styles in Silverlight: an Introduction</a> that covered what styles are, how they can be defined and some of their limitations.</p><p>This article focuses on some more advanced topics that are handy when building more complex applications: re-using the same styles for different types, style inheritance, style precedence and style setter precedence.</p><p><h3><a name="reusingStyles"></a>Re-Using Styles for Different Types</h3></p><p>As discussed in the previous article, <a href="http://www.scottlogic.co.uk/blog/gergely/2010/07/styles-in-silverlight-an-introduction/#targetType">all Style elements need to specify a TargetType</a> that specifies the type of class they need to be applied to. If an application uses several different types of visual elements, this can result in having to specify different styles again and again. Let's say for example our application has an Ellipse and a Rectangle and we want to have both of them have a blue fill. The straightforward way of doing this using Styles is declaring two different styles for each of them and applying those using StaticResources in XAML:
<pre class="brush: xml; toolbar: false; ">
<userControl.Resources>
    <style TargetType="Ellipse" x:Key="CustomEllipseStyle">
        <setter Property="Fill" Value="Blue"/>
    </style>
    <style TargetType="Rectangle" x:Key="CustomRectangleStyle">
        <setter Property="Fill" Value="Blue"/>
    </style>
</userControl.Resources>
<stackPanel Orientation="Vertical">
    <ellipse Width="30" Height="30" Style="{StaticResource CustomEllipseStyle}"/>
    <rectangle Width="30" Height="30" Style="{StaticResource CustomRectangleStyle}" Margin="0,10,0,0"/>
</stackPanel>
</pre></p><p>However in this particular case it's possible to combine these styles as Ellipse and Rectangle inherit from the same parent class: Shape. The Fill property that we are setting in the styles is defined in Shape, so we can define a single style with the TargetType set to Shape, then apply this Style to the elements:
<pre class="brush: xml; toolbar: false; ">
<userControl.Resources>
    <style TargetType="Shape" x:Key="CustomShapeStyle">
        <setter Property="Fill" Value="Blue"/>
    </style>
</userControl.Resources>
<stackPanel Orientation="Vertical">
    <ellipse Width="30" Height="30" Style="{StaticResource CustomShapeStyle}"/>
    <rectangle Width="30" Height="30" Style="{StaticResource CustomShapeStyle}" Margin="0,10,0,0"/>
</stackPanel>
</pre></p><p>So the TargetType of the style does not necessarily have to be the type of the visual element itself. It can be a parent class of the visual element if the setters within this style only refer to properties of this parent class. The XAML code for the second example is shorter, at the same time both examples look the same:
<object type="application/x-silverlight-2" data="data:application/x-silverlight,"  width="200" height="70">
 <param name="source" value="/media/2617/SameStyleForDifferentClasses2.xap"/>
</object>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/07/29/styles-in-silverlight-inheritance,-precedence-and-other-advanced-topics/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/07/29/styles-in-silverlight-inheritance,-precedence-and-other-advanced-topics/</guid>
                    <pubDate>Thu, 29 Jul 2010 09:49:00</pubDate>
                </item>
                <item>
                    <title>Styles in Silverlight: an Introduction</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/07/23/styles-in-silverlight-an-introduction/</comments>
                    <description><![CDATA[<p>This article is part 1 of (planned) 4 in a series attempting to cover everything I think is worth knowing about styles in Silverlight 4.</p><p><h3><a name="whatAreStyles"></a>What are Styles?</h3></p><p>Styles in Silverlight are a powerful mechanism that allow controlling the visual representation of elements in a unified way for all user interface elements. The concept is similar to using CSS to control the look and feel of HTML.</p><p>Style properties differ by element type. For example on a <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock%28VS.95%29.aspx" target="_blank">TextBlock</a> (a text element) one can style the FontSize, FontFamily, Foreground and lots of other properties. On an <a href="http://msdn.microsoft.com/en-us/library/system.windows.shapes.ellipse(VS.95).aspx" target="_blank">Ellipse</a> however none of these properties can be set, on the other hand it does provide for example the Fill property, that the TextBlock does not. So creating a blue "Hello, World" text and a red ellipse could be done the following way:</p><p><pre class="brush: xml; toolbar: false; ">
<stackPanel Orientation="Vertical">
     <textBlock FontSize="16" FontFamily="Comic Sans MS" Foreground="Blue">Hello, World!</textBlock>
     <ellipse Fill="Red" Width="30" Height="30"/>
</stackPanel>
</pre></p><p>However, to do the same thing, we could simply define Styles. Styles are list of property-value pairs. Creating the same blue text and red ellipse with styles would be done the following way:</p><p><pre class="brush: xml; toolbar: false; ">
<userControl.Resources>
    <style x:Key="CustomTextBlockStyle" TargetType="TextBlock">
        <setter Property="FontSize" Value="16"/>
        <setter Property="FontFamily" Value="Comic Sans MS"/>
        <setter Property="Foreground" Value="Blue"/>
    </style>
    <style x:Key="CustomEllipseStyle" TargetType="Ellipse">
        <setter Property="Width" Value="30"/>
        <setter Property="Height" Value="30"/>
        <setter Property="Fill" Value="Red"/>
    </style>
</userControl.Resources>
<stackPanel Orientation="Vertical">
    <textBlock Style="{StaticResource CustomTextBlockStyle}">Hello, World!</textBlock>
    <ellipse Style="{StaticResource CustomEllipseStyle}"/>
</stackPanel>
</pre></p><p><object type="application/x-silverlight-2" data="data:application/x-silverlight,"  width="150" height="70">
 <param name="source" value="/media/2600/WhatAreStyles2.xap"/>
</object></p><p>As you can see properties that we've specified as attributes on the elements, we've listed in the styles and then applied this style to the element. So instead of defining FontSize="16" of the TextBlock, we've added a Setter that had FontSize set as it's Property and 16 as it's Value. (Download the source of this example here: <a href="/media/2604/WhatAreStyles.zip">What Are Styles.zip</a>)</p><p>Having seen a simple example of using styles, let's look a little bit deeper in to what they actually are.
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/07/23/styles-in-silverlight-an-introduction/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/07/23/styles-in-silverlight-an-introduction/</guid>
                    <pubDate>Fri, 23 Jul 2010 09:30:00</pubDate>
                </item>
                <item>
                    <title>Silverlight World Cup Mashup Wins Real-Time Push Web App Competition</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/07/12/silverlight-world-cup-mashup-wins-real-time-push-web-app-competition/</comments>
                    <description><![CDATA[<p>A month ago <a href="http://kwwika.com" target="_blank">Kwwika</a>, a real-time data streaming service provider <a href="http://wiki.kwwika.com/competitions/world-cup-2010-real-time-push-web-app-competition" target="_blank">annonced a competition</a> to build a mash up that uses their World Cup 2010 Twitter streams. I've decided to enter the competition and visualize the stream of tweets in a fun and engaging way. As the competition closed on 11th July, <strong>my entry was selected as one of the winners</strong>!</p>
<h3>The Entry</h3>
<p>My entry, <a href="http://tweetforyourteam.com" target="_blank">Tweet For Your Team</a> shows the tweets of the two teams simultaneously. It measures the live intensity of the tweets (how many are written per minute for each team) and also analyzes their mood by matching keywords and using simple rules to decide whether a tweet carries positive or negative emotions for the team.</p>
<p>The entry also allows visitors to get involved and cheer for or against their team with a single click sending a shout visible to other users off the application. See <a href="http://gregdoesit.com/2010/07/world-cup-2010-real-time-twitter-mashup/" target="_blank">this post</a> on all the details on the application functionality.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-164" src="/media/2595/tweetforyourteam.jpg" alt="" width="500" height="273" /></p>
<p>Winners of the competition were announced just before the World Cup 2010 final and I was happy to see my entry being selected one of the two winners. As the <a href="http://blog.kwwika.com/kwwika-world-cup-2010-real-time-push-web-app-1" target="_blank">judging panel wrote</a> in their summary: <em>"Gergely created a really engaging application that you could easily sit and watch and interact with during any live World Cup match."</em></p>
<h3>Why Silverlight?</h3>
<p>I've used Silverlight to implement the application on top of the live streams. Silverlight turned out to be a great choice for implementing this application for several reasons.</p>
<h4>Development time</h4>
<p>It took a total of a few days to develop the application, however I was able to finish a working prototype of the application rapidly, in less than 8 hours. From there on I've spent most of the time working on the visuals and improving the mood determining algorithm.</p>
<p>Silverlight is indeed great for prototyping quickly and thanks to it's separated view and code behind concern, it's quite easy to radically modify the looks of an application down the line.</p>
<h4>Performance</h4>
<p>During games, the application had quite high load: up to 3500 tweets per minute were coming in per team. This meant up to 10 updates per second on the application interface which Silverlight dealt with surprisingly well after a few tweaks.</p>
<h4>Media and Effects</h4>
<p>Adding media and visual effects to the application is really easy and quick with Silverlight. I've decided late down the road to add some sound effects whenever someone was cheering and vuvuzela background music - all done in a few lines. Also, stunning visual effects can be achieved by using animations and playing with the opacity of elements. I was able to spice the feel of my application up in a few hours of time.</p>
<h3>Summary</h3>
<p>Silverlight turned out to be an efficient way of creating a visually appealing and performant World Cup mashup in a short period of time. World Cup 2010 is over, so the application isn't as intense as it was during the games, but I'd still encourage you to <a href="http://tweetforyourteam.com" target="_blank">take a look at it</a> or <a href="http://www.youtube.com/watch?v=Q4izM_WLFX0&amp;feature=player_embedded" target="_blank">watch the video</a> recorded during one of the World Cup games.</p>
<div style="border-top: 1px dotted #C7C7C7; padding: 10px;">Interested in an performant, easy to extend, fully themeable Silverlight / WPF charting library? Give the <a href="http://www.visiblox.com/download">free version of Visiblox</a> a try!</div>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/07/12/silverlight-world-cup-mashup-wins-real-time-push-web-app-competition/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/07/12/silverlight-world-cup-mashup-wins-real-time-push-web-app-competition/</guid>
                    <pubDate>Mon, 12 Jul 2010 13:21:00</pubDate>
                </item>
                <item>
                    <title>Advanced Printing in Silverlight: Printing Charts and Auto Scaling</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/05/7/advanced-printing-in-silverlight-printing-charts-and-auto-scaling/</comments>
                    <description><![CDATA[<p>Printing support has been introduced in Silverlight 4. This means that any part of the visual tree can be printed in a simple way via API calls. This article gives an overview of how to execute basic printing, looks at what happens when printing complex objects (e.g. charts) and describes how to auto scale elements to fit the printed page.</p>
<h3>Printing Basics</h3>
<p>The API calls to make printing happen in Silverlight couldn't really be much easier. To print, one has to create a PrintDocument class (found in the System.Windows.Printing) class. After this object created, one has to subscribe to the PrintPage event and call the Print method(). In the PrintPage event the visual tree element to be printed has to be passed. So the simplest printing scenario looks like this:</p>
<pre class="brush: c-sharp; toolbar: false; ">UIElement elementToPrint; // The element to be printed
PrintDocument doc = new PrintDocument(); // Create the PrintDocument  object that will do the printing
doc.PrintPage += (s, args) =&gt;
{
  // Set the element that needs to be printed.
  // As soon as this is set, printing starts
  args.PageVisual = elementToPrint;
}
</pre>
<h3>Printing events</h3>
<p>Three events are available when printing, all of which are events of the <strong>PrintDocument</strong> object. These are:</p>
<ul>
<li><strong>BeginPrint</strong>: this event fires right when the printing has started, after the user has been prompted the print dialogue and selected the printer to use. So this event does not fire before the printing is started, but rather at the exact beginning of it</li>
<li><strong>PrintPage</strong>: fired before each page is printed. In this event one can specify the exact contents of the next page to be printed</li>
<li><strong>EndPrint</strong>: fired when printing has ended or the user has cancelled the printing.</li>
</ul>
<p>It's important to note that the <em>PrintPage</em> event is fired for every printed page and it's the developers responsibility to specify the contents of the next printed page, Silverlight doesn't do this task. It's safe to say therefore that the current <strong>printing API is</strong> quite <strong>low level</strong>: this means lots of freedom for specifying the printed content, but also implies extra development needed for extra features like multi page printing and pagination.</p>
<h3>Printing a chart</h3>
<p>There are a couple examples on various blogs that demonstrate printing simple elements like labels and grids. However to test the functionality of the printing API I decided to see what happens when printing charts.</p>
<p>To test this I've constructed charts with the help of the <a href="http://silverlight.codeplex.com/" target="_blank">Silverlight Toolkit</a>. So I've created four different charts and tested them being printed by adding printing support similar to as described above (the source code is available at the end of the post). I've also implemented printing the whole page itself (the only difference in printing a single chart or the whole page is which element the PageVisual is pointing at). Try the example for yourself: <object width="700" height="550" data="data:application/x-silverlight," type="application/x-silverlight-2"><param name="source" value="/media/2584/PrintingExampleSmall1.xap" /><param name="src" value="data:application/x-silverlight," /></object></p>
<p>The results were as I expected: the charts had the same look and size after printing: ]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/05/7/advanced-printing-in-silverlight-printing-charts-and-auto-scaling/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/05/7/advanced-printing-in-silverlight-printing-charts-and-auto-scaling/</guid>
                    <pubDate>Fri, 07 May 2010 09:38:00</pubDate>
                </item>
                <item>
                    <title>Determining Silverlight Version Installed</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/04/29/determining-silverlight-version-installed/</comments>
                    <description><![CDATA[<p><!-- .wp_syntax { max-height:300px; overflow:auto; width:100%; } -->The other day I wanted to find out what version of Silverlight is installed on my computer. This task is actually not as simple as it sounds as the Silverlight plugin is actually browser dependent: there's a different one installed for Internet Explorer and a different for other browsers. The only way I've found to determine current Silverlight version is through Javascript.</p>
<h3>Silverlight version detection: Internet Explorer</h3>
<p>For Internet Explorer the <em>ActiveXObject("AgControl.AgControl")</em> has to be created. This object has and <em>isVersionSupported(versionNumber)</em>method which returns whether versionNumber is supported.</p>
<pre class="brush: c-sharp; toolbar: false; ">var AgControl = new ActiveXObject("AgControl.AgControl");
var version = "3.0.50106.0"; // The Silverlight version to test for
if(AgControl == null)
 alert("Silverlight is not installed!");
else if AgControl.isVersionSupported(version)
   alert("Silverlight v" + version + " is supported.");
else
   alert("Silverlight v" + version + " is not supported!");
</pre>
<p>Unfortunately it does not have a method that would return the current version thus to obtain the current version, version numbers have to be iterated. In my version detection script I've simply implemented a binary search that loops through the parts of the version numbers (major, minor, build and revision versions) determining the greatest version that is still supported. Not a very nice solution but the AgControl object leaves no other choice!</p>
<h3>Silverlight version detection: other browsers (Firefox, Google Chrome, Safari etc)</h3>
<p>For other browsers getting the Silverlight version is quite simple. The <em>navigator.plugins["Silverlight Plug-In"]</em> object contains information on the Silverlight plugin. It has the <em>description</em>member variable which contains the Silverlight version. This class makes version detection really simple compared to the hassle one has to go through with Internet Explorer!</p>
<pre class="brush: c-sharp; toolbar: false; ">var nav = navigator.plugins["Silverlight Plug-In"];
if(nav == null)
   alert("Silverlight is not installed!");
else
   alert("Silverlight version " + nav.description + " is installed.");
</pre>
<h3>Silverlight version detection script</h3>
<p>I have created a function that returns the current Silverlight version or -1 if Silverlight is not installed. This script is just a mixture of the Internet Explorer version detection part (with the binary version search implemented) and the other browsers detection script.</p>
<p>See this <strong>version detection script in action</strong>:You can use the script the following way:</p>
<pre class="brush: c-sharp; toolbar: false; ">var slVersion = GetSilverlightVersion();
        if(slVersion != -1)
           document.writeln("Your Silverlight version is: &lt;strong&gt;" +slVersion + "&lt;/strong&gt;" );
        else
           document.writeln("&lt;strong&gt;Your do not have Silverlight installed on this computer&lt;/strong&gt;");
</pre>
<p>You can <strong>download the Javascript</strong> file here: <a href="/media/2516/SilverlightVersion.js">SilverlightVersion.js</a>, or <strong>download a standalone HTML</strong> version (where the script is embedded within the HTML) here: <a href="/media/2517/SilverlightVersion.html">SilverlightVersion.html</a>.</p>
<p>You can also simply copy the script <strong>source code <span style="font-weight: normal;">from here:</span></strong></p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/04/29/determining-silverlight-version-installed/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/04/29/determining-silverlight-version-installed/</guid>
                    <pubDate>Thu, 29 Apr 2010 12:08:00</pubDate>
                </item>
                <item>
                    <title>Thank you, volcano: Scott Logic office in the US</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/04/23/thank-you,-volcano-scott-logic-office-in-the-us/</comments>
                    <description><![CDATA[<p>Last week I travelled to New York to attend the Kairos Global Summit. The event took part 16-18 April and I was planning on flying back 19 April. Due to the volcano eruption though, this departure never happened and my 4 day stay in the US suddenly grew to 11 days. After a mini New England tour this resulted in the opening of a temporary Scott Logic office in New Hampshire.
<h3>Hello, Wall Street</h3>
On the <a href="http://www.kairossociety.com/kairos-summit/summit-2010/">Kairos summit</a> 500 selected students from top universities within the US, China, India, UK, Spain and Hungary had the chance to exhibit their projects and network with each others and of the many invited CEOs. The event itself was really good, the most unforgettable part being entering the New York Stock Exchange trading floor on Saturday where many of the projects were exhibited. It was nice to see some of our clients' trading seats as I walked around. The trading floor itself was really impressive even with the stock market being closed with screens, phones and indexes everywhere.
<p style="text-align: center;"><a href="/media/2510/tradingFloor.jpg"><img class="size-full wp-image-87  aligncenter" title="On the NYSE trading floor (on the right)" src="/media/2510/tradingFloor.jpg" alt="" width="470" height="434" /></a>
On the NYSE trading floor (on the right)</p>
]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/04/23/thank-you,-volcano-scott-logic-office-in-the-us/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/04/23/thank-you,-volcano-scott-logic-office-in-the-us/</guid>
                    <pubDate>Fri, 23 Apr 2010 05:20:00</pubDate>
                </item>
                <item>
                    <title>Ten Cool Things You Didn&#39;t Know About Visual Studio 2010</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/04/8/ten-cool-things-you-didnt-know-about-visual-studio-2010/</comments>
                    <description><![CDATA[<p>Late March I've attended the <a href="http://developerdeveloperdeveloper.com/guglas/">Guthalon</a> in Glasgow - a talk by Scott Guthrie, Microsoft vice president. The topic was the new features of Visual Studio 2010, ASP.NET MVC 2 and Silverlight 4 and the Windows Phone 7. On this talk Scott showed some great new features in Visual Studio 2010. I'm sharing the ten most useful of these in this article.
<h3>1. Pin variables when debugging</h3>
At debugging when hovering over variables the "Pin variable" option appears. Clicking on this makes the variable stick next to the source code until removed (and the pin stays there between debugging sessions). It is a really hand utility eliminating having to add variables to the Watch window one by one or search through the Locals window to find the variable one's looking for. Definitely one of the top 3 new features I use on a day to day basis!</p><p><a href="/media/2480/pin.jpg"><img class="alignnone size-full wp-image-51" title="Visual Studio 2010 pin to source" src="/media/2480/pin.jpg" alt="" width="401" height="109" /></a>
<h3>2. Box selection</h3>
While holding down the Alt key box selection can be made on the screen. At first glance this feature doesn't seem to useful. However when typing anything in the selection the same text appears in all lines. So this selection is extremely useful for mass renaming of e.g. visibilities or anything else that involves changing the same thing in all lines.</p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/04/8/ten-cool-things-you-didnt-know-about-visual-studio-2010/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/04/8/ten-cool-things-you-didnt-know-about-visual-studio-2010/</guid>
                    <pubDate>Thu, 08 Apr 2010 14:51:00</pubDate>
                </item>
                <item>
                    <title>Using built-in, embedded and streamed fonts in Silverlight</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2010/03/1/using-built-in,-embedded-and-streamed-fonts-in-silverlight/</comments>
                    <description><![CDATA[<p>Silverlight gives the developer the possibility of completely customizing the developed application in all aspects. Defining fonts used for displaying text is no exception. However there are multiple ways on how to go ahead with  specifying fonts to use, this article attempts to summarize the options.
<h3>Using built-in fonts</h3>
Silverlight comes with some fonts that can be used by default, often referred to as built-in fonts. This naming is not entirely correct as the Silverlight runtime does not contain any fonts. However if the specified font is present on the machine, it can be used by Silverlight. The list of these fonts can be found <a href="http://msdn.microsoft.com/en-us/library/cc189010(VS.95).aspx#fonts_in_silverlight">here</a>.</p><p>Even though the list contains about 40 fonts, the selection is different on clients running Windows and those running OS X. The "web safe" list - the fonts that are generally installed on both Windows and OS X - are the following subset: Arial, Arial Black, Comic Sans MS, Courier New, Georgia, Lucia Grande, Lucia Sans Unicode, Times New Roman, Trebuchet and MS Verdana.</p><p>To specify a font of the default font types, simply specify the FontFamily property of the visual element:
<pre class="brush: xml; toolbar: false; ">Hello, World!</pre>
(Note that if the specified font can not be found on the client, Silverlight will fall back to the basic font type.)
<h4>Application displaying all of the built-in fonts available in Silverlight</h4>
To visualize the fonts available in Silverlight I've created a small application that lets one play around with the default fonts:
<object type="application/x-silverlight-2" data="data:application/x-silverlight,"  width="550" height="250">
 <param name="source" value="/media/2528/FontFamilies.xap"/>
</object></p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2010/03/1/using-built-in,-embedded-and-streamed-fonts-in-silverlight/</link>
                    <guid>http://www.visiblox.com/blog/posts/2010/03/1/using-built-in,-embedded-and-streamed-fonts-in-silverlight/</guid>
                    <pubDate>Mon, 01 Mar 2010 16:52:00</pubDate>
                </item>
                <item>
                    <title>Behaviour Driven Development for .NET developers</title>
	            <author>gorosz</author>
                    <comments>http://www.visiblox.com/blog/posts/2009/11/11/behaviour-driven-development-for-net-developers/</comments>
                    <description><![CDATA[<p>On the <a href="http://scotalt.net/">Scot ALT.NET</a> meeting held on 4th November <a href="http://code-rant.com/">Robert Lewis</a> gave a <a href="http://code-rant.com/2009/11/bdd-tools-and-techniques/">talk</a> on BDD explaining the basics, motivations and demonstrating the .NET tools available to support this methodology. I found the talk to be really interesting, mostly because Robert was focusing on the practical side of BDD – that is how .NET developers can use this methodology and at what projects might this be beneficial.</p><p><h3>What is BDD?</h3></p><p>If you haven't heard of BDD yet, Dan North's <a href="http://dannorth.net/introducing-bdd">Introducing BDD</a> or the <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD summary on Wikipedia</a> is a good place to start. In a nutshell BDD is making another step of abstraction from TDD with the help of Domain Driven Design.</p><p>Instead of specifying atomic level unit tests, it tries to describe the desired behaviour of the software with natural language sentences. These sentences can then be written by the non-technical end users allowing them to get involved in the testing process. The sentences – often referred to as user scenarios – are then implemented by the developer as a series of unit tests.</p><p><h3>BDD Frameworks for .NET</h3></p><p>There are currently two BDD frameworks .NET developers can use to implement this methodology: NBehave and the IronRuby compiled version of Cucumber.</p><p><strong><a href="http://nbehave.org/">NBehave</a></strong> is a .NET version inspired by Dan North's <a href="http://jbehave.org/">JBehave</a>. It basically allows user defined stories in a text file to be mapped to a series of test functions. For example the sentence “Given I have logged in to the system, when I start a new transaction, then I will have to enter my password” can be mapped to the test functions:</p><p><pre class="brush: c-sharp; toolbar: false; ">
[ActionMethod]
public void Given_I_have_logged_in_to_the_system()

[ActionMethod]
public void When_I_start_a_new_transaction()

[ActionMethod]
public void I_will_have_to_enter_my_password()</pre></p><p>The mapping can be be done in a more readable way, by having attributes containing the mapping strings e.g.</p><p><pre class="brush: c-sharp; toolbar: false; ">
[ActionStep("I have logged in to the system")]
public void Login()
</pre></p><p>The framework goes through the user defined sentences, does the mapping and outputs whether the user stories have failed or succeeded. This way BDD can be implemented via the Red-Green-Refactor cycle which is familiar to ones using TDD.</p><p>NBehave has support for using regex expressions when mapping user stories and test functions which gives it a larger flexibility compared to having to define individual test methods for every test. It's also worth noting that it supports most .NET unit testing libraries suggesting integration into existing projects using these libraries is smooth.</p><p>The main drawbacks of the framework are that it's not really documented and there's no support for defining the same user stories with different parameters – you have to write them down again each.</p><p><strong><a href="http://cukes.info/">Cucumber</a></strong> is a Ruby based tool which seems to be better documented and more feature-rich than NBehave (e.g. having the support for defining parameters for a given user story in a table-like format). Thanks to the IronRuby implementation it can be compiled to run on .NET.</p><p>]]></description>   
                    <link>http://www.visiblox.com/blog/posts/2009/11/11/behaviour-driven-development-for-net-developers/</link>
                    <guid>http://www.visiblox.com/blog/posts/2009/11/11/behaviour-driven-development-for-net-developers/</guid>
                    <pubDate>Wed, 11 Nov 2009 20:58:00</pubDate>
                </item>
        </channel>
    </rss>



