<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Expression Blend</title>
        <link>http://geekswithblogs.net/lbugnion/category/7118.aspx</link>
        <description>Microsoft Expression Blend</description>
        <language>en-US</language>
        <copyright>Laurent Bugnion</copyright>
        <managingEditor>laurent@galasoft.ch</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
        <item>
            <title>Silverlight 2 beta 2 is live!</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/06/07/silverlight-2-beta-2-is-live.aspx</link>
            <description>&lt;p&gt;Here we go, Silverlight 2 beta 2 can be downloaded and installed! I had the chance to take part to an "insiders" program at Microsoft, and to play with SL2 b2 for a couple of weeks, and it's a good one. You should switch to b2 as soon as you can!&lt;/p&gt; &lt;p&gt;There are obviously incompatibilities between b1 and b2, but much, much less than between the alpha version and b1. We're getting there!!&lt;/p&gt; &lt;p&gt;Silverlight 2 beta 2 will be used to build applications related to the Beijing olympics, so it's going to be a real nature test for that version. As for the final release.... it's still very much hush hush, so let's leave it for now :)&lt;/p&gt; &lt;p&gt;The best place to start is &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/06/06/silverlight-2-beta2-released.aspx"&gt;ScottGu's blog&lt;/a&gt;. As usual, Scott describes the new features at length, and has links to all the places where you can download the good stuff.&lt;/p&gt; &lt;p&gt;Note that there is also a new version of Blend 2.5 which can be installed next to a "normal" Expression Blend V2. There is supposed to be a new version of Deep Zoom Composer too, but the download seems to be down currently.&lt;/p&gt; &lt;p&gt;Enjoy!!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122688"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122688" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/122688.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/06/07/silverlight-2-beta-2-is-live.aspx</guid>
            <pubDate>Sat, 07 Jun 2008 06:23:40 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/122688.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/06/07/silverlight-2-beta-2-is-live.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/122688.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/122688.aspx</trackback:ping>
        </item>
        <item>
            <title>Microsoft, you're kidding me, right??</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/06/05/microsoft-youre-kidding-me-right.aspx</link>
            <description>&lt;p class="gslb_rsbPParagraph"&gt;You got to be kidding me. What if I want Expression in the US locale, I can't buy it just because my IP is not in the US? Honestly? You are *that* stupid? &lt;/p&gt; &lt;div class="gslb_rsbDivImage"&gt;&lt;img title="WTF" alt="WTF" src="http://www.galasoft.ch/blogs-all/2008060501.png" /&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122642"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122642" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/122642.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/06/05/microsoft-youre-kidding-me-right.aspx</guid>
            <pubDate>Thu, 05 Jun 2008 17:48:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/122642.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/06/05/microsoft-youre-kidding-me-right.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/122642.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/122642.aspx</trackback:ping>
        </item>
        <item>
            <title>My talk at the &amp;quot;Internet Briefing RIA conference&amp;quot; in Zurich</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/05/29/my-talk-at-the-quotinternet-briefing-ria-conferencequot-in-zurich.aspx</link>
            <description>&lt;p class="gslb_rsbPParagraph"&gt; I just &lt;a href="http://www.galasoft.ch/presentations_en.html#UltraRichApplications" target="_blank"&gt;posted today's talk&lt;/a&gt; at the RIA conference in the World Trade Center, Zurich. Unfortunately it was not recorded, but the slides and the demos' source code is available on my site. &lt;/p&gt; &lt;p class="gslb_rsbPParagraph"&gt; The talk went really good, even though the crowd was rather tough :) Trying to "sell" Windows Presentation Foundation, a desktop Windows-only technology, to an audience of web developers, many of them using Java and open source technologies (and even one Adobe employee) sparkled some very interesting discussions. I can't say I convinced everyone (and it was most certainly not my intention), but I think everybody had a really good time. I know for sure that I did! &lt;/p&gt; &lt;p class="gslb_rsbPParagraph"&gt; To all those who stayed until the end of my presentation, and even though mine was the last presentation of the day, thank you very much!! To those who couldn't stay, I hope you'll have fun checking the slides and the demos, and &lt;a href="http://www.galasoft.ch/contact" target="_blank"&gt;contact me&lt;/a&gt; if anything is unclear!! &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122482"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122482" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/122482.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/05/29/my-talk-at-the-quotinternet-briefing-ria-conferencequot-in-zurich.aspx</guid>
            <pubDate>Thu, 29 May 2008 21:11:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/122482.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/05/29/my-talk-at-the-quotinternet-briefing-ria-conferencequot-in-zurich.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/122482.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/122482.aspx</trackback:ping>
        </item>
        <item>
            <title>De WPF Integratio (About WPF Integration)</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/04/11/de-wpf-integratio-about-wpf-integration.aspx</link>
            <description>&lt;div class="gslb_rsbDivTitle"&gt; Introduction &lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt; I've been posting a lot about Silverlight lately, but hey, here is a WPF post, and about WPF integration, no less. &lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: To fully understand this article, you should have a basic understanding of WPF, styles and templates, triggers, etc... &lt;/p&gt;
&lt;p class="gslb_rsbPParagraph"&gt; In my current project at work, I act as WPF Integrator. I am that dude who sits between the designers and the developers, and tries to avoid that they fight too much. Or something. Sometimes it works, sometimes it doesn't, you know how it is with kids. They need their freedom. But I digress. &lt;/p&gt;
&lt;p class="gslb_rsbPParagraph"&gt; One important task of a WPF Integrator is (drum roll) WPF integration. For us, this operation usually occurs when we have a design iteration. The way we create application components is (roughly) the following: &lt;/p&gt;
&lt;ul class="gslb_rsbList"&gt;
    &lt;li&gt; The Developer creates the component in Visual Studio. The component is composed of a main assembly (EXE or DLL), containing "functional XAML" and source code (code-behind), and a "Skins" DLL containing XAML resource dictionaries. &lt;br /&gt;
    (Note: Because we don't want any source code into the "Skins" DLL, and to avoid circular references, we actually have a 3rd assembly called "Converters". As the name shows, this assembly contains the converters (and other helper classes) that are referenced from the Skins DLL). &lt;/li&gt;
    &lt;li&gt; Together with the WPF Integrator, they create a "raw" UI. That means a basic layout made of "functional XAML", according to the wireframes created by our user experience engineers. &lt;br /&gt;
    (Note: "functional XAML" is the XAML code that is not strictly doing look&amp;amp;feel. For example, a Button tag is functional XAML, while the style and template it uses are "design XAML"). &lt;/li&gt;
    &lt;li&gt; The WPF Integrator prepares the Skins DLL by exporting all styles to it (using Blend). We follow certain guidelines in naming all the components (styles, templates, DLL names, etc...) and also in the structure of the styles and templates (see below). &lt;/li&gt;
    &lt;li&gt; The Developers start what they do best, Developing. Meanwhile, the Designer do what they do best (let me hear you:) Designing! This is the Design iteration I was referring to before. &lt;br /&gt;
    (Note: The Developer *only* works in the main assembly. The Designer *only* works in the Skins assembly. &lt;/li&gt;
    &lt;li&gt; If the Designer needs to change something in the main assembly, they contact the WPF Integrator to coordinate. &lt;/li&gt;
    &lt;li&gt; Similarly, if the Developer needs to change something in the Skins DLL, they contact the WPF Integrator to coordinate. &lt;/li&gt;
    &lt;li&gt; When a set of features are complete, the Developers' and Designers' work is &lt;span style="font-weight: bold;"&gt;integrated&lt;/span&gt; and tested. &lt;/li&gt;
&lt;/ul&gt;
&lt;p class="gslb_rsbPParagraph"&gt; Typically, we integrate the design to the application during design workshops, where a couple of Designers and Developers (and the WPF Integrator) sit together and work together, pretty much in an Extreme Programming spirit. These workshops are very intense and interesting, and usually allow fast progress in the application's look&amp;amp;feel. &lt;/p&gt;
&lt;div class="gslb_rsbDivTitle"&gt; Conventions, file structure, naming &lt;/div&gt;
&lt;ul class="gslb_rsbList"&gt;
    &lt;li&gt; A control refers to a Style which in turn refers to a Template (this is to facilitate the designers' job in Blend). &lt;/li&gt;
    &lt;li&gt; A control does *not* set its template directly, but always through a style. &lt;/li&gt;
    &lt;li&gt; If triggers are needed in the main assembly, the local style refers to a "BasedOn" style located in the Skins DLL. &lt;/li&gt;
    &lt;li&gt; A Style key is named like the control it refers to, suffixed with "Style". For example "MySpecificButtonStyle" or "ListBoxStyle" (for all ListBoxes), etc... &lt;/li&gt;
    &lt;li&gt; A Template key is named like the control it refers to, suffixed with "Template". For example "MySpecificButtonTemplate" or "ListBoxTemplate" (for all ListBoxes), etc... &lt;br /&gt;
    (note: We use the "Template" suffix for ControlTemplate and DataTemplate). &lt;/li&gt;
    &lt;li&gt; The skin resources for a given control are stored in a resource dictionary file with the "Skin" suffix. For example, the control "MyUserControl"'s resource dictionary is named "MyUserControlSkin.xaml". &lt;/li&gt;
&lt;/ul&gt;
&lt;p class="gslb_rsbPParagraph"&gt; These guidelines help the designers to understand which Style and Template belong to which control. Note that Blend makes that task easier by allowing to navigate from the main assembly to the Skins assembly with a succession of clicks. &lt;/p&gt;
&lt;div class="gslb_rsbDivTitle"&gt; Typical Designer workflow &lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt; The very first task a designer must do when he gets the code is to understand its structure. This is where the conventions mentioned above help. Typically, they work this way: &lt;br /&gt;
(Note: You can download &lt;a target="_blank" href="http://www.galasoft.ch/mydotnet/articles/resources/article-2008031901/WpfTests.BestPractices.zip"&gt;a sample application&lt;/a&gt; here, open the SLN file in Blend, and then open the main window (Window1.xaml)) &lt;/p&gt;
&lt;ul class="gslb_rsbList"&gt;
    &lt;li&gt; Open the application's main window in Blend and check the logical tree. &lt;/li&gt;
    &lt;li&gt; If a user control is found, right-click on it and choose "Edit control" (fig 1). This opens the User Control XAML file in Blend. &lt;br /&gt;
    (Of course, this fails if the User Control's source code is not available). &lt;/li&gt;
    &lt;li&gt; For any control they want to skin, select the control, and then choose the menu "Object / Style" (fig 2 and 3). &lt;/li&gt;
    &lt;li&gt; At this point, the style chosen can be local (for example if the Developer need to use a Trigger, etc. See listing 1). The Designers are trained to check the name of the file in which they are currently located (in Blend). If the file is named without a "Skin" suffix (for example MyPlugIn.xaml), they may not edit it. In that case, they look for a BasedOn style (fig 4). If they are currently located in a file with a "Skin" suffic (for example "MyPlugInSkin.xaml", then they may edit it (fig 5). &lt;/li&gt;
    &lt;li&gt; Once in the Style, they can select the context menu "Edit Control Parts (Template) / Edit Template". This opens the Control Template in Blend, where they can rework to look&amp;amp;feel of the control completely (including triggers, animations, etc...) &lt;/li&gt;
&lt;/ul&gt;
&lt;div class="gslb_rsbDivImage"&gt; &lt;img title="Figure 1: Edit control" alt="Figure 1: Edit control" src="http://www.galasoft.ch/blogs-all/2008041001.png" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt; Figure 1: Edit control &lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivImage"&gt; &lt;img title="Figure 2: Selecting a control" alt="Figure 2: Selecting a control" src="http://www.galasoft.ch/blogs-all/2008041002.png" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt; Figure 2: Selecting a control &lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivImage"&gt; &lt;img title="Figure 3: Edit style" alt="Figure 3: Edit style" src="http://www.galasoft.ch/blogs-all/2008041003.png" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt; Figure 3: Edit style &lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivCodeSection"&gt;
&lt;div class="gslb_rsbDivCode" style="white-space: pre; font-family: Monospace;"&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;="GO"&lt;/span&gt;
        &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;
        &lt;span class="attr"&gt;Click&lt;/span&gt;&lt;span class="kwrd"&gt;="GoButton_Click"&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.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;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="attr"&gt;BasedOn&lt;/span&gt;&lt;span class="kwrd"&gt;="{StaticResource RoundButtonStyle}"&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;="IsEnabled"&lt;/span&gt;
              &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&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.Triggers&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;DataTrigger&lt;/span&gt; &lt;span class="attr"&gt;Binding&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding ElementName=DirectoryNameTextBox,
                                       Path=Text}"&lt;/span&gt;
                 &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="{x:Static sys:String.Empty}"&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;="IsEnabled"&lt;/span&gt;
                  &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;="False"&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;DataTrigger&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.Triggers&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;Button.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;Button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivLegend"&gt;
Listing 1: Local style using a Trigger, Based On a skin style
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivImage"&gt; &lt;img title="Figure 4: Edit " based-on=" style" alt="Figure 4: Edit " src="http://www.galasoft.ch/blogs-all/2008041004.png" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt; Figure 4: Edit "based-on" style &lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivImage"&gt; &lt;img title="Figure 5: Editing the style in the Skin file" alt="Figure 5: Editing the style in the Skin file" src="http://www.galasoft.ch/blogs-all/2008041005.png" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt; Figure 5: Editing the style in the Skin file &lt;/div&gt;
&lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt; Note: Here we see the advantage of setting the "Template" property in the Style instead of directly in the control: The Designer can see the "shape" of the control already in Blend, without having to rebuild. &lt;/p&gt;
&lt;div class="gslb_rsbDivImage"&gt; &lt;img title="Figure 6: Editing the template in the Skin file" alt="Figure 6: Editing the template in the Skin file" src="http://www.galasoft.ch/blogs-all/2008041006.png" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt; Figure 6: Editing the template in the Skin file &lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivTitle"&gt; The importance of Blend &lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt; This workflow would fail miserably without Blend. It can never be repeated often enough: &lt;span style="font-weight: bold;"&gt;You should keep your application Blendable!&lt;/span&gt; (as long as possible). Blend will fail to represent the UI in some circumstances. For example, if your application connects to a COM based component, this is something that Blend cannot handle. Similarly, if your application uses any kind of network service to get data, Blend won't be able to represent this data. This is where the MVVM (Model - View - ViewModel pattern comes handy: By enforcing a data-driven UI, you give the developer the possibility to create "design-time" data, i.e. data which is only used when the application runs in Blend (or in the Visual Studio WPF designer). I could talk about that for hours, and this jumps the scope of this post, but you can read more info about MVVM here: &lt;/p&gt;
&lt;ul class="gslb_rsbList"&gt;
    &lt;li&gt; &lt;a target="_blank" href="http://blogs.msdn.com/johngossman/"&gt;John Gossman&lt;/a&gt;'s blog. &lt;/li&gt;
    &lt;li&gt; &lt;a target="_blank" href="http://blogs.msdn.com/dancre/archive/2006/10/11/datamodel-view-viewmodel-pattern-series.aspx"&gt;Dan Crevier&lt;/a&gt;'s blog. &lt;/li&gt;
    &lt;li&gt; Josh Smith's &lt;a target="_blank" href="http://www.codeproject.com/KB/WPF/MVCtoUnitTestinWPF.aspx"&gt;excellent article&lt;/a&gt; at CodeProject &lt;/li&gt;
    &lt;li&gt; Dr WPF's new Software Architecture Pattern: &lt;a target="_blank" href="http://www.drwpf.com/blog/Home/tabid/36/EntryID/27/Default.aspx"&gt;M-V-poo&lt;/a&gt;. &lt;/li&gt;
    &lt;li&gt; My presentation at TechDays 2008 in Basel (&lt;a target="_blank" href="http://www.galasoft.ch/mydotnet/articles/resources/article-2008031901/SiemensGoesWPF.zip"&gt;slides&lt;/a&gt;, &lt;a target="_blank" href="http://www.galasoft.ch/mydotnet/articles/resources/article-2008031901/WpfTests.BestPractices.zip"&gt;source code&lt;/a&gt;). &lt;/li&gt;
    &lt;li&gt; And many more places on the web... &lt;/li&gt;
&lt;/ul&gt;
&lt;div class="gslb_rsbDivTitle"&gt; Using WinMerge as an integration tool &lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt; During these integration phases, I use &lt;a target="_blank" href="http://winmerge.org/"&gt;WinMerge&lt;/a&gt; a lot. The reasons for using this merging tool are multiple: &lt;/p&gt;
&lt;ul class="gslb_rsbList"&gt;
    &lt;li&gt; It is probably the best merging tool currently available for Windows (if someone disagrees, don't hesitate to comment below!!). &lt;/li&gt;
    &lt;li&gt; Our Designers don't work in our source control infrastructure. They get a copy of the code, refactored as a standalone application. This allows them to test the application easily without having to install a whole networking system (our application is following a Service Oriented Architecture). The aplication they get features a test mode, allowing them to simulate certain conditions (again, see my &lt;a target="_blank" href="http://www.galasoft.ch/mydotnet/articles/resources/article-2008031901/SiemensGoesWPF.zip"&gt;TechDays talk&lt;/a&gt; and the &lt;a target="_blank" href="http://www.galasoft.ch/mydotnet/articles/resources/article-2008031901/WpfTests.BestPractices.zip"&gt;source code&lt;/a&gt; for details). Because they work disconnected from the source control, a merging operation is needed. &lt;/li&gt;
    &lt;li&gt; The merging steps give me a good occasion to review the Designers and Developers work, and to understand it. This is an additional step towards code consistency and code quality (4 eyes review principle). &lt;/li&gt;
&lt;/ul&gt;
&lt;p class="gslb_rsbPParagraph"&gt; WinMerge is simply amazing, a must-use tool for a WPF Integrator (at least if you work according to a similar workflow as we do). It is free (amazing, when you see the quality of this tool), was clearly developed by people who needed such a tool and decided to create it (according to the "eat your dog food" idea), and can even be integrated into your favourite source control framework (yes, even ClearCase, which we are forced to use). You can compare folders, binary files, text files with a very clear user interface. All merging operations can be performed using the keyboard only, which is extremely ergonomic. Honestly, I love that tool. &lt;/p&gt;
&lt;p class="gslb_rsbPParagraph"&gt; By the way, I didn't mention it yet, but you can also edit both files you are comparing in WinMerge, and save both of them. &lt;/p&gt;
&lt;div class="gslb_rsbDivImage"&gt; &lt;img title="WinMerge, merging tool" alt="WinMerge, merging tool" src="http://www.galasoft.ch/blogs-all/2008040901.png" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt; WinMerge, merging tool &lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivTitle"&gt; Conclusion &lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt; Much has been written about the Designer-Developer workflow, the WPF Integrator role, the MVVM (or MV*) pattern, etc... In our project, we have the chance to use these principles in a real life situation. I can honestly say, I rarely had so much fun developing software ever. The only thing I can think of that made (almost) as much fun was the big ASP.NET project I worked on prior to this one. The Integrator role is a great place to be.&lt;/p&gt;
&lt;p class="gslb_rsbPParagraph"&gt; (Note: I also file this under Silverlight because WinMerge is also very useful for Silverlight integration, even though the Style and Template system is not as rich as in WPF yet). &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121193"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121193" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/121193.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/04/11/de-wpf-integratio-about-wpf-integration.aspx</guid>
            <pubDate>Fri, 11 Apr 2008 20:38:56 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/121193.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/04/11/de-wpf-integratio-about-wpf-integration.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/121193.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/121193.aspx</trackback:ping>
        </item>
        <item>
            <title>Silverlight Bug: Transforms and OpacityMask</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/04/04/silverlight-bug-transforms-and-opacitymask.aspx</link>
            <description>&lt;div class="gslb_rsbDivTitle"&gt;
Introduction
&lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt;
In WPF, one of the best know effects is the "reflection" effect, where a scene reflects itself dynamically. It's a very cool feature, because it's really easy to realize, and it allows to reflect images, but also videos or other User Interface scenes. The key to this is to use a VisualBrush. Silverlight is not exactly as powerful as WPF, and doesn't have VisualBrush, but it has ImageBrush and VideoBrush, both of them allowing cool media reflection effects (these brushes can also be used for other things!).
&lt;/p&gt;
&lt;p class="gslb_rsbPParagraph"&gt;
The key to making a reflection is placing a picture (or a video), and underneath it, an element (typically a Border). Then, you set the background of this element (Border.Background) to an ImageBrush (or a VideoBrush) pointing to the source that you want to reflect. To make the reflection look more lifelike, however, you want to skew it (because the surface you reflect is forming an angle with the reflecting element); also, you typically use an OpacityMask and make it look as if the reflection was progressively disappearing on a non-perfect surface. Life is not perfect, people, so a perfect reflection doesn't look lifelike.
&lt;/p&gt;
&lt;div class="gslb_rsbDivTitle"&gt;
The issue
&lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt;
However, when creating such an effect, I noticed an issue &lt;span style="font-weight:bold;"&gt;causing skewed elements with an OpacityMask to disappear completely&lt;/span&gt;. The following code shows the problem:
&lt;/p&gt;
&lt;div class="gslb_rsbDivCodeSection"&gt;
&lt;div class="gslb_rsbDivCode" style="white-space: pre; font-family: Monospace;"&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.ColumnDefinitions&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;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="200"&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;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&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.ColumnDefinitions&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.RowDefinitions&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;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="100"&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;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&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.RowDefinitions&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;Border&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="Red"&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;Border.OpacityMask&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;LinearGradientBrush&lt;/span&gt; &lt;span class="attr"&gt;EndPoint&lt;/span&gt;&lt;span class="kwrd"&gt;="0,1"&lt;/span&gt; &lt;span class="attr"&gt;StartPoint&lt;/span&gt;&lt;span class="kwrd"&gt;="0,0"&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;GradientStop&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;="#FFFFFFFF"&lt;/span&gt; &lt;span class="attr"&gt;Offset&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&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;GradientStop&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;="#00FFFFFF"&lt;/span&gt; &lt;span class="attr"&gt;Offset&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&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;LinearGradientBrush&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;Border.OpacityMask&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;Border.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;SkewTransform&lt;/span&gt; &lt;span class="attr"&gt;AngleX&lt;/span&gt;&lt;span class="kwrd"&gt;="30"&lt;/span&gt; &lt;span class="attr"&gt;AngleY&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&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;Border.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;Border&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;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivImage"&gt;
&lt;img src="http://www.galasoft.ch/blogs-all/2008040401.png" alt="Skewed Border, OpacityMask, Silverlight" title="Skewed Border, OpacityMask, Silverlight" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt;
Skewed Border, OpacityMask, Silverlight
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivImage"&gt;
&lt;img src="http://www.galasoft.ch/blogs-all/2008040402.png" alt="Skewed Border, OpacityMask, WPF" title="Skewed Border, OpacityMask, WPF" /&gt;
&lt;div class="gslb_rsbDivLegend"&gt;
Skewed Border, OpacityMask, WPF
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="gslb_rsbDivTitle"&gt;
Notes
&lt;/div&gt;
&lt;p class="gslb_rsbPParagraph"&gt;
Here are a couple of notes about this:
&lt;/p&gt;
&lt;ul class="gslb_rsbList"&gt;
&lt;li&gt;
I simplified the code as much as possible to display the issue. Obviously this is not a reflection anymore, but I stumbled upon the issue when creating a reflection.
&lt;/li&gt;
&lt;li&gt;
The issue is visible in Blend and also if you run the application.
&lt;/li&gt;
&lt;li&gt;
This issue is not limited to Borders. It also occurs if you replace the Border with a Grid, for example.
&lt;/li&gt;
&lt;li&gt;
The issue also occurs with other Transforms. Replacing the SkewTransform with a RotateTransform will reproduce the issue.
&lt;/li&gt;
&lt;li&gt;
If you don't transform the element, the issue does not occur.
&lt;/li&gt;
&lt;li&gt;
If you remove the OpacityMask, the problem does not occur.
&lt;/li&gt;
&lt;li&gt;
If you give a Width and a Height to the element, the problem does not occur.
&lt;/li&gt;
&lt;li&gt;
The same code in WPF runs correctly.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121036"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121036" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/121036.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/04/04/silverlight-bug-transforms-and-opacitymask.aspx</guid>
            <pubDate>Fri, 04 Apr 2008 14:00:11 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/121036.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/04/04/silverlight-bug-transforms-and-opacitymask.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/121036.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/121036.aspx</trackback:ping>
        </item>
        <item>
            <title>TechDays 08: Talked about WPF and now back home</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/03/20/techdays-08-talked-about-wpf-and-now-back-home.aspx</link>
            <description>&lt;p class="gslb_rsbPParagraph"&gt;The Swiss edition of the TechDays 2008 is over. It was a great success,many people came, and as far as I can say, people had a good time. I didn't attend any sessions though, because I hung out in the main area instead and met a number of people (some of them I knew from MIX or other occasions), and talked talked talked. Yesterday evening, there was a party, I didn't stay too late though because I wanted to be well rested for my talk this morning. &lt;/p&gt; &lt;p class="gslb_rsbPParagraph"&gt;My talk titled "Siemens goes WPF, Lessons learned" went great. It was in the first slot of the day, starting at 9. Many people came (I didn't count, but the room was 90% full, I'd say). People even laughed at my lame jokes (since no designers came to the session, I was free to joke about them, bwahaha :) Seriously, I regretted that no designers attended, but it's not very surprising. TechDays are rather developer-oriented (something I hope will change in the future, and Microsoft will open up and invite more designers soon). &lt;/p&gt; &lt;p class="gslb_rsbPParagraph"&gt;I had a lot of positive feedback after the session, but if any of you who saw me want to comment more (and I definitely accept negative comments, don't be shy), feel free to use the feedback or to email me. &lt;/p&gt; &lt;p class="gslb_rsbPParagraph"&gt;Thanks to all who attended, and thanks for the nice words! &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120672"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120672" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/120672.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/03/20/techdays-08-talked-about-wpf-and-now-back-home.aspx</guid>
            <pubDate>Thu, 20 Mar 2008 22:02:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/120672.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/03/20/techdays-08-talked-about-wpf-and-now-back-home.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/120672.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/120672.aspx</trackback:ping>
        </item>
        <item>
            <title>#Mix08 Session: Nerd + Art: Ten Code Snippets to Empower Your Inner Artist</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/03/07/mix08-session-nerd--art-ten-code-snippets-to-empower.aspx</link>
            <description>&lt;ul&gt;
    &lt;li&gt;Robbie Ingebretsen: "This is a creative experiment" "We didn't always look into best practices"&lt;/li&gt;
    &lt;li&gt;Talks about the Integrator role.&lt;/li&gt;
    &lt;li&gt;Nathan Dunlap: "Designers should probably use Visual Studio more" "It's a great tool to dive into the code,check the SDK..."&lt;/li&gt;
    &lt;li&gt;Snippets are distributed as a Snippet installer VSI file.
    &lt;ul&gt;
        &lt;li&gt;Silverlight code snippets&lt;/li&gt;
        &lt;li&gt;WPF code snippets&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;By the way, check Dr WPF's snippets too!&lt;/li&gt;
    &lt;li&gt;To access the Nerd snippets in the code, simply type "nerd". Displays the list of all snippets.&lt;/li&gt;
    &lt;li&gt;Custom Control to display image sequences, provided for free. "ImageSequencer.cs"
    &lt;ul&gt;
        &lt;li&gt;Propery SourceFolder, points tothe folder containing the sequence of images&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Snippet "Storyboard" allows to modify values of a storyboard from code.&lt;/li&gt;
    &lt;li&gt;Snippet "Sound player" provides a lightweight way to play sounds.&lt;/li&gt;
    &lt;li&gt;Value converters
    &lt;ul&gt;
        &lt;li&gt;Provides a default implementation&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Creating a new custom panel
    &lt;ul&gt;
        &lt;li&gt;WrapPanel in Silverlight&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;DeepZoom snippet for Silverlight, looks pretty cool!
    &lt;ul&gt;
        &lt;li&gt;Provides easy zooming into a DeepZoom prepared image.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Get the Snippets at &lt;a href="http://www.blendables.com"&gt;www.blendables.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120364"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120364" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/120364.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/03/07/mix08-session-nerd--art-ten-code-snippets-to-empower.aspx</guid>
            <pubDate>Fri, 07 Mar 2008 06:12:53 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/120364.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/03/07/mix08-session-nerd--art-ten-code-snippets-to-empower.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/120364.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/120364.aspx</trackback:ping>
        </item>
        <item>
            <title>MIX08: Keynote with Steve Ballmer and Guy Kawasaki (1)</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/03/06/mix08-keynote-with-steve-ballmer-and-guy-kawasaki-1.aspx</link>
            <description>&lt;ul&gt;
    &lt;li&gt;The keynote is transmitted live at &lt;a title="http://tinyurl.com/2x63xc" href="http://tinyurl.com/2x63xc"&gt;http://tinyurl.com/2x63xc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120315"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120315" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/120315.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/03/06/mix08-keynote-with-steve-ballmer-and-guy-kawasaki-1.aspx</guid>
            <pubDate>Thu, 06 Mar 2008 08:08:19 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/120315.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/03/06/mix08-keynote-with-steve-ballmer-and-guy-kawasaki-1.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/120315.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/120315.aspx</trackback:ping>
        </item>
        <item>
            <title>#MIX08 Session: Creating Rich, Dynamic User Interfaces with Silverlight 2</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/03/06/mix08-session-creating-rich-dynamic-user-interfaces-with-silverlight-2.aspx</link>
            <description>&lt;p&gt;Karen Corby&lt;/p&gt;
&lt;p&gt;NB: Code will be posted on &lt;a href="http://scorbs.com/work"&gt;Karen's blog&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;User control, motivations
    &lt;ul&gt;
        &lt;li&gt;Re-use&lt;/li&gt;
        &lt;li&gt;Modularization&lt;/li&gt;
        &lt;li&gt;Encapsulation&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Same concept as in WPF&lt;/li&gt;
    &lt;li&gt;No more need for "InitializeFromXaml()", good news. The "XAML hook" is done for us by the framework&lt;/li&gt;
    &lt;li&gt;KeyDown Event can now be handled on any component level, not just the application level like before&lt;/li&gt;
    &lt;li&gt;Databinding in Silverlight, how much sweeter can it get. Can't wait to play with it... Wondering how well the MVVM pattern can be used in Silverlight.&lt;/li&gt;
    &lt;li&gt;Oh yeah, flow layout is probably even sweeter than databinding.&lt;/li&gt;
    &lt;li&gt;Accessibility of controls
    &lt;ul&gt;
        &lt;li&gt;Keyboard tab, focus, directional navigation&lt;/li&gt;
        &lt;li&gt;Screen reader support based on UIAutomation (check Mark Rideout's videos)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Custom Control, motivations
    &lt;ul&gt;
        &lt;li&gt;Separate the visual from the logic&lt;/li&gt;
        &lt;li&gt;For default L&amp;amp;F
        &lt;ul&gt;
            &lt;li&gt;add generic.xaml file&lt;/li&gt;
            &lt;li&gt;set BuildAction to Resource&lt;/li&gt;
            &lt;li&gt;remove CustomTool build action&lt;/li&gt;
            &lt;li&gt;add ResourceDictionary with default L&amp;amp;F for the Custom control.&lt;/li&gt;
        &lt;/ul&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Styling
    &lt;ul&gt;
        &lt;li&gt;Tweek minor visual characteristics&lt;/li&gt;
        &lt;li&gt;Major difference to WPF: Styles can only be written once.&lt;/li&gt;
        &lt;li&gt;Other difference: Application level styles not supported ("global styles")&lt;/li&gt;
        &lt;li&gt;No "BasedOn" styles for the moment&lt;/li&gt;
        &lt;li&gt;No support for triggers in SL 2, maybe later&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Skinning
    &lt;ul&gt;
        &lt;li&gt;Replaces the look of the control&lt;/li&gt;
        &lt;li&gt;No big difference to WPF&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;DependencyProperties available in Silverlight (obviously)&lt;/li&gt;
    &lt;li&gt;Parts model:
    &lt;ul&gt;
        &lt;li&gt;How to structure your controls&lt;/li&gt;
        &lt;li&gt;Keep clear separation between logic and visuals&lt;/li&gt;
        &lt;li&gt;Explicit contract about how logic and visuals interact&lt;/li&gt;
        &lt;li&gt;It's a recommended pattern, but not enforced by the framework&lt;/li&gt;
        &lt;li&gt;Will be supported by Blend 2.5&lt;/li&gt;
        &lt;li&gt;Element Part
        &lt;ul&gt;
            &lt;li&gt;For example Scrollbar's UpButton, DownButton, Thumb, Track&lt;/li&gt;
        &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;State Part
        &lt;ul&gt;
            &lt;li&gt;Stroyboard&lt;/li&gt;
            &lt;li&gt;Defines transitions between control's states&lt;/li&gt;
            &lt;li&gt;Control logic defines state machine starting and stopping the storyboards&lt;/li&gt;
        &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;TemplatePart attribute for the Control class&lt;/li&gt;
        &lt;li&gt;Parts are defined in the ControlTemplate&lt;/li&gt;
        &lt;li&gt;Not everything in the ControlTemplate needs to be a Part&lt;/li&gt;
        &lt;li&gt;OnApplyTemplate overriden in the control's code behind&lt;/li&gt;
        &lt;li&gt;Use GetTemplateChild method to get the various parts inside the ControlTemplate&lt;/li&gt;
        &lt;li&gt;Control logic handles the state transition&lt;/li&gt;
        &lt;li&gt;This model will transition back to WPF eventually&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Directional Navigation
    &lt;ul&gt;
        &lt;li&gt;Uses HitTest API to determine the target control&lt;/li&gt;
        &lt;li&gt;Allows using keyboard arrows to navigate between controls (not just using tabs)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;DynamicResource not supported in SL2&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120309"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120309" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/120309.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/03/06/mix08-session-creating-rich-dynamic-user-interfaces-with-silverlight-2.aspx</guid>
            <pubDate>Thu, 06 Mar 2008 06:16:57 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/120309.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/03/06/mix08-session-creating-rich-dynamic-user-interfaces-with-silverlight-2.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/120309.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/120309.aspx</trackback:ping>
        </item>
        <item>
            <title>Silverlight: Downloading the Beta 1 bits</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2008/03/06/silverlight-downloading-the-beta-1-bits.aspx</link>
            <description>&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Silverlight 2 Beta 1 runtime&lt;/strong&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://www.microsoft.com/silverlight/resources/installationFiles.aspx?v=2.0" title="http://www.microsoft.com/silverlight/resources/installationFiles.aspx?v=2.0"&gt;Download&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Microsoft Silverlight Tools Beta 1 for Visual Studio 2008&lt;br /&gt;
    &lt;/strong&gt;(contains the SDK)
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en" title="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en"&gt;Download&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Microsoft Expression Studio 2 Beta&lt;br /&gt;
    &lt;/strong&gt;(contains Blend 2, Design 2, Web 2, Media 2 and Encoder 2)
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=BBE5A30B-E95E-4B0D-A7C6-6367CDD2A9EF&amp;amp;displaylang=en" title="http://www.microsoft.com/downloads/details.aspx?FamilyId=BBE5A30B-E95E-4B0D-A7C6-6367CDD2A9EF&amp;amp;displaylang=en"&gt;Download&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Microsoft Expression Blend 2.5 March 2008 Preview&lt;br /&gt;
    &lt;/strong&gt;(can be installed side by side with Blend 2)
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=32A3E916-E681-4955-BC9F-CFBA49273C7C&amp;amp;displaylang=en" title="http://www.microsoft.com/downloads/details.aspx?FamilyId=32A3E916-E681-4955-BC9F-CFBA49273C7C&amp;amp;displaylang=en"&gt;Download&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Microsoft® Silverlight™ 2 Software Development Kit Beta 1 Documentation&lt;/strong&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=1840CAB5-196C-4264-B55D-562242A72625&amp;amp;displaylang=en" title="http://www.microsoft.com/downloads/details.aspx?FamilyID=1840CAB5-196C-4264-B55D-562242A72625&amp;amp;displaylang=en"&gt;Download&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Source Code and Unit Tests for Silverlight 2 Beta 1 Controls&lt;/strong&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EA93DD89-3AF2-4ACB-9CF4-BFE01B3F02D4&amp;amp;displaylang=en" title="http://www.microsoft.com/downloads/details.aspx?FamilyId=EA93DD89-3AF2-4ACB-9CF4-BFE01B3F02D4&amp;amp;displaylang=en"&gt;Download&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120290"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120290" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/120290.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2008/03/06/silverlight-downloading-the-beta-1-bits.aspx</guid>
            <pubDate>Thu, 06 Mar 2008 03:49:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/120290.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2008/03/06/silverlight-downloading-the-beta-1-bits.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/120290.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/120290.aspx</trackback:ping>
        </item>
    </channel>
</rss>