<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><title>Laurent Duveau</title><link>http://weblogs.asp.net/lduveau/default.aspx</link><description>I&amp;#39;m NOT a poor lonesome&lt;br /&gt;
Silverlight Developer...</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/LaurentDuveau" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Silverlight 4 Clipboard access</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/21/silverlight-4-clipboard-access.aspx</link><pubDate>Sat, 21 Nov 2009 20:20:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262727</guid><dc:creator>pluginbaby</dc:creator><slash:comments>0</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/21/silverlight-4-clipboard-access.aspx#comments</comments><description>&lt;P&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title="Silverlight 4" border=0 alt="Silverlight 4" align=right src="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_75AAE7AF.png" width=200 height=197 mce_src="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_75AAE7AF.png"&gt; Silverlight 4 (currently in beta) adds support for &lt;STRONG&gt;Clipboard&lt;/STRONG&gt;!&lt;/P&gt;
&lt;P&gt;In Silverlight 3 we had copy/paste available in the Textbox, programmatic access could be done, some IE only&amp;nbsp;solution exists&amp;nbsp;via HTML DOM bridge (so not OOB)&amp;nbsp;or cross-browser (involving Flash!). But now the game has changed as we now have an API for multi-platform Clipboard access.&lt;/P&gt;
&lt;P&gt;In this beta, the support is for &lt;STRONG&gt;(Unicode) text-only&lt;/STRONG&gt;, and the &lt;STRONG&gt;Clipboard&lt;/STRONG&gt; class has 3 static methods:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;GetText()&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;SetText()&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;ContainsText()&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Clipboard access can only be done from a user &lt;STRONG&gt;initiated action&lt;/STRONG&gt; (mouse, keyboard), and user is &lt;STRONG&gt;prompted to acknowledge&lt;/STRONG&gt; the first time Clipboard is set or read (once per session).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="" border=0 alt="" src="http://weblogs.asp.net/blogs/lduveau/image_313AD0A3.png" width=398 height=184 mce_src="http://weblogs.asp.net/blogs/lduveau/image_313AD0A3.png"&gt; &lt;/P&gt;
&lt;P&gt;If the application is running &lt;STRONG&gt;Out Of Browser&lt;/STRONG&gt; and under the new &lt;STRONG&gt;elevated permission mode&lt;/STRONG&gt;, user gets no prompt and Clipboard methods can be used anytime (not only during user initiated actions).&lt;/P&gt;
&lt;P&gt;I built a small sample to try this:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="Silverlight clipboard sample" border=0 alt="Silverlight clipboard sample" src="http://weblogs.asp.net/blogs/lduveau/image_01500915.png" width=476 height=318 mce_src="http://weblogs.asp.net/blogs/lduveau/image_01500915.png"&gt; &lt;/P&gt;
&lt;P&gt;The code is pretty simple:&lt;/P&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; btnCopy_Click(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, RoutedEventArgs e)
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (txtCopy.SelectedText.Length &amp;gt; 0)
        Clipboard.SetText(txtCopy.SelectedText);
    &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
        MessageBox.Show(&lt;SPAN class=str&gt;"Nothing to copy!"&lt;/SPAN&gt;);
}

&lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; btnPaste_Click(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, RoutedEventArgs e)
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (Clipboard.ContainsText())
        txtPaste.Text = Clipboard.GetText();
}&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;Note you can also use system clipboard (so text from outside Silverlight works as well), and you can use ctrl+c / ctrl+v instead of the buttons.&lt;/P&gt;
&lt;H2&gt;Download source code&lt;/H2&gt;
&lt;P&gt;(requires Silverlight 4 beta)&lt;/P&gt;
&lt;P&gt;&lt;IFRAME style="BORDER-BOTTOM: #dde5e9 1px solid; BORDER-LEFT: #dde5e9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 3px; PADDING-LEFT: 0px; WIDTH: 240px; PADDING-RIGHT: 0px; HEIGHT: 66px; BORDER-TOP: #dde5e9 1px solid; BORDER-RIGHT: #dde5e9 1px solid; PADDING-TOP: 0px" title=Preview marginHeight=0 src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedrowdetail.aspx/Public/Code/Silverlight/Silverlight%204%20beta/FunWithClipboard.zip" frameBorder=0 marginWidth=0 scrolling=no mce_src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedrowdetail.aspx/Public/Code/Silverlight/Silverlight%204%20beta/FunWithClipboard.zip"&gt;&lt;/IFRAME&gt;&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a895a6dc-a7f4-4a9c-8ef4-79210fc33aba class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/Silverlight" rel=tag mce_href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262727" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_pMrS3P25R0UZTc7ZhuAa6T-WFY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_pMrS3P25R0UZTc7ZhuAa6T-WFY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_pMrS3P25R0UZTc7ZhuAa6T-WFY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_pMrS3P25R0UZTc7ZhuAa6T-WFY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/gNgYMtJBemI" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight 4 Mouse Wheel support</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/20/silverlight-4-mouse-wheel-support.aspx</link><pubDate>Sat, 21 Nov 2009 03:00:19 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7262204</guid><dc:creator>pluginbaby</dc:creator><slash:comments>4</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/20/silverlight-4-mouse-wheel-support.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Silverlight 4" border="0" alt="Silverlight 4" align="right" src="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_0DE0BF1F.png" width="200" height="197" /&gt; MouseWheel&lt;/strong&gt; event was available in Silverlight 3 but you had to manage it yourself.&lt;/p&gt;  &lt;p&gt;Silverlight 4 has built-in Mouse Wheel support for TextBox, ComboBox, Calendar, DatePicker and ScrollViewer (so DataGrid and ListBox as well).&lt;/p&gt;  &lt;p&gt;Now you can navigate months/years in a Calendar with your mouse wheel!&lt;/p&gt;  &lt;p&gt;I created a sample to try mouse wheel on some common controls (DataGrid, ListBox, Calendar and ScrollViewer) as well as using the API (which you could do in Silverlight 3). I take advantage of the MouseWheel event to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Move a Slider &lt;/li&gt;    &lt;li&gt;Rotate a Rectangle &lt;/li&gt;    &lt;li&gt;Zoom an Image &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Silverlight 4 MouseWheel sample" border="0" alt="Silverlight 4 MouseWheel sample" src="http://weblogs.asp.net/blogs/lduveau/image_086228AE.png" width="500" height="343" /&gt; &lt;/p&gt;  &lt;p&gt;The MouseWheel eventArgs has a &lt;strong&gt;Delta&lt;/strong&gt; property (Double) that represents the “amount” of scroll.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// MouseWheel on the Slider&lt;/span&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; slider1_MouseWheel(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, MouseWheelEventArgs e)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (e.Delta &amp;gt; 0)
        slider1.Value += 1;
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
        slider1.Value -= 1;

    &lt;span class="rem"&gt;// Handle the event so that it doesn't get to the ScrollViewer&lt;/span&gt;
    e.Handled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Notice the e.Handled property set to true: as you may know in Silverlight events bubble in the controls hierarchy, so if we don’t handle it, using the mouse wheel over the Slider would also scroll the ScrollViewer.&lt;/p&gt;

&lt;p&gt;I do pretty much the same for the Rectangle and the Image.&lt;/p&gt;

&lt;p&gt;Here is the code to Zoom the Image (Scale transformation):&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; image1_MouseWheel(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, MouseWheelEventArgs e)
{
    imageScale.ScaleX = e.Delta &amp;gt; 0 ? imageScale.ScaleX * 1.1 : imageScale.ScaleX * 0.9;
    imageScale.ScaleY = e.Delta &amp;gt; 0 ? imageScale.ScaleY * 1.1 : imageScale.ScaleY * 0.9;

    e.Handled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;And the XAML markup: 

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt; &lt;span class="attr"&gt;Stretch&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Uniform&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;/sl4bloglogo.png&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;MouseWheel&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;image1_MouseWheel&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ScaleTransform&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;imageScale&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ScaleTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Image.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Download the source code&lt;/h2&gt;
(requires Silverlight 4 beta) 

&lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedrowdetail.aspx/Public/Code/Silverlight/Silverlight%204%20beta/FunWithMouseWheel.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:464a1e10-2410-4cae-9a05-317de8e96878" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7262204" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LFcGFj6OwT_YMym0rSqvCNVltF4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LFcGFj6OwT_YMym0rSqvCNVltF4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LFcGFj6OwT_YMym0rSqvCNVltF4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LFcGFj6OwT_YMym0rSqvCNVltF4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/fj0bd0Vymo4" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight 4 Implicit Styling</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/18/silverlight-4-implicit-styling.aspx</link><pubDate>Thu, 19 Nov 2009 02:50:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7259863</guid><dc:creator>pluginbaby</dc:creator><slash:comments>3</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/18/silverlight-4-implicit-styling.aspx#comments</comments><description>&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; BORDER-TOP: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT: 0px" title="Silverlight 4" border=0 alt="Silverlight 4" align=right src="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_0EF70D6B.png" width=200 height=197 mce_src="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_0EF70D6B.png"&gt;One of the cool new features of Silverlight 4 is &lt;STRONG&gt;Implicit Styling:&lt;/STRONG&gt; you can now theme your application without resorting to the ImplicitStyleManager from the toolkit.&lt;/P&gt;
&lt;P&gt;For that you just create &lt;STRONG&gt;Styles&lt;/STRONG&gt; in resource and do not specify x:keys (just the &lt;STRONG&gt;TargetType&lt;/STRONG&gt;).&lt;/P&gt;
&lt;P&gt;Code Sample for a Button:&lt;/P&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Grid.Resources&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Style&lt;/SPAN&gt; &lt;SPAN class=attr&gt;TargetType&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Button"&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Setter&lt;/SPAN&gt; &lt;SPAN class=attr&gt;Property&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="FontSize"&lt;/SPAN&gt; &lt;SPAN class=attr&gt;Value&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="24"&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Setter&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Setter&lt;/SPAN&gt; &lt;SPAN class=attr&gt;Property&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Background"&lt;/SPAN&gt; &lt;SPAN class=attr&gt;Value&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Red"&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Setter&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Setter&lt;/SPAN&gt; &lt;SPAN class=attr&gt;Property&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Foreground"&lt;/SPAN&gt; &lt;SPAN class=attr&gt;Value&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="#FFAA3434"&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Setter&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Style&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Grid.Resources&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;Now every Button in your app get styled, no need to specify a style key from resource:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/lduveau/image_61ED0A8E.png" width=172 height=98 mce_src="http://weblogs.asp.net/blogs/lduveau/image_61ED0A8E.png"&gt; &lt;/P&gt;
&lt;P&gt;Speaking about resource, did you see that VS2010 has an “Extract Value to Resource…” feature on the properties window ?&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="" border=0 alt="" src="http://weblogs.asp.net/blogs/lduveau/image_12A0123A.png" width=287 height=259 mce_src="http://weblogs.asp.net/blogs/lduveau/image_12A0123A.png"&gt; &lt;/P&gt;
&lt;P&gt;Then it asks you where you want to store that resource (current page, app.xaml, …). Unfortunately you can’t extract multiple properties at the same time to create a new Style… but this is still beta, right?&lt;/P&gt;
&lt;P&gt;Remember Silverlight 4 beta is a &lt;STRONG&gt;developer release only&lt;/STRONG&gt; (the public runtime is not available for this release) so my &lt;A href="http://weblogs.asp.net/lduveau/archive/2009/11/17/skin-your-silverlight-3-app-with-implicit-style-manager.aspx" target=_blank mce_href="http://weblogs.asp.net/lduveau/archive/2009/11/17/skin-your-silverlight-3-app-with-implicit-style-manager.aspx"&gt;previous post on ImplicitStyleManager&lt;/A&gt; is still valid for your current Silverlight 3 apps, waiting for Silverlight 4 to ship!&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e4b99a04-4db8-4339-897e-8fb0a53a4eef class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/Silverlight" rel=tag mce_href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7259863" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z8B17Ln3Vy2wNvZTKSV3ogkJUQQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z8B17Ln3Vy2wNvZTKSV3ogkJUQQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z8B17Ln3Vy2wNvZTKSV3ogkJUQQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z8B17Ln3Vy2wNvZTKSV3ogkJUQQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/sStO8X0tlQA" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight 4 beta released!</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/18/silverlight-4-beta-released.aspx</link><pubDate>Wed, 18 Nov 2009 19:22:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7259489</guid><dc:creator>pluginbaby</dc:creator><slash:comments>8</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/18/silverlight-4-beta-released.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; BORDER-TOP: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT: 0px" title="Silverlight 4" border=0 alt="Silverlight 4" align=right src="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_0EF70D6B.png" width=200 height=197 mce_src="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_0EF70D6B.png"&gt; Silverlight 4 beta&lt;/STRONG&gt; was announced by &lt;A href="http://weblogs.asp.net/scottgu/" rel=nofollow target=_blank mce_href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/A&gt; a few minutes ago during his keynote at &lt;A href="http://microsoftpdc.com/" rel=nofollow target=_blank mce_href="http://microsoftpdc.com/"&gt;PDC 2009&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;So only 4 months after Silverlight 3 released, we have a new version to play with!! &lt;/P&gt;
&lt;P&gt;Silverlight 4 brings several interesting features:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Webcam/mic support &lt;/LI&gt;
&lt;LI&gt;Printing API &lt;/LI&gt;
&lt;LI&gt;MouseWheel on common controls &lt;/LI&gt;
&lt;LI&gt;Implicit Styles &lt;/LI&gt;
&lt;LI&gt;Controls: RichTextBox, ViewBox and WebBrowser &lt;/LI&gt;
&lt;LI&gt;DataBinding improved &lt;/LI&gt;
&lt;LI&gt;CLR 4.0 (compatibility with dll from the Full .NET 4.0) &lt;/LI&gt;
&lt;LI&gt;and much much more!!!… see full list below &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Notice that from the top 10 &lt;A href="http://silverlight.uservoice.com/" target=_blank mce_href="http://silverlight.uservoice.com"&gt;features request list&lt;/A&gt;, 8 out of 10 were addressed, that’s awesome!!!&lt;/P&gt;
&lt;P&gt;Silverlight gain maturity for business applications with additions like Printing, MouseWheel, Clipboard, Right click and File Drop.&lt;/P&gt;
&lt;P&gt;Several tools have been updated to support Silverlight 4 beta development:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkID=177508" rel=nofollow target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkID=177508"&gt;Silverlight Tools for Visual Studio 2010&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkId=169446" rel=nofollow target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkId=169446"&gt;Expression Blend for .NET 4 Preview&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://silverlight.codeplex.com/" rel=nofollow target=_blank mce_href="http://silverlight.codeplex.com/"&gt;Silverlight Toolkit&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkId=169231" rel=nofollow target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkId=169231"&gt;WCF RIA Services&lt;/A&gt; (new name for .NET RIA Services) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Detailed list of Silverlight 4 new features:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;WebCam/Microphone &lt;/LI&gt;
&lt;LI&gt;Printing Support &lt;/LI&gt;
&lt;LI&gt;Media 
&lt;UL&gt;
&lt;LI&gt;WMS Multicast Support &lt;/LI&gt;
&lt;LI&gt;H.264 Mp4 Playback Protected by PlayReady DRM &lt;/LI&gt;
&lt;LI&gt;Offline DRM &lt;/LI&gt;
&lt;LI&gt;Output Protection &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Text 
&lt;UL&gt;
&lt;LI&gt;RichTextBox control &lt;/LI&gt;
&lt;LI&gt;Bidi Support (including Arabic and Hebrew Text) &lt;/LI&gt;
&lt;LI&gt;UIElement.TextInput event &lt;/LI&gt;
&lt;LI&gt;IME Improvements for TextBox &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Controls 
&lt;UL&gt;
&lt;LI&gt;Implicit Styles (type based style theming – no longer a need to explicitly set styles on controls) &lt;/LI&gt;
&lt;LI&gt;Built-in MouseWheel Support on ScrollViewer, TextBox, ComboBox, Calendar, DatePicker &lt;/LI&gt;
&lt;LI&gt;ViewBox &lt;/LI&gt;
&lt;LI&gt;ICommanding Support with ButtonBase &amp;amp; Hyperlink &lt;/LI&gt;
&lt;LI&gt;SelectedValue and SelectedValuePath Properties on DropDownLists &lt;/LI&gt;
&lt;LI&gt;RTL Layout via UIElement.FlowDirection property &lt;/LI&gt;
&lt;LI&gt;VisualStateGroup.CurrentStateGroup property &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;DataBinding 
&lt;UL&gt;
&lt;LI&gt;DataBinding Support for DependencyObjects &lt;/LI&gt;
&lt;LI&gt;IDataErrorInfo Support &lt;/LI&gt;
&lt;LI&gt;StringFormat, TargetNullValue &amp;amp; FallBackValue Properties on Binding &lt;/LI&gt;
&lt;LI&gt;ObservableCollection&amp;lt;T&amp;gt; ctor that takes INumerable or Ilist &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Networking &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;UDPListener and Multi-cast support &lt;/LI&gt;
&lt;LI&gt;Memory Usage Fix During Progressive Downloads &lt;/LI&gt;
&lt;LI&gt;Automatically Adding Referer Header &lt;/LI&gt;
&lt;LI&gt;Astoria 2.0 Support &lt;/LI&gt;
&lt;LI&gt;WCF RIA Services &lt;/LI&gt;
&lt;LI&gt;WCF Improvements &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Out of Browser Applications 
&lt;UL&gt;
&lt;LI&gt;HTML Hosting Support &lt;/LI&gt;
&lt;LI&gt;Windowing APIs (resize window, etc) &lt;/LI&gt;
&lt;LI&gt;Notifications (Outlook-like popup windows that can display even when OOB app is minimized) &lt;/LI&gt;
&lt;LI&gt;Elevated Privileges Support 
&lt;UL&gt;
&lt;LI&gt;Cross Domain Networking Access &lt;/LI&gt;
&lt;LI&gt;Full file path from Open/SaveFileDialog and File Manipulation APIs &lt;/LI&gt;
&lt;LI&gt;No User-Initiation Requirement for Full Screen, Open/SaveFileDialogs &lt;/LI&gt;
&lt;LI&gt;COM interop (allowing you to create and use any COM object on Windows) &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;CLR 4.0&amp;nbsp; Engine 
&lt;UL&gt;
&lt;LI&gt;NGEN Support for Core Runtime Binaries (faster startup and execution of apps) &lt;/LI&gt;
&lt;LI&gt;Dynamic keyword support in C# 4.0 and COM interop when running elevated out of browser applications &lt;/LI&gt;
&lt;LI&gt;MEF – Managed Extensibility Framework &lt;/LI&gt;
&lt;LI&gt;Binary assembly compat between assemblies that run on SL and on full .NET 4.0 CLR (no recompile needed now starting with .NET 4 Beta2) &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:064a56aa-fb39-4384-9346-0d0e2d1a0f35 class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/Silverlight" rel=tag mce_href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7259489" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PsdM54dgDWozv-H3SryHPZgZREY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PsdM54dgDWozv-H3SryHPZgZREY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PsdM54dgDWozv-H3SryHPZgZREY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PsdM54dgDWozv-H3SryHPZgZREY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/2heqzFl0mbE" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Skin your Silverlight 3 app with Implicit Style Manager</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/17/skin-your-silverlight-3-app-with-implicit-style-manager.aspx</link><pubDate>Wed, 18 Nov 2009 01:41:21 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7258524</guid><dc:creator>pluginbaby</dc:creator><slash:comments>8</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/17/skin-your-silverlight-3-app-with-implicit-style-manager.aspx#comments</comments><description>&lt;p&gt;Silverlight 3 do not have implicit style like WPF or a Theming feature like ASP.NET which means you can’t [automatically] apply a Style to every Button of the app like in ASP.NET for example.&lt;/p&gt;  &lt;p&gt;In Silverlight 3 you need to explicitly set styles on every controls.&lt;/p&gt;  &lt;p&gt;Good news is you can find in the free &lt;a href="http://silverlight.codeplex.com/" rel="nofollow" target="_blank"&gt;Silverlight Toolkit&lt;/a&gt; the &lt;strong&gt;ImplicitStyleManager&lt;/strong&gt; control that allows implicit styling to be applied to any control in a container by defining 2 attached properties.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Applying Theme in Silverlight 3 (auto Style)&lt;/h2&gt;  &lt;p&gt;Define your styles in a XAML resource dictionary file (like you already do) and set its build action to &lt;strong&gt;Content&lt;/strong&gt;. Then reference it via the &lt;strong&gt;ResourceDictionaryUri&lt;/strong&gt; attached property on a container of your page:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Canvas&lt;/span&gt; &lt;span class="attr"&gt;themingToolkit:ImplicitStyleManager&lt;/span&gt;.&lt;span class="attr"&gt;ApplyMode&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;OneTime&amp;quot;&lt;/span&gt;
        &lt;span class="attr"&gt;themingToolkit:ImplicitStyleManager&lt;/span&gt;.&lt;span class="attr"&gt;ResourceDictionaryUri&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Assets/ShinyBlue.xaml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;strong&gt;ApplyMode&lt;/strong&gt; has 3 values: None, OneTime and Auto.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;None: Theme not applied &lt;/li&gt;

  &lt;li&gt;OneTime: Theme applied once after page load &lt;/li&gt;

  &lt;li&gt;Auto: Dynamic controls added at runtime will also be styled. 
    &lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside the container (Canvas in my sample), controls are defined normally (I removed the Canvas.* for brevity):&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TextBox&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;125&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PasswordBox&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;125&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ProgressBar&lt;/span&gt; &lt;span class="attr"&gt;IsIndeterminate&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;False&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Maximum&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;0.5&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RadioButton&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;RadioButton 1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;IsChecked&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RadioButton&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;RadioButton 2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CheckBox&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CheckBox 1&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CheckBox&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;CheckBox 2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;IsChecked&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;br /&gt;[…]&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;And at runtime they automatically have styles applied to them!&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ImplicitStyleManager sample" border="0" alt="ImplicitStyleManager sample" src="http://weblogs.asp.net/blogs/lduveau/image_7B3D64F2.png" width="500" height="446" /&gt; &lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

&lt;p&gt;If you don’t want to build your Theme from scratch you’ll find some samples in the toolkit as well.&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Silverlight Toolkit Themes" border="0" alt="Silverlight Toolkit Themes" src="http://weblogs.asp.net/blogs/lduveau/image_18DB51C0.png" width="405" height="396" /&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.codeplex.com/wikipage?ProjectName=Silverlight&amp;amp;title=Silverlight%20Toolkit%20Overview%20Part%203&amp;amp;referringTitle=Home" rel="nofollow" target="_blank"&gt;http://www.codeplex.com/wikipage?ProjectName=Silverlight&amp;amp;title=Silverlight%20Toolkit%20Overview%20Part%203&amp;amp;referringTitle=Home&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The XAML files used by those themes can be found on your local folder after installing the toolkit, for the October 2009 toolkit it is located there:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Toolkit\Oct09\Themes\Xaml&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/image_57D8E429.png" width="350" height="236" /&gt;&amp;#160; &lt;/p&gt;

&lt;p&gt;In my sample I use the ShinyBlue.xaml Theme and apply it via ImplicitStyleManager.&lt;/p&gt;
You can find more style in the &lt;strong&gt;Expression Community Gallery&lt;/strong&gt;: 

&lt;br /&gt;&lt;a href="http://gallery.expression.microsoft.com" rel="nofollow" target="_blank"&gt;http://gallery.expression.microsoft.com&lt;/a&gt; 

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Specific Theme controls&lt;/h2&gt;

&lt;p&gt;You can also use the &lt;strong&gt;Theme Containers&lt;/strong&gt; controls to apply Themes from the Silverlight Toolkit. These controls use ImplicitStyleManager and one of the external xaml resource dictionary file under the hood. &lt;/p&gt;

&lt;p&gt;So applying ShinyBlue Theme is simply done via:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;shinyBlue:ShinyBlueTheme&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        ...
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;shinyBlue:ShinyBlueTheme&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The shinyBlue prefix refers to the assembly containing the ShinyBlueTheme control (from the toolkit):&lt;/p&gt;

&lt;pre class="csharpcode"&gt;xmlns:shinyBlue=&amp;quot;clr-namespace:System.Windows.Controls.Theming;&lt;br /&gt;            assembly=System.Windows.Controls.Theming.ShinyBlue&amp;quot;&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Changing Theme at runtime&lt;/h2&gt;

&lt;p&gt;Suppose you have several themes and would like your users to be able to switch theme at runtime. 
  &lt;br /&gt;In my sample I add another theme (ShinyRed) from the toolkit and move both files to Assets/Themes folder:&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/image_7E3AC774.png" width="188" height="74" /&gt; 

  &lt;br /&gt;&lt;em&gt;Don’t forget to mark your xaml files as “Content” (build action).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s add a “Theme selector” with a ComboBox + Button:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ComboBox&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;cbThemes&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ComboBoxItem&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ShinyBlue&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Tag&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ShinyBlue.xaml&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ComboBoxItem&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ShinyRed&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Tag&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ShinyRed.xaml&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ComboBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Apply&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Click&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button_Click&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;On the Button_Click eventHandler get the selected Theme and apply it with some static methods of the ImplicitStyleManager class:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Button_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (cbThemes.SelectedItem != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
    {
        Uri uri = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(String.Format(&lt;span class="str"&gt;&amp;quot;Assets/Themes/{0}&amp;quot;&lt;/span&gt;, &lt;br /&gt;          ((ComboBoxItem)cbThemes.SelectedItem).Tag.ToString()), UriKind.Relative);
        ApplyTheme(uri);
    }
}

&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ApplyTheme(Uri uri)
{
    ImplicitStyleManager.SetResourceDictionaryUri(LayoutRoot, uri);
    ImplicitStyleManager.SetApplyMode(container, ImplicitStylesApplyMode.Auto);
    ImplicitStyleManager.Apply(container);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Now we are able to switch the current Theme live:&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/image_4FE141C7.png" width="500" height="457" /&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h2&gt;Dynamic list of available Themes&lt;/h2&gt;

&lt;p&gt;Let’s go further and list available themes at runtime.&lt;/p&gt;

&lt;p&gt;With the help of this &lt;strong&gt;small unzip utility for Silverlight&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.sharpgis.net/post/2009/04/21/REALLY-small-unzip-utility-for-Silverlight.aspx" rel="nofollow" target="_blank"&gt;http://www.sharpgis.net/post/2009/04/21/REALLY-small-unzip-utility-for-Silverlight.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;we are able to automatically populate the ComboBox with Themes from the xap (the code below assume that your xaml themes files are located in a Assets/Themes folder - which contains only those files):&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; DynamicStyle()
{
    InitializeComponent();

    &lt;span class="kwrd"&gt;this&lt;/span&gt;.Loaded += &lt;span class="kwrd"&gt;new&lt;/span&gt; RoutedEventHandler(DynamicStyle_Loaded);
}

&lt;span class="kwrd"&gt;void&lt;/span&gt; DynamicStyle_Loaded(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    WebClient wc = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebClient();
    wc.OpenReadCompleted += (s, args) =&amp;gt;
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (args.Error == &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        {
            UnZipper unzip = &lt;span class="kwrd"&gt;new&lt;/span&gt; UnZipper(args.Result);

            List&amp;lt;ComboBoxItem&amp;gt; lstComboBoxItem = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;ComboBoxItem&amp;gt;();

            ComboBoxItem item;
            &lt;span class="kwrd"&gt;string&lt;/span&gt; fileName;

            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt; filePath &lt;span class="kwrd"&gt;in&lt;/span&gt; unzip.GetFileNamesInZip())
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (filePath.StartsWith(&lt;span class="str"&gt;&amp;quot;Assets/Themes&amp;quot;&lt;/span&gt;))
                {
                    fileName=filePath.Replace(&lt;span class="str"&gt;&amp;quot;Assets/Themes/&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty)&lt;br /&gt;                                     .Replace(&lt;span class="str"&gt;&amp;quot;.xaml&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty);

                    item = &lt;span class="kwrd"&gt;new&lt;/span&gt; ComboBoxItem();
                    item.Content = fileName;
                    item.Tag = filePath;
                    lstComboBoxItem.Add(item);
                }
            }
            cbThemes.ItemsSource = lstComboBoxItem;
        }
    };
    wc.OpenReadAsync(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;&amp;quot;FunWithImplicitStyleManager.xap&amp;quot;&lt;/span&gt;,&lt;br /&gt;                                   UriKind.RelativeOrAbsolute));
}&lt;/pre&gt;

&lt;p&gt;&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;UnZipper is a utility class from the link above, and you’ll find it in my sample code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note you could also add code to persist the chosen theme during user session (or even between sessions with IsolatedStorage).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h2&gt;Download the source code&lt;/h2&gt;

&lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedrowdetail.aspx/Public/Code/Silverlight/Silverlight%203/FunWithImplicitStyleManager.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2bf4d140-34e5-4c71-ba4c-e92f1f64ab9c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7258524" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h3tkmo0KfTjHr7wO28oXMb3KVTw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h3tkmo0KfTjHr7wO28oXMb3KVTw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h3tkmo0KfTjHr7wO28oXMb3KVTw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h3tkmo0KfTjHr7wO28oXMb3KVTw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/zUlWo04-y84" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight Tour Halifax</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/15/silverlight-tour-halifax.aspx</link><pubDate>Mon, 16 Nov 2009 00:08:53 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7255986</guid><dc:creator>pluginbaby</dc:creator><slash:comments>3</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/15/silverlight-tour-halifax.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Silverlight Tour Halifax" border="0" alt="Silverlight Tour Halifax" src="http://weblogs.asp.net/blogs/lduveau/silverlight_halifax_091336DC.jpg" width="520" height="345" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="silverlight training halifax" border="0" alt="silverlight training halifax" align="right" src="http://weblogs.asp.net/blogs/lduveau/SilverlightTourLogo_5426319E.png" width="223" height="248" /&gt;The &lt;a href="http://www.silverlight-tour.com/" rel="nofollow" target="_blank"&gt;Silverlight Tour&lt;/a&gt; is visiting &lt;strong&gt;Halifax (NS)&lt;/strong&gt;, so get ready to enlighten your RIA app with this top &lt;strong&gt;Silverlight 3 training!!&lt;/strong&gt;&lt;/p&gt;  &lt;li&gt;When: &lt;strong&gt;November 23-25&lt;/strong&gt;&lt;/li&gt;  &lt;li&gt;Where: &lt;strong&gt;Halifax, NS, Canada&lt;/strong&gt;&lt;/li&gt;  &lt;li&gt;Registration: &lt;a href="http://www.runatserver.com/SilverlightTraining.aspx" target="_blank"&gt;http://www.runatserver.com/SilverlightTraining.aspx&lt;/a&gt;    &lt;p&gt;If you are looking for 3 days of intensive Silverlight training this is your chance to learn it from soup to nuts!&lt;/p&gt;    &lt;p&gt;For other cities and dates please visit:      &lt;br /&gt;&lt;a href="http://www.runatserver.com/SilverlightTraining.aspx" target="_blank"&gt;http://www.runatserver.com/SilverlightTraining.aspx&lt;/a&gt;&lt;/p&gt; &lt;/li&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3af4794d-fe6e-4969-b1f9-178ee4069650" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7255986" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fQvEpi02irzFGUiIjVDXS6LPsMI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fQvEpi02irzFGUiIjVDXS6LPsMI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fQvEpi02irzFGUiIjVDXS6LPsMI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fQvEpi02irzFGUiIjVDXS6LPsMI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/hTgrYzqZ8vc" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Speaking/default.aspx">Speaking</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Canada/default.aspx">Canada</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/RunAtServer/default.aspx">RunAtServer</category></item><item><title>Bing Maps with Silverlight</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/13/bing-maps-with-silverlight.aspx</link><pubDate>Sat, 14 Nov 2009 02:51:39 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7253963</guid><dc:creator>pluginbaby</dc:creator><slash:comments>9</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/13/bing-maps-with-silverlight.aspx#comments</comments><description>&lt;p&gt;Microsoft has released a free &lt;strong&gt;Bing Maps Silverlight control&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;I gave it a try and I must say I'm really impressed by the quality and level of features of this control. The UX is very nice, it uses DeepZoom, animation and is highly customizable!!&lt;/p&gt;  &lt;p&gt;To try it follow these steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=beb29d27-6f0c-494f-b028-1e0e3187e830" rel="nofollow" target="_blank"&gt;Download and install the control&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Create an account at &lt;a href="https://www.bingmapsportal.com" rel="nofollow" target="_blank"&gt;https://www.bingmapsportal.com&lt;/a&gt; to get a &lt;strong&gt;Bing Maps Key&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Create a Silverlight project in VS and reference both dll from the local folder:      &lt;ul&gt;       &lt;li&gt;Microsoft.Maps.MapControl.dll &lt;/li&gt;        &lt;li&gt;Microsoft.Maps.MapControl.Common.dll &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Optionally you can add the control in Visual Studio toolbox. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Then just add the proper namespace declaration:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;xmlns:bing=&amp;quot;clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl&amp;quot;&lt;/pre&gt;

&lt;p&gt;And set this xaml markup:&lt;style type="text/css"&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;bing:Map&lt;/span&gt; &lt;span class="attr"&gt;CredentialsProvider&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&lt;em&gt;yourBingMapsKey&lt;/em&gt;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;








.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Hit F5 and you get a fully functional map in your browser!&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bing Maps Silverlight control" border="0" alt="Bing Maps Silverlight control" src="http://weblogs.asp.net/blogs/lduveau/image_346AF28B.png" width="500" height="465" /&gt; &lt;/p&gt;

&lt;p&gt;I built a sample to experiment some of the features:&lt;/p&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bing Maps OOB" border="0" alt="Bing Maps OOB" src="http://weblogs.asp.net/blogs/lduveau/image_2DA7C33B.png" width="500" height="392" /&gt; &lt;/p&gt;

&lt;p&gt;You can &lt;strong&gt;download&lt;/strong&gt; my project here: 

  &lt;br /&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedrowdetail.aspx/Public/Code/Silverlight/Silverlight%203/FunWithBingMaps.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Don’t forget to set your BingMapCredentials resource key in the Assets/ResDictionary.xaml file!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;As you can expect the map expose many properties (ZoomLevel, Center, Layout, LogoVisibility, Navigation, Pushpins, Layers, …) but I was particularly happy to see:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;it works OOB (Out Of Browser), as the map do not use HTML bridge. &lt;/li&gt;

  &lt;li&gt;Supports MouseWheel (ok we are used to it with AJAX apps, but in Silverlight 3 even the listbox do not have MouseWheel support…). &lt;/li&gt;

  &lt;li&gt;Offers Data Binding to add dynamic items on the map. &lt;/li&gt;

  &lt;li&gt;It has a nice “label with fade” mode that you should try! &lt;/li&gt;

  &lt;li&gt;You can change the Culture &lt;/li&gt;

  &lt;li&gt;Integrate well in Blend designer surface: 
    &lt;br /&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bing Maps Silverlight control in Blend" border="0" alt="Bing Maps Silverlight control in Blend" src="http://weblogs.asp.net/blogs/lduveau/image_127ECE60.png" width="500" height="508" /&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But there is a lot more to discover (Geocode, calculate route, …)!! The best way to learn the features is via the &lt;strong&gt;interactive sdk&lt;/strong&gt;: 

  &lt;br /&gt;&lt;a href="http://www.microsoft.com/maps/isdk/silverlight/default.htm" rel="nofollow" target="_blank"&gt;http://www.microsoft.com/maps/isdk/silverlight/default.htm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;For more information on the &lt;strong&gt;Bing Maps Platform&lt;/strong&gt; (they also provide an AJAX control): 

  &lt;br /&gt;&lt;a href="http://www.microsoft.com/maps/developers/" rel="nofollow" target="_blank"&gt;http://www.microsoft.com/maps/developers/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a title="https://sharepoint.connect.microsoft.com/silverlightmapcontrolctp/iSDK/default.htm" href="https://sharepoint.connect.microsoft.com/silverlightmapcontrolctp/iSDK/default.htm"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bfed556d-d93d-47db-a75d-408044fbb059" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bing+Maps" rel="tag"&gt;Bing Maps&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7253963" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bnskcMNU88on4zli8Y_lN6Fedoc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bnskcMNU88on4zli8Y_lN6Fedoc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bnskcMNU88on4zli8Y_lN6Fedoc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bnskcMNU88on4zli8Y_lN6Fedoc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/Po7Vs3KdFKE" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Blend SketchFlow project: from prototype to real screens?</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/12/blend-sketchflow-project-from-prototype-to-real-screens.aspx</link><pubDate>Thu, 12 Nov 2009 19:34:03 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7252740</guid><dc:creator>pluginbaby</dc:creator><slash:comments>12</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/12/blend-sketchflow-project-from-prototype-to-real-screens.aspx#comments</comments><description>&lt;p&gt;I have been doing many demos of &lt;a href="http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx" rel="nofollow" target="_blank"&gt;Blend SketchFlow&lt;/a&gt;, but never tried the process to go from sketch to real screens when prototyping is finished.    &lt;br /&gt;After MIX09, my first understanding was that one of the goals of SketchFlow was being able to easily switch from prototype to &amp;quot;real&amp;quot; app. But I was wrong and I found that many people are.&lt;/p&gt;  &lt;p&gt;Maybe the confusion comes from what is written on the site:   &lt;br /&gt;&lt;a href="http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx" rel="nofollow" target="_blank"&gt;http://www.microsoft.com/expression/products/Sketchflow_Overview.aspx&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&amp;quot;Traditional prototypes are generally redundant after the concept phase and discarded. SketchFlow enables you to leverage all the previous conceptual work, every asset and component created is reusable in your production project – nothing goes to waste.&amp;quot;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;em&gt;&lt;/em&gt;  &lt;p&gt;I think many people (like me) incorrectly understood that we could simply switch from prototype to real screens, which is not really the case.&lt;/p&gt;  &lt;p&gt;On the Blend documentation (Hit F1, select SketchFlow and click on “Convert a prototype”) you can find the official procedure to “convert your SketchFlow prototype into a production-ready project”. Have a look at it and you’ll see &lt;strong&gt;the process is long and really painful&lt;/strong&gt;… far from a “convert to production” button that would remove the Sketch style from every control and clean the solution.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/image_37E7D77A.png" width="500" height="452" /&gt; &lt;/p&gt;  &lt;p&gt;In fact the point is that &lt;strong&gt;you generally wouldn’t want to do that&lt;/strong&gt;, and someone from the Blend Team confirmed this. You should build your prototype without production consideration in mind. The structure of a SketchFlow prototype itself is not done as a typical well-architected production solution would be. SketchFlow is very good to help you build mock-ups in a RAD-style development, then for production you have to start a clean new project and &lt;strong&gt;reuse some of the assets you created during the prototype&lt;/strong&gt;. But no “convert project to production” button here, and no plan to have one as I heard (for the reasons described above).&lt;/p&gt;  &lt;p&gt;Note: I am not trying to minimize the benefits of this tool, just pointing out the “switch to production” might be surprising at first.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e4875a0a-4c61-4aa0-83de-d1115bc90edd" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SketchFlow" rel="tag"&gt;SketchFlow&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7252740" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e092FRXyrKZ_d9rCwPaau6A_As0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e092FRXyrKZ_d9rCwPaau6A_As0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e092FRXyrKZ_d9rCwPaau6A_As0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e092FRXyrKZ_d9rCwPaau6A_As0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/AQls9y33Lw0" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Expression/default.aspx">Expression</category></item><item><title>Silverlight Tour Quebec in December</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/04/silverlight-tour-quebec-in-december.aspx</link><pubDate>Wed, 04 Nov 2009 01:51:19 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7246380</guid><dc:creator>pluginbaby</dc:creator><slash:comments>2</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/04/silverlight-tour-quebec-in-december.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="formation silverlight quebec" border="0" alt="formation silverlight quebec" src="http://weblogs.asp.net/blogs/lduveau/silverlight_quebec_5A5A0791.jpg" width="520" height="345" /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="formation silverlight 3 quebec" border="0" alt="formation silverlight 3 quebec" align="right" src="http://weblogs.asp.net/blogs/lduveau/SLfr_667B81B8.png" width="259" height="244" /&gt; The &lt;a href="http://www.silverlight-tour.com/" target="_blank"&gt;Silverlight Tour&lt;/a&gt; is visiting &lt;strong&gt;Québec city (Qc)&lt;/strong&gt; again, so get ready to enlighten your RIA app with this top &lt;strong&gt;Silverlight 3 training!!&lt;/strong&gt;&lt;/p&gt;  &lt;li&gt;When: &lt;strong&gt;December 14-16&lt;/strong&gt; &lt;/li&gt;  &lt;li&gt;Where: &lt;strong&gt;Québec, Qc&lt;/strong&gt; &lt;/li&gt;  &lt;li&gt;Registration (Fr): &lt;a href="http://www.runatserver.com/SilverlightTraining.aspx?lng=fr" target="_blank"&gt;http://www.runatserver.com/SilverlightTraining.aspx&lt;/a&gt;     &lt;p&gt;If you are looking for 3 days of intensive Silverlight training in French this is your chance to learn it from soup to nuts!&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;For other cities and dates please visit:       &lt;br /&gt;&lt;a href="http://www.runatserver.com/SilverlightTraining.aspx" target="_blank"&gt;http://www.runatserver.com/SilverlightTraining.aspx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d43c0b90-fb82-432a-a7a5-9ca3efe3d20f" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/li&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7246380" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OfM3keWI1wmCsmkEmLNGzWMmCR0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OfM3keWI1wmCsmkEmLNGzWMmCR0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OfM3keWI1wmCsmkEmLNGzWMmCR0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OfM3keWI1wmCsmkEmLNGzWMmCR0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/XcTmx1AsgJw" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Canada/default.aspx">Canada</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/RunAtServer/default.aspx">RunAtServer</category></item><item><title>Update Out Of Browser (OOB) Silverlight apps</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/03/update-out-of-browser-oob-silverlight-apps.aspx</link><pubDate>Tue, 03 Nov 2009 01:36:11 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7245582</guid><dc:creator>pluginbaby</dc:creator><slash:comments>3</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/03/update-out-of-browser-oob-silverlight-apps.aspx#comments</comments><description>&lt;p&gt;Once your Silverlight application installed on the local computer what happens if there is an update ?&lt;/p&gt;  &lt;p&gt;The local application is not updated automatically but you can check that in your code. The &lt;strong&gt;CheckAndDownloadUpdateAsync()&lt;/strong&gt; method downloads the updated application if available and you can notify the user.&lt;/p&gt;  &lt;p&gt;I put this code in the constructor of the App:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;App.xaml.cs:&lt;/em&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; App()
{
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.Startup += &lt;span class="kwrd"&gt;this&lt;/span&gt;.Application_Startup;
    &lt;span class="kwrd"&gt;this&lt;/span&gt;.UnhandledException += &lt;span class="kwrd"&gt;this&lt;/span&gt;.Application_UnhandledException;

    InitializeComponent();

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (Application.Current.IsRunningOutOfBrowser)
    {
        App.Current.CheckAndDownloadUpdateCompleted += &lt;br /&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; CheckAndDownloadUpdateCompletedEventHandler(CheckAndDownloadUpdateCompleted);
        App.Current.CheckAndDownloadUpdateAsync();
    }
}

&lt;span class="kwrd"&gt;void&lt;/span&gt; CheckAndDownloadUpdateCompleted(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, CheckAndDownloadUpdateCompletedEventArgs e)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (e.Error == &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; e.UpdateAvailable)
    {
        MessageBox.Show(&lt;span class="str"&gt;&amp;quot;Application updated, please restart to apply changes.&amp;quot;&lt;/span&gt;);
    }
}&lt;/pre&gt;

&lt;p&gt;Some points to mention:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;By default OOB do not automatically check for update.&lt;/li&gt;

  &lt;li&gt;Use &lt;strong&gt;CheckAndDownloadUpdateAsync&lt;/strong&gt;() method which check, download and install updates for you.&lt;/li&gt;

  &lt;li&gt;There is no way to separate the Check from the Download…&lt;/li&gt;
&lt;/ul&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;br /&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5aec67fe-c41a-4d37-a2a1-a8c612c7075c" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7245582" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XovWcKocZ5xogPZkMtwO9io__Vw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XovWcKocZ5xogPZkMtwO9io__Vw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XovWcKocZ5xogPZkMtwO9io__Vw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XovWcKocZ5xogPZkMtwO9io__Vw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/YLFPL8Vv26E" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Debug Out Of Browser (OOB) Silverlight apps</title><link>http://weblogs.asp.net/lduveau/archive/2009/11/03/debug-out-of-browser-oob-silverlight-apps.aspx</link><pubDate>Tue, 03 Nov 2009 00:11:50 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7245558</guid><dc:creator>pluginbaby</dc:creator><slash:comments>5</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/11/03/debug-out-of-browser-oob-silverlight-apps.aspx#comments</comments><description>&lt;p&gt;An installed (OOB) Silverlight application is supposed to run the same as in browser, but sometimes you might want to debug it. &lt;/p&gt;  &lt;p&gt;First you could attach VS to the sllauncher.exe process, but there is easier:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Run your application in the browser and install it OOB.&lt;/li&gt;    &lt;li&gt;In the Silverlight project properties go to the “Debug” tab and select “Installed out-of-browser application”.&lt;/li&gt;    &lt;li&gt;In your Solution set your Silverlight project as the&amp;#160; Startup Project.&lt;/li&gt;    &lt;li&gt;Hit F5 and you’re now debugging the OOB app!     &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0e7585f5-a969-423e-a2dd-12c1aba98512" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7245558" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MVbeF2Ghpdzj73_hxXFQWTJPKts/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MVbeF2Ghpdzj73_hxXFQWTJPKts/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MVbeF2Ghpdzj73_hxXFQWTJPKts/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MVbeF2Ghpdzj73_hxXFQWTJPKts/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/fFsteO3z64o" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight Tour Montreal in November</title><link>http://weblogs.asp.net/lduveau/archive/2009/10/27/silverlight-tour-montreal-in-november.aspx</link><pubDate>Tue, 27 Oct 2009 20:51:15 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7240861</guid><dc:creator>pluginbaby</dc:creator><slash:comments>2</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/10/27/silverlight-tour-montreal-in-november.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="formation silverlight montreal" border="0" alt="formation silverlight montreal" src="http://weblogs.asp.net/blogs/lduveau/silverlight_montreal_2CD068D8.jpg" width="520" height="345" /&gt; &lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.silverlight-tour.com/"&gt;Silverlight Tour&lt;/a&gt; is coming back to &lt;strong&gt;Montreal &lt;/strong&gt;next week. &lt;/p&gt;  &lt;li&gt;When: &lt;strong&gt;November 02-04&lt;/strong&gt;&lt;/li&gt;  &lt;li&gt;Where: &lt;strong&gt;Montreal, Qc&lt;/strong&gt;&lt;/li&gt;  &lt;li&gt;Registration (Fr): &lt;a href="http://www.runatserver.com/SilverlightTraining.aspx?lng=fr" target="_blank"&gt;http://www.runatserver.com/SilverlightTraining.aspx&lt;/a&gt;    &lt;p&gt;If you are looking for 3 days of intensive Silverlight training &lt;em&gt;in French&lt;/em&gt; this is your chance to learn it from soup to nuts!&lt;/p&gt; &lt;/li&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7240861" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uG1s9Vvdgj85nCqwKzVeGDmlwmM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uG1s9Vvdgj85nCqwKzVeGDmlwmM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uG1s9Vvdgj85nCqwKzVeGDmlwmM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uG1s9Vvdgj85nCqwKzVeGDmlwmM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/dKT2n_ArlaM" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Montreal/default.aspx">Montreal</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/RunAtServer/default.aspx">RunAtServer</category></item><item><title>BulletedList in Silverlight</title><link>http://weblogs.asp.net/lduveau/archive/2009/10/27/bulletedlist-in-silverlight.aspx</link><pubDate>Tue, 27 Oct 2009 20:32:27 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7240849</guid><dc:creator>pluginbaby</dc:creator><slash:comments>5</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/10/27/bulletedlist-in-silverlight.aspx#comments</comments><description>&lt;p&gt;Today I wanted to add a bulleted list of text items in a xaml page, as there is no BulletedList control in Silverlight, you have to do it yourself. But I don’t need a databound list, just something simple in a TextBlock, so here is what I ended with, using &amp;lt;LineBreak&amp;gt; and &amp;lt;Run&amp;gt; elements:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    This Silverlight 3 demo uses:&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• Entity Framework and LINQ&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• .NET RIA Services&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• WCF&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• Export DataGrid to Excel&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• Insert/Update/Delete with DataForm&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• Styling and ResourceDictionary&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• Control Template&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• Out Of Browser mode (OOB)&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;• Search Engine Optimization (SEO)&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;As expected, the result at runtime:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/image_57BB62D6.png" width="255" height="202" /&gt; 

  &lt;br /&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4e8cc304-74a7-4267-be82-4bdfd9e4c8a5" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7240849" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ru2JyOu_JTEKrkfTxYYBAXjrdEw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ru2JyOu_JTEKrkfTxYYBAXjrdEw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ru2JyOu_JTEKrkfTxYYBAXjrdEw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ru2JyOu_JTEKrkfTxYYBAXjrdEw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/wP2k70rInKk" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Samedi.NET special Silverlight event in Montreal</title><link>http://weblogs.asp.net/lduveau/archive/2009/10/27/samedi-net-special-silverlight-event-in-montreal.aspx</link><pubDate>Tue, 27 Oct 2009 20:02:14 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7240813</guid><dc:creator>pluginbaby</dc:creator><slash:comments>4</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/10/27/samedi-net-special-silverlight-event-in-montreal.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/SamediDotNet_2000A42B.png" width="184" height="113" /&gt; &lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.dotnetmontreal.com/" rel="nofollow" target="_blank"&gt;Montreal .NET Community&lt;/a&gt; organized a &lt;strong&gt;full-day Silverlight workshop&lt;/strong&gt; last Saturday.&lt;/p&gt;  &lt;p&gt;The topic of the day was: “&lt;strong&gt;Build a business application with Silverlight 3&lt;/strong&gt;”.&lt;/p&gt;  &lt;p&gt;We were 5 speakers presenting many sessions (all code, no slide) to show different tools and technologies:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2008 SP1 &lt;/li&gt;    &lt;li&gt;Expression Blend 3 &lt;/li&gt;    &lt;li&gt;Expression Designer 3 &lt;/li&gt;    &lt;li&gt;.NET RIA Services &lt;/li&gt;    &lt;li&gt;WCF and LINQ &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The event went pretty well, what amazed me the most is the fact that we got more than &lt;strong&gt;160 attendees&lt;/strong&gt;!!!&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/P1010599_62903FA3.jpg" width="469" height="358" /&gt;     &lt;br /&gt;So we could feel the excitement for Silverlight growing more and more, and I answered to so many questions both during my presentations and at the end of the day!!!&lt;/p&gt;  &lt;p&gt;To change from Northwind we used a simple Db with &lt;strong&gt;beers&lt;/strong&gt; (thanks &lt;a href="http://www.spritehand.com/" rel="nofollow" target="_blank"&gt;Andy&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="beers db" border="0" alt="beers db" src="http://weblogs.asp.net/blogs/lduveau/image_21158D4A.png" width="546" height="272" /&gt; &lt;/p&gt;  &lt;p&gt;I did 2 talks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;.NET RIA Services &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Silverlight and SEO&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Here is what I showed during my first talk:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Navigation Framework &lt;/li&gt;    &lt;li&gt;Manage Data      &lt;ul&gt;       &lt;li&gt;Entity Framework and LINQ &lt;/li&gt;        &lt;li&gt;.NET RIA Services &lt;/li&gt;        &lt;li&gt;DataGrid + DomainDataSource          &lt;ul&gt;           &lt;li&gt;Custom columns &lt;/li&gt;            &lt;li&gt;DetailsRow Template &lt;/li&gt;            &lt;li&gt;Sort &lt;/li&gt;            &lt;li&gt;Filter &lt;/li&gt;            &lt;li&gt;Group &lt;/li&gt;            &lt;li&gt;Pagination &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Activity Control &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Export to Excel &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The download below adds more:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Edit, Delete (with confirm) beer with the new DataForm control. &lt;/li&gt;    &lt;li&gt;Insert new beer in a ChildWindow &lt;/li&gt;    &lt;li&gt;Beer details page &lt;/li&gt;    &lt;li&gt;Out Of Browser mode (OOB) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For more on .NET RIA Services and how you can add it in your existing architecture, have a look at this incredible list of posts:    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx" rel="nofollow" target="_blank"&gt;http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ll write more on my second talk (SEO) in another blog post.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/image_1C32D98E.png" width="470" height="394" /&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Download source code&lt;/h2&gt;  &lt;p&gt;&lt;iframe style="border-bottom: #dde5e9 1px solid; border-left: #dde5e9 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 3px; padding-left: 0px; width: 240px; padding-right: 0px; height: 66px; border-top: #dde5e9 1px solid; border-right: #dde5e9 1px solid; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedrowdetail.aspx/Presentations/Samedi.NET%20Montreal%202009/BeersMontreal.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Also check the post of my co-worker &lt;a href="http://blogs.runatserver.com/lppinson/archive/2009/10/25/samedi-net-was-a-huge-success.aspx" rel="nofollow" target="_blank"&gt;Louis-Philippe&lt;/a&gt;, he has lots of pictures of the event.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c335e680-02a0-4fa1-9d4b-6bd9f2876d1e" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7240813" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TFYFq6XLWSg2pVccfIAbfFUjqS8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TFYFq6XLWSg2pVccfIAbfFUjqS8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TFYFq6XLWSg2pVccfIAbfFUjqS8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TFYFq6XLWSg2pVccfIAbfFUjqS8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/TxU5YGgmPVc" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Events/default.aspx">Events</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Speaking/default.aspx">Speaking</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Montreal/default.aspx">Montreal</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/SEO/default.aspx">SEO</category></item><item><title>Silverlight presentation at the Quebec User Group</title><link>http://weblogs.asp.net/lduveau/archive/2009/10/17/silverlight-presentation-at-the-quebec-user-group.aspx</link><pubDate>Sat, 17 Oct 2009 01:53:22 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7231795</guid><dc:creator>pluginbaby</dc:creator><slash:comments>3</slash:comments><comments>http://weblogs.asp.net/lduveau/archive/2009/10/17/silverlight-presentation-at-the-quebec-user-group.aspx#comments</comments><description>&lt;p&gt;Yesterday I did a &lt;strong&gt;Silverlight presentation&lt;/strong&gt; at the &lt;a href="http://www.cunq.org/" target="_blank"&gt;Quebec User Group&lt;/a&gt; and my goal was to show the new features of Silverlight 3 to help &lt;strong&gt;build business app&lt;/strong&gt;, so this was not quite an intro presentation with no animation and video...&lt;/p&gt;  &lt;p&gt;As usual I showed only 3 slides and then built live a ginormous demo from scratch ”ScottGu style” in which I took advantage of &lt;strong&gt;Silverlight 3 + .NET RIA Services&lt;/strong&gt; to manage a beers db with : &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Navigation Framework &lt;/li&gt;    &lt;li&gt;Style and Theme &lt;/li&gt;    &lt;li&gt;Data      &lt;ul&gt;       &lt;li&gt;Entity Framework &lt;/li&gt;        &lt;li&gt;.NET RIA Services &lt;/li&gt;        &lt;li&gt;DataGrid + DomainDataSource          &lt;ul&gt;           &lt;li&gt;Custom columns &lt;/li&gt;            &lt;li&gt;DetailsRow Template &lt;/li&gt;            &lt;li&gt;Sort &lt;/li&gt;            &lt;li&gt;Filter &lt;/li&gt;            &lt;li&gt;Group &lt;/li&gt;            &lt;li&gt;Pagination &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Activity Control &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Export to Excel &lt;/li&gt;    &lt;li&gt;OOB mode &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And I even had enough time for a QnA session!    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/lduveau/image_3EBEAC03.png" width="450" height="475" /&gt; &lt;/p&gt;  &lt;p&gt;Download the Powerpoint content (french)&lt;/p&gt;  &lt;p&gt;&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedicon.aspx/Presentations/CUNQ%202009/Presentation.pptx" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Download the source code (requires &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&amp;amp;displaylang=en" target="_blank"&gt;.NET RIA Services&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="http://cid-0e564ed4426a5ecc.skydrive.live.com/embedicon.aspx/Presentations/CUNQ%202009/BeersQuebec.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7231795" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pF6Pq0VWwfWm0vJ91JEsl0PYop4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pF6Pq0VWwfWm0vJ91JEsl0PYop4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pF6Pq0VWwfWm0vJ91JEsl0PYop4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pF6Pq0VWwfWm0vJ91JEsl0PYop4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LaurentDuveau/~4/p1tLSyaU7Hg" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/lduveau/archive/tags/Events/default.aspx">Events</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Speaking/default.aspx">Speaking</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/lduveau/archive/tags/Canada/default.aspx">Canada</category></item></channel></rss>
