<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Silverlight for Business &#187; Silverlight</title>
	<atom:link href="http://silverlightforbusiness.net/category/silverlight/feed/" rel="self" type="application/rss+xml" />
	<link>http://silverlightforbusiness.net</link>
	<description></description>
	<lastBuildDate>Thu, 05 Jan 2012 07:41:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='silverlightforbusiness.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/98e6239e13bc89023c26c53413ea95ab?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Silverlight for Business &#187; Silverlight</title>
		<link>http://silverlightforbusiness.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://silverlightforbusiness.net/osd.xml" title="Silverlight for Business" />
	<atom:link rel='hub' href='http://silverlightforbusiness.net/?pushpress=hub'/>
		<item>
		<title>I&#8217;m talking about WP7 at the UK Silverlight Group &#8211; 21 July</title>
		<link>http://silverlightforbusiness.net/2010/07/08/im-talking-about-wp7-at-the-uk-silverlight-group-21-july/</link>
		<comments>http://silverlightforbusiness.net/2010/07/08/im-talking-about-wp7-at-the-uk-silverlight-group-21-july/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 08:11:51 +0000</pubDate>
		<dc:creator>ianblackburn</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight User Group UK (SLUGUK)]]></category>
		<category><![CDATA[WP7]]></category>
		<category><![CDATA[SLUGUK]]></category>

		<guid isPermaLink="false">https://silverlightforbusiness.wordpress.com/2010/07/08/im-talking-about-wp7-at-the-uk-silverlight-group-21-july/</guid>
		<description><![CDATA[I am presenting on Windows Phone 7 at the next SLUGUK meeting – should be fun.&#160; Rich Griffin will be joining me and we are expecting to have a real device or two to show off. Details are here: http://consultingblogs.emc.com/markmann/archive/2010/07/07/silverlight-uk-user-group-july-2010-agenda.aspx&#160; &#8230; <a href="http://silverlightforbusiness.net/2010/07/08/im-talking-about-wp7-at-the-uk-silverlight-group-21-july/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=98&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am presenting on Windows Phone 7 at the next SLUGUK meeting – should be fun.&#160; Rich Griffin will be joining me and we are expecting to have a real device or two to show off.</p>
<p>Details are here: <a title="http://consultingblogs.emc.com/markmann/archive/2010/07/07/silverlight-uk-user-group-july-2010-agenda.aspx" href="http://consultingblogs.emc.com/markmann/archive/2010/07/07/silverlight-uk-user-group-july-2010-agenda.aspx">http://consultingblogs.emc.com/markmann/archive/2010/07/07/silverlight-uk-user-group-july-2010-agenda.aspx</a>&#160;</p>
<p>Hope you can make it!</p>
<p>Cheers</p>
<p>Ian</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silverlightforbusiness.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silverlightforbusiness.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silverlightforbusiness.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silverlightforbusiness.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silverlightforbusiness.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silverlightforbusiness.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silverlightforbusiness.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silverlightforbusiness.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silverlightforbusiness.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silverlightforbusiness.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silverlightforbusiness.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silverlightforbusiness.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silverlightforbusiness.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silverlightforbusiness.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=98&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silverlightforbusiness.net/2010/07/08/im-talking-about-wp7-at-the-uk-silverlight-group-21-july/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2b17c2fe571c44c0f3c00b3610b692f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ianblackburn</media:title>
		</media:content>
	</item>
		<item>
		<title>Bloggers: Win a free place to the Silverlight Masterclass (worth £1095!)</title>
		<link>http://silverlightforbusiness.net/2010/04/27/bloggers-win-a-free-place-to-the-silverlight-masterclass-worth/</link>
		<comments>http://silverlightforbusiness.net/2010/04/27/bloggers-win-a-free-place-to-the-silverlight-masterclass-worth/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 16:32:23 +0000</pubDate>
		<dc:creator>ianblackburn</dc:creator>
				<category><![CDATA[Blend 4]]></category>
		<category><![CDATA[Designers]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[M-V-VM]]></category>
		<category><![CDATA[PRISM]]></category>
		<category><![CDATA[RIA Services]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Blend]]></category>
		<category><![CDATA[Masterclass]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Prism]]></category>

		<guid isPermaLink="false">https://silverlightforbusiness.wordpress.com/2010/04/27/bloggers-win-a-free-place-to-the-silverlight-masterclass-worth/</guid>
		<description><![CDATA[bbits are giving away a free ticket for the Silverlight Masterclasses in June To enter the raffle all you need to do is use the exact text between these lines in your blog post, including all the links, then email &#8230; <a href="http://silverlightforbusiness.net/2010/04/27/bloggers-win-a-free-place-to-the-silverlight-masterclass-worth/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=87&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bbits.co.uk">bbits</a> are giving away a free ticket for the <a href="http://silverlightmasterclass.net" target="_blank">Silverlight Masterclasses</a> in June</p>
<p>To enter the raffle all you need to do is use the exact text between these lines in your blog post, including all the links, then email <a href="mailto:Ian@bbits.co.uk">Ian@bbits.co.uk</a> with the url to the blog entry.&#160; You can chose any of the events listed on the site.</p>
<p>The draw will be made on June 1st and the winner notified by email and via this blog.</p>
<p>Good Luck!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8211; TEXT STARTS HERE</p>
<p>The Silverlight Tour comes to the UK – and it’s called the Masterclass!</p>
<p>This 3 day hands-on training with both designer and developer tracks looks awesome and (uniquely) has <strong>two </strong>expert trainers per course.&#160; </p>
<p>Currently scheduled in London, Manchester, and the Midlands for June, all courses also come with the chance to win an xbox 360, and Silverlight Spy licences!</p>
<p>Early bird discount of £100 if you book in May, and if you are a member of #SLUGUK or #<a href="http://www.nxtgenug.net/" target="_blank">nxtgenug</a> there are additional discounts to be had.</p>
<p>Full Details are here: <a href="http://silverlightmasterclass.net">http://silverlightmasterclass.net</a> </p>
<p>In addition bbits are holding a raffle for a free ticket for the masterclass. To be eligible to win the ticket (worth £1095!) you MUST paste this text, including all links, into your blog and email <a href="mailto:Ian@bbits.co.uk">Ian@bbits.co.uk</a> with the url to the blog entry.&#160; The draw will be made on June 1st and the winner informed by email and on <a href="http://silverlightmasterclass.net">http://silverlightmasterclass.net</a></p>
<p>&#8212;&#8212;&#8212;&#8212;- TEXT ENDS</p>
<p>Cheers</p>
<p>Ian</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silverlightforbusiness.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silverlightforbusiness.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silverlightforbusiness.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silverlightforbusiness.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silverlightforbusiness.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silverlightforbusiness.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silverlightforbusiness.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silverlightforbusiness.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silverlightforbusiness.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silverlightforbusiness.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silverlightforbusiness.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silverlightforbusiness.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silverlightforbusiness.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silverlightforbusiness.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=87&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silverlightforbusiness.net/2010/04/27/bloggers-win-a-free-place-to-the-silverlight-masterclass-worth/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2b17c2fe571c44c0f3c00b3610b692f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ianblackburn</media:title>
		</media:content>
	</item>
		<item>
		<title>Using the DataStateBehavior for &#8220;Loading animations&#8221; in MVVM</title>
		<link>http://silverlightforbusiness.net/2010/04/26/using-the-datastatebehavior-for-loading-animations-in-mvvm/</link>
		<comments>http://silverlightforbusiness.net/2010/04/26/using-the-datastatebehavior-for-loading-animations-in-mvvm/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 20:45:14 +0000</pubDate>
		<dc:creator>ianblackburn</dc:creator>
				<category><![CDATA[Blend 4]]></category>
		<category><![CDATA[Designers]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[M-V-VM]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Behaviors]]></category>
		<category><![CDATA[Blend]]></category>
		<category><![CDATA[MVVM]]></category>

		<guid isPermaLink="false">https://silverlightforbusiness.wordpress.com/2010/04/26/using-the-datastatebehavior-for-loading-animations-in-mvvm/</guid>
		<description><![CDATA[Behaviours are growing in importance within Blend – especially for developing Silverlight and WPF apps using the MVVM pattern.&#160; In fact they are becoming so useful we have to wonder when they will be made available in the editor of &#8230; <a href="http://silverlightforbusiness.net/2010/04/26/using-the-datastatebehavior-for-loading-animations-in-mvvm/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=86&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Behaviours are growing in importance within Blend – especially for developing Silverlight and WPF apps using the MVVM pattern.&#160; In fact they are becoming so useful we have to wonder when they will be made available in the editor of VS 2010.</p>
<p>A couple you should definitely look at, if you haven’t already done so when using MVVM, are the CallMethodAction and InvokeCommandAction that make it easy to wire up a Method or Command in your ViewModel using the Blend editor.</p>
<p>However a new one that now ships in box with Blend 4 offers something a little more interesting and perhaps less obvious.&#160; This is the DataStateBehavior which allows you to change to a Control State depending on a property of your ViewModel.&#160; This struck me as an easy way to provide an animation when your ViewModel is doing some async work.</p>
<p>Lets take a simple example.&#160; First the ViewModel.&#160; This has a single method called DoWork that simulates a few seconds of work (e.g. calling an async service) and a property called IsWorking that can be set to true whenever the ViewModel is doing some prolonged work.&#160; One way to handle this in a more complex scenarios when you could possible have multiple async calls happening is to have a counter that you increment whenever you start some work and the decrement when you stop work.&#160; Whenever the counter is positive then you should display your “loading animation” which we’ll achieve through the DataStateBehavior.&#160; Here it is:</p>
</p>
<div id="codeSnippetWrapper">
<div style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0;" id="codeSnippet">
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum1">   1:</span> <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> MainPageViewModel : INotifyPropertyChanged</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum2">   2:</span> {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum3">   3:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum4">   4:</span>     <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">bool</span> _isWorking;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum5">   5:</span>     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">bool</span> IsWorking</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum6">   6:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum7">   7:</span>         get</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum8">   8:</span>         {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum9">   9:</span>             <span style="color:#0000ff;">return</span> _isWorking;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum10">  10:</span>         }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum11">  11:</span>         set</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum12">  12:</span>         {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum13">  13:</span>             _isWorking = <span style="color:#0000ff;">value</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum14">  14:</span>             RaisePropertyChanged(<span style="color:#006080;">&quot;IsWorking&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum15">  15:</span>         }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum16">  16:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum17">  17:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum18">  18:</span>     <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">int</span> _workCount;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum19">  19:</span>     <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">int</span> WorkCount</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum20">  20:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum21">  21:</span>         get</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum22">  22:</span>         {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum23">  23:</span>             <span style="color:#0000ff;">return</span> _workCount;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum24">  24:</span>         }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum25">  25:</span>         set</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum26">  26:</span>         {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum27">  27:</span>             <span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">value</span> &lt; 0) <span style="color:#0000ff;">value</span> = 0;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum28">  28:</span>             _workCount = <span style="color:#0000ff;">value</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum29">  29:</span>             IsWorking = _workCount &gt; 0;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum30">  30:</span>         }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum31">  31:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum32">  32:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum33">  33:</span>     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> DoWork()</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum34">  34:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum35">  35:</span>         <span style="color:#008000;">//simulate some work</span></pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum36">  36:</span>         WorkCount++;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum37">  37:</span>         DispatcherTimer timer = <span style="color:#0000ff;">new</span> DispatcherTimer();</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum38">  38:</span>         timer.Interval = TimeSpan.FromSeconds(3);</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum39">  39:</span>         timer.Start();</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum40">  40:</span>         timer.Tick += (sender, args) =&gt;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum41">  41:</span>         {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum42">  42:</span>             WorkCount--;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum43">  43:</span>             timer.Stop();</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum44">  44:</span>         };</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum45">  45:</span>         </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum46">  46:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum47">  47:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum48">  48:</span>     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> RaisePropertyChanged(<span style="color:#0000ff;">string</span> propertyName)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum49">  49:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum50">  50:</span>         <span style="color:#0000ff;">if</span> (PropertyChanged != <span style="color:#0000ff;">null</span>)</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum51">  51:</span>         {</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum52">  52:</span>             PropertyChanged(<span style="color:#0000ff;">this</span>, <span style="color:#0000ff;">new</span> PropertyChangedEventArgs(propertyName));</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum53">  53:</span>         }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum54">  54:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum55">  55:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:#f4f4f4;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum56">  56:</span>     <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">event</span> PropertyChangedEventHandler PropertyChanged;</pre>
<p><!--CRLF--></p>
<pre style="text-align:left;line-height:12pt;background-color:white;width:100%;font-family:&#039;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;margin:0;padding:0;"><span style="color:#606060;" id="lnum57">  57:</span> }</pre>
<p><!--CRLF--></div>
</div>
<p>&#160;</p>
<p>In Blend I first set the DataContext for the User Control to this ViewModel</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2010/04/image.png"><img style="display:inline;border-width:0;" title="image" border="0" alt="image" src="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb.png?w=572&#038;h=484" width="572" height="484" /></a> </p>
<p>Which looks like this in Xaml and will instantiate the ViewModel and set it as the DataContext for this View (UserControl)</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2010/04/image1.png"><img style="display:inline;border-width:0;" title="image" border="0" alt="image" src="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb1.png?w=644&#038;h=97" width="644" height="97" /></a> </p>
</p>
<p>I drew a big button on the artboard and then created a couple of states called “Working” and “NotWorking”.&#160; I had a bit of fun setting some effects and animations for the state transitions.&#160; In particular I made sure the animation for the Working state was set to auto-reverse and repeat forever.</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2010/04/image2.png"><img style="display:inline;border-width:0;" title="image" border="0" alt="image" src="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb2.png?w=644&#038;h=409" width="644" height="409" /></a> </p>
<p>Now comes the fun bit by using Blend behaviours to wire up the click event on the button to the DoWork method in the ViewModel and then to use the DataStateBehavior to change between the Working and NoWorking states based on the IsWorking property on the ViewModel.</p>
<p>First to wire up the Do Work Method (Note there is also an InvokeCommandAction you can use if you have a command on your ViewModel rather than a simple method I have created here).&#160; To do this you simple drag the CallMethodAction from the Behaviors section in the assets panel and set the properties as shown below:</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2010/04/image3.png"><img style="display:inline;border-width:0;" title="image" border="0" alt="image" src="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb3.png?w=644&#038;h=272" width="644" height="272" /></a> </p>
<p>To wire up the DataStateBehavior the process is similar – drag it from the behaviour from the assets panel and set the properties as shown:</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2010/04/image4.png"><img style="display:inline;border-width:0;" title="image" border="0" alt="image" src="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb4.png?w=644&#038;h=354" width="644" height="354" /></a> </p>
<p>This looks like this in XAML:</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2010/04/image5.png"><img style="display:inline;border-width:0;" title="image" border="0" alt="image" src="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb5.png?w=644&#038;h=130" width="644" height="130" /></a> </p>
<p>And that’s it!&#160; Running the app and clicking the button will run your method in your ViewModel and dispay your Working state.&#160; Once the work is complete in the ViewModel the control returns to the NotWorking state.&#160; </p>
<p>This is nice because:</p>
<ul>
<li>The ViewModel knows nothing of the View and so is more easily testable. </li>
<li>Everything can be wired up in Blend – no code to write for a designer. </li>
<li>The Xaml is actually nice and straight forward to, and easy to understand. </li>
</ul>
<p>I would like to see Behaviours in the VS2010 too, because I think there is definitely a case for developers taking advantage of this sort of thing, though it wouldn’t take much for them to type in the Xaml directly.</p>
<p>Example project is available from here: <a title="http://cid-fb8b852ef1ab0b35.skydrive.live.com/self.aspx/SampleCode/SimpleMVVMLoadingAnimation.zip" href="http://cid-fb8b852ef1ab0b35.skydrive.live.com/self.aspx/SampleCode/SimpleMVVMLoadingAnimation.zip">http://cid-fb8b852ef1ab0b35.skydrive.live.com/self.aspx/SampleCode/SimpleMVVMLoadingAnimation.zip</a>&#160;</p>
<p>Cheers</p>
<p>Ian</p>
<p>P.S. Don’t forget our Silverlight Masterclass is now touring the UK:&#160; <a href="http://silverlightmasterclass.net">Http://silverlightmasterclass.net</a> – book early!</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:07407d9f-abe2-4662-b7a2-adb97661d165" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Silverlightpulse" rel="tag">Silverlightpulse</a>,<a href="http://technorati.com/tags/Blend" rel="tag">Blend</a>,<a href="http://technorati.com/tags/MVVM" rel="tag">MVVM</a>,<a href="http://technorati.com/tags/Behaviors" rel="tag">Behaviors</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silverlightforbusiness.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silverlightforbusiness.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silverlightforbusiness.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silverlightforbusiness.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silverlightforbusiness.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silverlightforbusiness.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silverlightforbusiness.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silverlightforbusiness.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silverlightforbusiness.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silverlightforbusiness.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silverlightforbusiness.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silverlightforbusiness.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silverlightforbusiness.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silverlightforbusiness.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=86&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silverlightforbusiness.net/2010/04/26/using-the-datastatebehavior-for-loading-animations-in-mvvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2b17c2fe571c44c0f3c00b3610b692f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ianblackburn</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2010/04/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>I am talking at the UK Silverlight User Group tonight</title>
		<link>http://silverlightforbusiness.net/2009/09/29/i-am-talking-at-the-uk-silverlight-user-group-tonight/</link>
		<comments>http://silverlightforbusiness.net/2009/09/29/i-am-talking-at-the-uk-silverlight-user-group-tonight/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 10:06:40 +0000</pubDate>
		<dc:creator>ianblackburn</dc:creator>
				<category><![CDATA[RIA Services]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://silverlightforbusiness.wordpress.com/2009/09/29/i-am-talking-at-the-uk-silverlight-user-group-tonight/</guid>
		<description><![CDATA[I am chuffed to be talking at the user group meeting tonight, along with Ian Smith. Details here I will be talking about two things : Silverlightpulse.net This was the micro app I created before the Mix 09 conference in &#8230; <a href="http://silverlightforbusiness.net/2009/09/29/i-am-talking-at-the-uk-silverlight-user-group-tonight/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=71&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am chuffed to be talking at the user group meeting tonight, along with <a href="http://twitter.com/irascian" target="_blank">Ian Smith</a>.</p>
<p>Details <a href="http://consultingblogs.emc.com/markmann/archive/2009/08/28/silverlight-uk-user-group-9-agenda.aspx" target="_blank">here</a></p>
<p>I will be talking about two things :</p>
<h2><a href="http://silverlightpulse.net" target="_blank">Silverlightpulse.net</a></h2>
<p>This was the micro app I created before the Mix 09 conference in anticipation for the Silverlight 3 announcements and why I was originally invited to talk at the user group meeting (it’s a bit of a long story as to why it has taken so long for that to actually materialize – filled with stories of product launches and twisted ankles!).&#160; </p>
<p>I still think this is a very interesting app though, and has some potential that I have yet to realize.&#160; Tonight I will be going into why I think that and asking: “is this a worthwhile community project and who wants to be involved?”</p>
<h2>Using RIA Services with Silverlight</h2>
<p>To me RIA services offer a prescriptive pattern that will be useful for a majority of projects.&#160; ScottGu called out 80% as the take-up figure when he talked about it recently and <a href="http://twitter.com/brada/statuses/4412127833" target="_blank">John Papa said in a recent tweet “I think RIA Services could be the best thing to happen to Silverlight LOB apps”</a>.&#160; I agree, <a href="http://wildermuth.com/2009/09/29/Choosing_a_Data_Access_Layer_for_Silverlight_3" target="_blank">though some may not entirely</a>.&#160; I only have an hour in total this evening but I hope to give a flavour of RIA services and what it can bring to the party.</p>
<p>Hope to see you there!</p>
<p>Cheers</p>
<p>Ian</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:71f45aa8-f3f0-41ff-8d52-8be62e4c0ef6" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/Silverlight" rel="tag">Silverlight</a>,<a href="http://technorati.com/tags/User+Group" rel="tag">User Group</a>,<a href="http://technorati.com/tags/RIA+Services" rel="tag">RIA Services</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silverlightforbusiness.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silverlightforbusiness.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silverlightforbusiness.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silverlightforbusiness.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silverlightforbusiness.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silverlightforbusiness.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silverlightforbusiness.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silverlightforbusiness.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silverlightforbusiness.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silverlightforbusiness.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silverlightforbusiness.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silverlightforbusiness.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silverlightforbusiness.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silverlightforbusiness.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=71&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silverlightforbusiness.net/2009/09/29/i-am-talking-at-the-uk-silverlight-user-group-tonight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2b17c2fe571c44c0f3c00b3610b692f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ianblackburn</media:title>
		</media:content>
	</item>
		<item>
		<title>Pushing Data From the Server to Silverlight 3 using a Duplex Wcf Service</title>
		<link>http://silverlightforbusiness.net/2009/06/23/pushing-data-from-the-server-to-silverlight-3-using-a-duplex-wcf-service/</link>
		<comments>http://silverlightforbusiness.net/2009/06/23/pushing-data-from-the-server-to-silverlight-3-using-a-duplex-wcf-service/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 05:32:22 +0000</pubDate>
		<dc:creator>ianblackburn</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Duplex]]></category>
		<category><![CDATA[WCF]]></category>

		<guid isPermaLink="false">http://silverlightforbusiness.wordpress.com/2009/06/23/pushing-data-from-the-server-to-silverlight-3-using-a-duplex-wcf-service/</guid>
		<description><![CDATA[During a recent course with Stan James  we discussed how Silverlight 3 could be used with duplex services to push data from the server to the clients; I wanted to produce a simple example of how to do this.  Pushing data this way has a number &#8230; <a href="http://silverlightforbusiness.net/2009/06/23/pushing-data-from-the-server-to-silverlight-3-using-a-duplex-wcf-service/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=58&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>During a recent course with <a href="http://www.stanjames.com/">Stan James </a> we discussed how Silverlight 3 could be used with duplex services to push data from the server to the clients; I wanted to produce a simple example of how to do this.  Pushing data this way has a number of benefits:</p>
<ul>
<li>You reduce the load on the server; instead of multiple clients polling the server periodically, we send the data from the server to the clients as and when we want to.</li>
<li>We can eliminate or reduce data lag in time sensitive applications – so as soon as we have the data available we can push it to Silverlight to react to.  This can be very important for applications that need to show data changes as they happen, such as trading systems or perhaps live statistics from sports events such as Formula 1.</li>
<li>All clients receive updates at the same time.</li>
</ul>
<p>There is a nice sample application from Mix09 available <a href="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=2401">here</a> which creates a chat application as well as an example of a server push.  However I felt a simpler example would have a benefit to many trying to get to grips with this, together with a bit more explanation.  We will however use generic DuplexService class that is created in that project (it would make sense for a class like this to be available in the framework, or at least a template within Visual studio)</p>
<h2>What our application will do</h2>
<p>We want a simple example, and that is what we will get.  The server will periodically push a “LiveData” message to any Silverlight client that has connected, and the client will display it.  I am not concerned how the data gets to the server here, only how to send it out to the client once we have it. </p>
<h2>How the project fits together</h2>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image12.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image_thumb11.png?w=487&#038;h=330" border="0" alt="image" width="487" height="330" /></a></p>
<h2>Creating the Sample</h2>
<h3>Creating the Project</h3>
<p>First create a new Silverlight project; let’s call it DuplexExample – ensure you include a Asp.Net Web Application with the default name (DuplexExample.Web) .  In the <strong>web site</strong> add a reference to the System.ServiceModel.PollingDuplex (make sure you get the correct one – the v3.0 one in the <strong>Server</strong> folder.)</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image30.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image30_thumb.png?w=502&#038;h=218" border="0" alt="image" width="502" height="218" /></a></p>
<p>And in the <strong>Silverlight</strong> project also add a reference to System.ServiceModel.PollingDuplex (but this time in the <strong>Client</strong> folder):</p>
<p> <a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image35.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image35_thumb.png?w=500&#038;h=186" border="0" alt="image" width="500" height="186" /></a></p>
<p>Download the Duplex sample from <a title="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=2401" href="http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=2401">http://code.msdn.microsoft.com/silverlightws/Release/ProjectReleases.aspx?ReleaseId=2401</a>, extract it and grab the <strong>DuplexService.cs</strong> file and drop it into your web site.</p>
<h3>Creating the Service</h3>
<p>Now <em>we could</em> add a Wcf service using Visual Studio templates, but that would actually create a lot of stuff we don’t need which we would just have to delete, so instead just add a text file but call it <strong>LiveDataService.svc</strong> . This will give us a blank file into which you can add the following:</p>
<p><span style="background:#ffee62;">&lt;%</span><span style="color:blue;">@ </span><span style="color:#a31515;">ServiceHost<br />
        </span><span style="color:red;">Language</span><span style="color:blue;">=&#8221;C#&#8221;<br />
        </span><span style="color:red;">Debug</span><span style="color:blue;">=&#8221;true&#8221;<br />
        </span><span style="color:red;">Factory</span><span style="color:blue;">=&#8221;DuplexExample.Web.LiveDataServiceFactory&#8221;<br />
        </span><span style="color:red;">Service</span><span style="color:blue;">=&#8221;DuplexExample.Web.LiveDataService&#8221;<br />
         </span><span style="background:#ffee62;">%&gt;</span></p>
<p><span style="background:#ffee62;"> </span></p>
<ol><a href="http://11011.net/software/vspaste"></a></ol>
<p>The only difference here to the contents of a normal svc file is the fact that there is no CodeBehind value specified and we have explicitly specified a Factory class.  (For more details on these options see here: <a title="http://msdn.microsoft.com/en-us/library/aa967286.aspx" href="http://msdn.microsoft.com/en-us/library/aa967286.aspx">http://msdn.microsoft.com/en-us/library/aa967286.aspx</a>) Since we have specified a LiveDataService for our service and LiveDataServiceFactory class that will be used to instantiate the factory service, we will need to go and create these. </p>
<p>But  before we can do that we need a DataContract class called <strong>LiveDataMessage – </strong>this is the simple class that our service will send to Silverlight.</p>
<p>[<span style="color:#2b91af;">DataContract</span>]<br />
<span style="color:blue;">public class </span><span style="color:#2b91af;">LiveDataMessage</span>: <span style="color:#2b91af;">DuplexMessage<br />
</span>{<br />
    [<span style="color:#2b91af;">DataMember</span>]<br />
    <span style="color:blue;">public int </span>Value { <span style="color:blue;">get</span>; <span style="color:blue;">set</span>; }<br />
    [<span style="color:#2b91af;">DataMember</span>]<br />
    <span style="color:blue;">public string </span>Description { <span style="color:blue;">get</span>; <span style="color:blue;">set</span>; }<br />
}</p>
<p>Ok so now we can create our “LiveDataService” – add a class to your web site called <strong>LiveDataService.cs</strong>  and add the following code.  This is fairly simple – we are using a Timer to send a message to all clients every 5 seconds:<br />
<span style="color:blue;"> </span></p>
<p><span style="color:blue;">using </span>System;<br />
<span style="color:blue;">using</span>Microsoft.Silverlight.Cdf.Samples.Duplex;<br />
<span style="color:blue;">using</span>System.Threading;</p>
<p><span style="color:blue;">namespace </span>DuplexExample.Web<br />
{<br />
    <span style="color:blue;">public class </span><span style="color:#2b91af;">LiveDataService </span>:<span style="color:#2b91af;">DuplexService<br />
   </span>{<br />
        <span style="color:#2b91af;">Timer </span>liveDataTimer;</p>
<p>        <span style="color:blue;">public </span>LiveDataService()<br />
        {<br />
            <span style="color:green;">//Set up a an update every 5 seconds<br />
           </span><span style="color:blue;">this</span>.liveDataTimer = <span style="color:blue;">new</span><span style="color:#2b91af;">Timer</span>(<span style="color:blue;">new</span><span style="color:#2b91af;">TimerCallback</span>(LiveDataUpdate),<span style="color:blue;">null</span>, 0, 5000);<br />
        }</p>
<p>        <span style="color:blue;">void </span>LiveDataUpdate(<span style="color:blue;">object</span>o)<br />
        {<br />
            <span style="color:#2b91af;">LiveDataMessage </span>liveDataMessage = <span style="color:blue;">new</span><span style="color:#2b91af;">LiveDataMessage</span>()<br />
            {<br />
                Description = <span style="color:#a31515;">&#8220;Live Data at &#8220;</span>+ <span style="color:#2b91af;">DateTime</span>.Now.ToLongTimeString(),<br />
                Value = <span style="color:blue;">new</span><span style="color:#2b91af;">Random</span>().Next(0, 100)<br />
            };<br />
            PushToAllClients(liveDataMessage);<br />
        }<br />
    }<br />
}</p>
<h3>The DuplexService Class</h3>
<p>You will notice that our LiveDataService inherits from the DuplexService we added to our project – this provides all the plumbing work for the duplex service:</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image41.png"><img style="border-bottom:0;border-left:0;display:inline;margin-left:0;border-top:0;margin-right:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image4_thumb.png?w=494&#038;h=243" border="0" alt="image" width="494" height="243" /></a></p>
<p>Crucially this class is also marked with the following attribute, meaning our service can keep track of clients that have connected, because it stays in memory and is not recycled&#8217;:</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image14.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image14_thumb.png?w=488&#038;h=224" border="0" alt="image" width="488" height="224" /></a></p>
<p>Ok – so the DuplexService provides plenty of goodness for free, though there is one thing we need to alter in this file – you may have noticed already that it is not compiling.  Down at the bottom you will see a list of KnownTypes.  These related to the sample project you downloaded and not what we want.  We only have one specific KnownType (apart from the Connect and Disconnect) called LiveDataMessage. </p>
<p><a href="http://11011.net/software/vspaste"></a>So you need to make the following change to the DuplexService.cs file (at the bottom) :</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image39.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image39_thumb.png?w=489&#038;h=255" border="0" alt="image" width="489" height="255" /></a></p>
<ul><a href="http://11011.net/software/vspaste"></a></ul>
<h3>The LiveDataServiceFactory class</h3>
<p>Finally we need to add the <strong>LiveDataServiceFactory </strong>class  &#8211; which inherits from the DataServiceFactory class in the DuplexService.cs file (and in fact that’s all it will do)</p>
<pre class="code"><span style="color:blue;">namespace </span>DuplexExample.Web
{
    <span style="color:blue;">public class </span><span style="color:#2b91af;">LiveDataServiceFactory </span>: <span style="color:#2b91af;">DuplexServiceFactory</span>&lt;<span style="color:#2b91af;">LiveDataService</span>&gt; {}

}</pre>
<p>If you go and look at the DuplexServiceFactory we are inheriting from (again in the DuplexService.cs file) you will see that it provides the configuration for the service with a custom binding (this is an alternative to providing configuration for doing this)</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image26.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image26_thumb.png?w=492&#038;h=223" border="0" alt="image" width="492" height="223" /></a></p>
<p><a href="http://11011.net/software/vspaste"></a></p>
<h2>The Silverlight Project</h2>
<p>Make sure you can build your solution, then add a Service Reference from the Silverlight project to the LiveDataService you have created:</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image22.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image22_thumb.png?w=515&#038;h=484" border="0" alt="image" width="515" height="484" /></a></p>
<p>I created a very simple UI – just a button and a ListBox shown below:</p>
<pre class="code"><span style="color:blue;">&lt;</span><span style="color:#a31515;">Grid </span><span style="color:red;">x</span><span style="color:blue;">:</span><span style="color:red;">Name</span><span style="color:blue;">="LayoutRoot" </span><span style="color:red;">Background</span><span style="color:blue;">="White"&gt;
    &lt;</span><span style="color:#a31515;">Grid.RowDefinitions</span><span style="color:blue;">&gt;
        &lt;</span><span style="color:#a31515;">RowDefinition </span><span style="color:red;">Height</span><span style="color:blue;">="75"/&gt;
        &lt;</span><span style="color:#a31515;">RowDefinition </span><span style="color:red;">Height</span><span style="color:blue;">="225"/&gt;
    &lt;/</span><span style="color:#a31515;">Grid.RowDefinitions</span><span style="color:blue;">&gt;
    &lt;</span><span style="color:#a31515;">Button </span><span style="color:red;">Content</span><span style="color:blue;">="Connect"             </span><span style="color:red;">Click</span><span style="color:blue;">="ButtonConnect_Click"             </span><span style="color:red;">x</span><span style="color:blue;">:</span><span style="color:red;">Name</span><span style="color:blue;">="ButtonConnect" </span><span style="color:red;">Margin</span><span style="color:blue;">="10"&gt;&lt;/</span><span style="color:#a31515;">Button</span><span style="color:blue;">&gt;
    &lt;</span><span style="color:#a31515;">ListBox </span><span style="color:red;">Grid.Row</span><span style="color:blue;">="1"             </span><span style="color:red;">ScrollViewer.VerticalScrollBarVisibility</span><span style="color:blue;">="Visible"              </span><span style="color:red;">x</span><span style="color:blue;">:</span><span style="color:red;">Name</span><span style="color:blue;">="ListBox1"&gt;&lt;/</span><span style="color:#a31515;">ListBox</span><span style="color:blue;">&gt;
&lt;/</span><span style="color:#a31515;">Grid</span><span style="color:blue;">&gt;</span></pre>
<p><a href="http://11011.net/software/vspaste"></a><a href="http://11011.net/software/vspaste"></a></p>
<p><img style="display:inline;border-width:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image43.png?w=514&#038;h=386" border="0" alt="image" width="514" height="386" /></p>
<p>Here is all the code in MainPage.Xaml.cs.  Take a look at it here then we’ll discuss it:</p>
<pre class="code"><span style="color:blue;">public partial class </span><span style="color:#2b91af;">MainPage </span>: <span style="color:#2b91af;">UserControl
</span>{
    <span style="color:#2b91af;">DuplexServiceClient </span>receiver;
    <span style="color:#2b91af;">ObservableCollection</span>&lt;<span style="color:blue;">string</span>&gt; liveDataMessages =                                 <span style="color:blue;">new </span><span style="color:#2b91af;">ObservableCollection</span>&lt;<span style="color:blue;">string</span>&gt;();
    <span style="color:#2b91af;">CustomBinding </span>binding = <span style="color:blue;">new </span><span style="color:#2b91af;">CustomBinding</span>(
                                <span style="color:blue;">new </span><span style="color:#2b91af;">PollingDuplexBindingElement</span>(),
                                <span style="color:blue;">new </span><span style="color:#2b91af;">BinaryMessageEncodingBindingElement</span>(),
                                <span style="color:blue;">new </span><span style="color:#2b91af;">HttpTransportBindingElement</span>()
                                );

    <span style="color:blue;">public </span>MainPage()
    {
        InitializeComponent();

        ListBox1.ItemsSource = liveDataMessages;

        <span style="color:green;">//make sure the endpoint address is correct
        </span>receiver = <span style="color:blue;">new </span><span style="color:#2b91af;">DuplexServiceClient</span>(binding,                  <span style="color:blue;">new </span><span style="color:#2b91af;">EndpointAddress</span>(<span style="color:#a31515;">"http://localhost:6719/LiveDataService.svc"</span>));
        receiver.SendToClientReceived += (sender, e) =&gt;
            {
                <span style="color:blue;">if </span>(e.msg <span style="color:blue;">is </span><span style="color:#2b91af;">LiveDataMessage</span>)
                {
                    <span style="color:#2b91af;">LiveDataMessage </span>msg = (<span style="color:#2b91af;">LiveDataMessage</span>)e.msg;
                    liveDataMessages.Add(<span style="color:blue;">string</span>.Format(<span style="color:#a31515;">"{0}.                      Value = {1}"</span>, msg.Description, msg.Value));
                }
            };
    }

    <span style="color:blue;">bool </span>connected = <span style="color:blue;">false</span>;
    <span style="color:blue;">private void </span>ButtonConnect_Click(<span style="color:blue;">object </span>sender, <span style="color:#2b91af;">RoutedEventArgs </span>e)
    {
        <span style="color:blue;">if </span>(connected)
        {
            Disconnect();
        }
        <span style="color:blue;">else
        </span>{
            Connect();
        }
    }

    <span style="color:blue;">private void </span>Connect()
    {
        ButtonConnect.Content = <span style="color:#a31515;">"Connecting..."</span>;
        receiver.SendToServiceCompleted += (sender, e) =&gt;
        {
            ButtonConnect.Content = <span style="color:#a31515;">"Connected (click to disconnect)"</span>;
            connected = <span style="color:blue;">true</span>;
        };
        receiver.SendToServiceAsync(<span style="color:blue;">new </span><span style="color:#2b91af;">ConnectMessage</span>());
    }

    <span style="color:blue;">private void </span>Disconnect()
    {
        ButtonConnect.Content = <span style="color:#a31515;">"Disconnecting..."</span>;
        receiver.SendToServiceCompleted += (sender, e) =&gt;
            {
                ButtonConnect.Content = <span style="color:#a31515;">"Disconnected (click to connect)"</span>;
                connected = <span style="color:blue;">false</span>;
            };
        receiver.SendToServiceAsync(<span style="color:blue;">new </span><span style="color:#2b91af;">DisconnectMessage</span>());
    }

}</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>At the top of this code, we declare 3 variables: the DuplexServiceClient,a  CustomBinding (which matched the binding of the service we created on the server) and an ObservableCollection to store the messages we get from the server.  We instantiate the DuplexServiceClient in the class constructor using the custom binding and and endpoint (make sure this is the correct address for your service) and wire up the SendToClientReceived event which is where we add the messages we get from the server to the observableCollection (which in turn shows them in the ListBox)</p>
<p>However we also need to provide a Connect method (which sends a ConnectMessage to the server) – this is to essentially to let the Duplex service on the server know we are here, and allow it to keep track us via a Session ID.  You can see this in DuplexService.cs file as shown below (line 133):</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image47.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image47_thumb.png?w=494&#038;h=147" border="0" alt="image" width="494" height="147" /></a></p>
<p>The disconnect method does the reverse by sending a DisconnectMessage to the server which reacts like this (removing the client from it’s tracked session id’s)</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image51.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image51_thumb.png?w=494&#038;h=53" border="0" alt="image" width="494" height="53" /></a></p>
<h2>Testing Your Application<a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image55.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="image" src="http://silverlightforbusiness.files.wordpress.com/2009/06/image55_thumb.png?w=491&#038;h=643" border="0" alt="image" width="491" height="643" /></a></h2>
<p>Press F5 to run the application, then click the Connect  button  &#8211; you will see messages sent to Silverlight from the Server every 5 seconds.  To make it more interesting, start a second browser instance and run the same application and connect that too.  You will see both clients being updated at the exactly the same time.</p>
<p><a href="http://silverlightforbusiness.files.wordpress.com/2009/06/image11.png"></a> </p>
<p>Hope this is of use.</p>
<p>You can download the source code from here: <a title="http://cid-fb8b852ef1ab0b35.skydrive.live.com/self.aspx/SampleCode/DuplexExample.zip" href="http://cid-fb8b852ef1ab0b35.skydrive.live.com/self.aspx/SampleCode/DuplexExample.zip">http://cid-fb8b852ef1ab0b35.skydrive.live.com/self.aspx/SampleCode/DuplexExample.zip</a></p>
<p>Cheers</p>
<p>Ian</p>
<div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ad1521d5-2591-4426-8259-26895c1d0b89" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;">Technorati Tags: <a rel="tag" href="http://technorati.com/tags/Silverlight">Silverlight</a>,<a rel="tag" href="http://technorati.com/tags/Duplex">Duplex</a>,<a rel="tag" href="http://technorati.com/tags/WCF">WCF</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silverlightforbusiness.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silverlightforbusiness.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silverlightforbusiness.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silverlightforbusiness.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silverlightforbusiness.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silverlightforbusiness.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silverlightforbusiness.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silverlightforbusiness.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silverlightforbusiness.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silverlightforbusiness.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silverlightforbusiness.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silverlightforbusiness.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silverlightforbusiness.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silverlightforbusiness.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=58&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silverlightforbusiness.net/2009/06/23/pushing-data-from-the-server-to-silverlight-3-using-a-duplex-wcf-service/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2b17c2fe571c44c0f3c00b3610b692f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ianblackburn</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image_thumb11.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image30_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image35_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image4_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image14_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image39_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image26_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image22_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image43.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image47_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image51_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://silverlightforbusiness.files.wordpress.com/2009/06/image55_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>You&#8217;ve arrived at the new location for the &#8220;Silverlight for Business&#8221; blog</title>
		<link>http://silverlightforbusiness.net/2009/05/16/youve-arrived-at-the-new-location-for-the-silverlight-for-business-blog/</link>
		<comments>http://silverlightforbusiness.net/2009/05/16/youve-arrived-at-the-new-location-for-the-silverlight-for-business-blog/#comments</comments>
		<pubDate>Sat, 16 May 2009 15:01:47 +0000</pubDate>
		<dc:creator>ianblackburn</dc:creator>
				<category><![CDATA[Post Summary]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Animations]]></category>
		<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Controls]]></category>
		<category><![CDATA[Drag and Drop]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Serialization]]></category>
		<category><![CDATA[Silverlight Pulse]]></category>
		<category><![CDATA[Spaces]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Validation]]></category>
		<category><![CDATA[Xaml]]></category>

		<guid isPermaLink="false">http://silverlightforbusiness.wordpress.com/?p=7</guid>
		<description><![CDATA[Silverlight for Business has been hosted over on Live Spaces for the last 6 months.  However there are quite a few issues with using that platform which don&#8217;t look like been fixed any time soon.  So for that reason I &#8230; <a href="http://silverlightforbusiness.net/2009/05/16/youve-arrived-at-the-new-location-for-the-silverlight-for-business-blog/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=7&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Silverlight for Business has been hosted over on Live Spaces for the last 6 months.  However there are quite a <a href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2076.entry" target="_blank">few issues with using that platform</a> which don&#8217;t look like been fixed any time soon.  So for that reason I am moving it here.</p>
<p>All the old posts are still available with the original links, and I have summarised them here:</p>
<ul>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2673.entry">Silverlight for Mobile – further thoughts</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2621.entry">Silverlight Pulse Grok Presentation</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2611.entry">Updated Silverlight Pulse now on http://silverlightpulse.net</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2607.entry">Silverlight Pulse – a twitter silverlight app</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2593.entry">Brad Adams talks about “Silverlight 3 for Great Business Apps”</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2566.entry">Silverlight M-V-VM Resources</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2076.entry">Windows Live Spaces: Top 5 Wish List</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!2073.entry">Silverlight Visualisation Example – how much energy is wasted in US households?</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1938.entry">Implementing Validation Logic in Silverlight 2</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1917.entry">Silverlight Accessibility and creating DDA Compliant applications in the UK</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1806.entry">Microsoft.com gets Silverlight on it’s home page</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1799.entry">Computer Weekly: Silverlight Skills are Hot!</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1796.entry">itv.com helps push Silverlight – but is the installation experience good enough and why aren’t more Microsoft sites using Silverlight?</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1779.entry">Third Party &amp; Free Silverlight Controls – Demo Pages</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1759.entry">Silverlight Drag and Drop and HitTest on any layout (not just Canvas)</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1198.entry">Creating Reusable Animations in Silverlight 2</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1174.entry">Working with Data in Silverlight 2 (Entity Framework, Ado.Net Data Services, and DataGrid)</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1107.entry">Serializing Objects to Isolated Storage in Silverlight 2</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1094.entry">Working with Xml Files in Silverlight and Isolated Storage</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1089.entry">Announcing: Silverlight &#8220;Power Seminar&#8221;</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1086.entry">Silverlight 2 vs. Asp.Net Ajax</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1082.entry">&#8220;Why Silverlight 2 Could Be Far More Important Than You Think&#8221;</a></li>
<li><a class="entryttl" href="http://blackburnian.spaces.live.com/blog/cns!FB8B852EF1AB0B35!1079.entry">Why Silverlight for Business?</a></li>
</ul>
<p>By the way, I have a stack of new posts on the way that I have been building up, so stay tuned.</p>
<p>Cheers</p>
<p>Ian</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/silverlightforbusiness.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/silverlightforbusiness.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/silverlightforbusiness.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/silverlightforbusiness.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/silverlightforbusiness.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/silverlightforbusiness.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/silverlightforbusiness.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/silverlightforbusiness.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/silverlightforbusiness.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/silverlightforbusiness.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/silverlightforbusiness.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/silverlightforbusiness.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/silverlightforbusiness.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/silverlightforbusiness.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=silverlightforbusiness.net&amp;blog=7274361&amp;post=7&amp;subd=silverlightforbusiness&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://silverlightforbusiness.net/2009/05/16/youve-arrived-at-the-new-location-for-the-silverlight-for-business-blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e2b17c2fe571c44c0f3c00b3610b692f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ianblackburn</media:title>
		</media:content>
	</item>
	</channel>
</rss>
