<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Snowball - The Blog - C#</title>
    <link>http://www.snowball.be/</link>
    <description>Gill's blog on .net programming</description>
    <language>en-us</language>
    <copyright>Gill Cleeren</copyright>
    <lastBuildDate>Mon, 12 Apr 2010 21:54:13 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>gillcleeren@gmail.com</managingEditor>
    <webMaster>gillcleeren@gmail.com</webMaster>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=d51b8012-035f-487f-96ff-9701f97fb9ad</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,d51b8012-035f-487f-96ff-9701f97fb9ad.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,d51b8012-035f-487f-96ff-9701f97fb9ad.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=d51b8012-035f-487f-96ff-9701f97fb9ad</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After beta’s and one RC release, starting today, we can get our hands on Visual Studio
2010 RTM. Just hours ago, Microsoft held a keynote on the release of their flagship
IDE, Visual Studio 2010. This release coincides with the release of .NET 4.0 and of
course Silverlight 4, which has its official launch event tomorrow. This marks probably
the largest release ever for developers from Microsoft.
</p>
        <p align="center">
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_2.png" width="290" height="244" /></a></p>
        <p>
          <strong>I need it badly</strong>
        </p>
        <p>
Visual Studio 2010 is like honey, developers swarm to it. It’s understandable that
you want to get your hands on the bits. Where can you get them?<br />
If you’re an MSDN subscriber, you’re in luck, as you can get all the bits from the
MSDN subscription site. (<a href="http://msdn.microsoft.com/subscriptions">http://msdn.microsoft.com/subscriptions</a>)<br />
If you are not, you have the following options:
</p>
        <ul>
          <li>
Download a trial: <a title="http://www.microsoft.com/visualstudio/en-us/download" href="http://www.microsoft.com/visualstudio/en-us/download">http://www.microsoft.com/visualstudio/en-us/download</a></li>
          <li>
Download the fully functional Express editions: <a title="free Express editions" href="http://www.microsoft.com/express/">free
Express editions</a></li>
          <li>
Team Foundation Server 2010 trial: <a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;displaylang=en</a></li>
        </ul>
        <p align="center">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb.png" width="307" height="256" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <strong>Why you need it</strong>
        </p>
        <p>
If I wanted to make a list of reasons why you should be upgrading to Visual Studio
2010, I would be up all night I think. Since it’s quite late already, I’m going to
make an all-but-complete list with my top features that make Visual Studio 2010 an
not-to-miss upgrade. (For the complete list – you’re warned, it’s very complete –
take a look here: <a title="http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx">http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx</a>)
</p>
        <p>
          <strong>
            <em>The IDE looks really stylish!</em>
          </strong>
        </p>
        <p>
Upon opening Visual Studio 2010 for the first time, you’ll immediately notice that
something happened… Something big. No longer the traditional grey interface, but an
exciting new look for the place you spend all your development hours in. <strong>Built
entirely in WPF</strong>, the new shell offers plenty of extension points so you can
make it feel even more like home.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_4.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_1.png" width="446" height="310" />
          </a>
        </p>
        <p>
          <strong>
            <em>New IDE features</em>
          </strong>
        </p>
        <p>
I personally like the <strong>Navigate To</strong> function a lot (I blogged about
it yesterday here: <a title="Visual Studio 2010 Tip- Navigate to functionality" href="http://www.snowball.be/2010/04/11/Visual+Studio+2010+Tip+Navigate+To+Functionality.aspx">Visual
Studio 2010 Tip- Navigate to functionality</a>). Another one I like is the <strong>zoom
in/out</strong> we can now do in the code editor. This is a real life-saver when doing
demos on stage or when showing someone some code. Simply keep CTRL key pressed and
rotate that mouse wheel of yours. For people who work on <strong>multiple monitors</strong>,
Visual Studio now supports this much better!
</p>
        <p>
Some other nice features:
</p>
        <ul>
          <li>
Improved IntelliSense 
</li>
          <li>
Highlight references 
</li>
          <li>
Stub generation</li>
        </ul>
        <p>
          <strong>
            <em>New framework and languages</em>
          </strong>
        </p>
        <p>
Visual Studio 2010 comes packed with new releases. 
</p>
        <ul>
          <li>
Silverlight 4 :) More on this at the launch event tomorrow! 
</li>
          <li>
C# 4.0 adds interesting new features to the language (more <a href="http://msdn.microsoft.com/en-us/library/bb383815(VS.100).aspx" target="_blank">here</a>).
Also VB.net developers aren’t left outside in the cold, their favorite language gets
an upgrade as well to <a href="http://msdn.microsoft.com/en-us/vbasic/default.aspx" target="_blank">Visual
Basic 2010</a>. 
</li>
          <li>
ASP.NET 4.0 as well as MVC 2 are born! If you want to get an overview of what’s new,
download my talk of DevDays 2010 <a href="http://www.snowball.be/2010/04/04/DevDays+2010+Session+Slides+And+Demos.aspx" target="_blank">here</a>.
Most striking new features in WebForms 4 are client IDs, control over ViewState and
more control over the HTML that’s being rendered. 
</li>
          <li>
            <a href="http://msdn.microsoft.com/en-us/data/default.aspx" target="_blank">Entity
Framework</a> makes a jump and goes straight to v4. 
</li>
          <li>
WCF and WF both get an upgrade to v4 as well. 
</li>
          <li>
TFS installation gets really simple using <a href="http://www.snowball.be/2009/10/20/Setting+Up+TFS+Basic+With+Visual+Studio+2010.aspx" target="_blank">TFS
Basic</a>. 
</li>
          <li>
F# is now available for the functional programming needs. 
</li>
          <li>
SharePoint templates! 
</li>
        </ul>
        <p>
          <strong>I want more</strong>
        </p>
        <p>
Not enough reading material for your brain? A free ebook is made available “Moving
to Visual Studio 2010” <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=12a6de81-c633-4f2c-a35f-cea6fe772712" target="_blank">here</a>.
</p>
        <p>
          <strong>Warnings here!</strong>
        </p>
        <p>
Something to watch out for: currently, the Windows Phone 7 tools do not work with
the RTM version of 2010. Read more on this here: <a title="http://forums.silverlight.net/forums/t/175181.aspx" href="http://forums.silverlight.net/forums/t/175181.aspx">http://forums.silverlight.net/forums/t/175181.aspx</a> 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_8.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_3.png" width="699" height="82" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d51b8012-035f-487f-96ff-9701f97fb9ad" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Developers cheering all over the world: Visual Studio 2010 is here!</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,d51b8012-035f-487f-96ff-9701f97fb9ad.aspx</guid>
      <link>http://www.snowball.be/2010/04/12/Developers+Cheering+All+Over+The+World+Visual+Studio+2010+Is+Here.aspx</link>
      <pubDate>Mon, 12 Apr 2010 21:54:13 GMT</pubDate>
      <description>&lt;p&gt;
After beta’s and one RC release, starting today, we can get our hands on Visual Studio
2010 RTM. Just hours ago, Microsoft held a keynote on the release of their flagship
IDE, Visual Studio 2010. This release coincides with the release of .NET 4.0 and of
course Silverlight 4, which has its official launch event tomorrow. This marks probably
the largest release ever for developers from Microsoft.
&lt;/p&gt;
&lt;p align=center&gt;
&amp;nbsp;&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_6.png"&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://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_2.png" width=290 height=244&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;I need it badly&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Visual Studio 2010 is like honey, developers swarm to it. It’s understandable that
you want to get your hands on the bits. Where can you get them?&lt;br&gt;
If you’re an MSDN subscriber, you’re in luck, as you can get all the bits from the
MSDN subscription site. (&lt;a href="http://msdn.microsoft.com/subscriptions"&gt;http://msdn.microsoft.com/subscriptions&lt;/a&gt;)&lt;br&gt;
If you are not, you have the following options:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Download a trial: &lt;a title=http://www.microsoft.com/visualstudio/en-us/download href="http://www.microsoft.com/visualstudio/en-us/download"&gt;http://www.microsoft.com/visualstudio/en-us/download&lt;/a&gt; 
&lt;li&gt;
Download the fully functional Express editions: &lt;a title="free Express editions" href="http://www.microsoft.com/express/"&gt;free
Express editions&lt;/a&gt; 
&lt;li&gt;
Team Foundation Server 2010 trial: &lt;a title=http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;amp;displaylang=en href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;amp;displaylang=en&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align=center&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_2.png"&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://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb.png" width=307 height=256&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Why you need it&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
If I wanted to make a list of reasons why you should be upgrading to Visual Studio
2010, I would be up all night I think. Since it’s quite late already, I’m going to
make an all-but-complete list with my top features that make Visual Studio 2010 an
not-to-miss upgrade. (For the complete list – you’re warned, it’s very complete –
take a look here: &lt;a title=http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx href="http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;The IDE looks really stylish!&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Upon opening Visual Studio 2010 for the first time, you’ll immediately notice that
something happened… Something big. No longer the traditional grey interface, but an
exciting new look for the place you spend all your development hours in. &lt;strong&gt;Built
entirely in WPF&lt;/strong&gt;, the new shell offers plenty of extension points so you can
make it feel even more like home.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_4.png"&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://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_1.png" width=446 height=310&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;New IDE features&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I personally like the &lt;strong&gt;Navigate To&lt;/strong&gt; function a lot (I blogged about
it yesterday here: &lt;a title="Visual Studio 2010 Tip- Navigate to functionality" href="http://www.snowball.be/2010/04/11/Visual+Studio+2010+Tip+Navigate+To+Functionality.aspx"&gt;Visual
Studio 2010 Tip- Navigate to functionality&lt;/a&gt;). Another one I like is the &lt;strong&gt;zoom
in/out&lt;/strong&gt; we can now do in the code editor. This is a real life-saver when doing
demos on stage or when showing someone some code. Simply keep CTRL key pressed and
rotate that mouse wheel of yours. For people who work on &lt;strong&gt;multiple monitors&lt;/strong&gt;,
Visual Studio now supports this much better!
&lt;/p&gt;
&lt;p&gt;
Some other nice features:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Improved IntelliSense 
&lt;li&gt;
Highlight references 
&lt;li&gt;
Stub generation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;New framework and languages&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Visual Studio 2010 comes packed with new releases. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Silverlight 4 :) More on this at the launch event tomorrow! 
&lt;li&gt;
C# 4.0 adds interesting new features to the language (more &lt;a href="http://msdn.microsoft.com/en-us/library/bb383815(VS.100).aspx" target=_blank&gt;here&lt;/a&gt;).
Also VB.net developers aren’t left outside in the cold, their favorite language gets
an upgrade as well to &lt;a href="http://msdn.microsoft.com/en-us/vbasic/default.aspx" target=_blank&gt;Visual
Basic 2010&lt;/a&gt;. 
&lt;li&gt;
ASP.NET 4.0 as well as MVC 2 are born! If you want to get an overview of what’s new,
download my talk of DevDays 2010 &lt;a href="http://www.snowball.be/2010/04/04/DevDays+2010+Session+Slides+And+Demos.aspx" target=_blank&gt;here&lt;/a&gt;.
Most striking new features in WebForms 4 are client IDs, control over ViewState and
more control over the HTML that’s being rendered. 
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/en-us/data/default.aspx" target=_blank&gt;Entity Framework&lt;/a&gt; makes
a jump and goes straight to v4. 
&lt;li&gt;
WCF and WF both get an upgrade to v4 as well. 
&lt;li&gt;
TFS installation gets really simple using &lt;a href="http://www.snowball.be/2009/10/20/Setting+Up+TFS+Basic+With+Visual+Studio+2010.aspx" target=_blank&gt;TFS
Basic&lt;/a&gt;. 
&lt;li&gt;
F# is now available for the functional programming needs. 
&lt;li&gt;
SharePoint templates! 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;I want more&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Not enough reading material for your brain? A free ebook is made available “Moving
to Visual Studio 2010” &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=12a6de81-c633-4f2c-a35f-cea6fe772712" target=_blank&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Warnings here!&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Something to watch out for: currently, the Windows Phone 7 tools do not work with
the RTM version of 2010. Read more on this here: &lt;a title=http://forums.silverlight.net/forums/t/175181.aspx href="http://forums.silverlight.net/forums/t/175181.aspx"&gt;http://forums.silverlight.net/forums/t/175181.aspx&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_8.png"&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://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_3.png" width=699 height=82&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d51b8012-035f-487f-96ff-9701f97fb9ad" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,d51b8012-035f-487f-96ff-9701f97fb9ad.aspx</comments>
      <category>.net</category>
      <category>.NET 4</category>
      <category>C#</category>
      <category>Silverlight</category>
      <category>sl4</category>
      <category>VS2010</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=ef13b49b-5a96-46f3-9247-972831e008a0</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,ef13b49b-5a96-46f3-9247-972831e008a0.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,ef13b49b-5a96-46f3-9247-972831e008a0.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=ef13b49b-5a96-46f3-9247-972831e008a0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
From <a href="http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/">Channel9</a>,
one of the most interesting vids at the moment!
</p>
        <p>
          <iframe src="http://channel9.msdn.com/posts/Charles/409364/player/" frameborder="0" width="320" scrolling="no" height="325">
          </iframe>
          <br />
          <a href="http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/">C# 4.0:
Meet the Design Team</a>
        </p>
        <p>
          <span id="ctl00_MainPlaceHolder_Starter_BodyLabel">
            <em>What's the C# team up to these
days? Who's on the C# 4.0 design team, anyway? With the looming problem of manycore
facing developers now and certainly in the near future (to a much greater extent -
programming for 80 core (asymmetric to boot) processors, anyone?). I thought
it was time to find out what Anders et al are working on to get a clear sense of C#'s
near (and not-so-near) future so I asked if I could come to one of their design meetings
to have an informal chat (are we ever formal on C9?) and meet the people behind
the next iteration of the most popular .NET programming language.<br /><br />
There are some new faces (and some old ones (not in terms of age, mind you ). As expected,
merging functional constructs into imperative C# are still top of mind for the C#
design team. Here, you'll meet some new programming language gurus and some old
time Niners (you'll recall the great Eric Lippert. He was in fact the very first developer
we interviewed for C9 back in 2004 - even though his was not the first interview posted,
it was the first one shot and the one where Lenn, Jeff, Scoble, Bryn and myself looked
at each other and said "wow, we are on to something here!".).<br /><br />
C# 4.0 will contain many new features that will help developers be, yeah, you've heard
it before, more productive. There's also some very interesting work going on with
adding dynamic constructs to the language, which is of course very interesting given
the static nature of the C# language. 
<br /><br />
In this video you will not get any specific details since the C# team wants to reveal
exactly what they've done at PDC 2008. That said, you'll still get a very clear sense
of what they've been up to and where they're taking the language.<br /><br />
It's always a pleasure to chat with Anders and team. I think you'll enjoy this
one. On a personal note, I was coming down with a cold during this interview so please
excuse the asking of the same question more than once (though in a different context).
Oh, the joys of cold medicine. You know, the same stuff Lenn was on when he conceived
the idea of Channel 9 several years ago.</em>
          </span>
        </p>
        <p>
          <br />
 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ef13b49b-5a96-46f3-9247-972831e008a0" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>C# 4.0 first impressions</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,ef13b49b-5a96-46f3-9247-972831e008a0.aspx</guid>
      <link>http://www.snowball.be/2008/07/24/C+40+First+Impressions.aspx</link>
      <pubDate>Thu, 24 Jul 2008 09:03:51 GMT</pubDate>
      <description>&lt;p&gt;
From &lt;a href="http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/"&gt;Channel9&lt;/a&gt;,
one of the most interesting vids at the moment!
&lt;/p&gt;
&lt;p&gt;
&lt;iframe src="http://channel9.msdn.com/posts/Charles/409364/player/" frameborder=0 width=320 scrolling=no height=325&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;a href="http://channel9.msdn.com/posts/Charles/C-40-Meet-the-Design-Team/"&gt;C# 4.0:
Meet the Design Team&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span id=ctl00_MainPlaceHolder_Starter_BodyLabel&gt;&lt;em&gt;What's the C# team up to these
days? Who's on the C# 4.0 design team, anyway? With the looming problem of manycore
facing developers now and certainly in the near future (to a much greater extent -
programming for 80 core (asymmetric to boot)&amp;nbsp;processors, anyone?). I thought
it was time to find out what Anders et al are working on to get a clear sense of C#'s
near (and not-so-near) future so I asked if I could come to one of their design meetings
to have an informal chat (are we ever formal on C9?)&amp;nbsp;and meet the people behind
the next iteration of the most popular .NET programming language.&lt;br&gt;
&lt;br&gt;
There are some new faces (and some old ones (not in terms of age, mind you ). As expected,
merging functional constructs into imperative C# are still top of mind for the C#
design team. Here, you'll meet some new programming language&amp;nbsp;gurus and some old
time Niners (you'll recall the great Eric Lippert. He was in fact the very first developer
we interviewed for C9 back in 2004 - even though his was not the first interview posted,
it was the first one shot and the one where Lenn, Jeff, Scoble, Bryn and myself looked
at each other and said "wow, we are on to something here!".).&lt;br&gt;
&lt;br&gt;
C# 4.0 will contain many new features that will help developers be, yeah, you've heard
it before, more productive. There's also some very interesting work going on with
adding dynamic constructs to the language, which is of course very interesting given
the static nature of the C# language. 
&lt;br&gt;
&lt;br&gt;
In this video you will not get any specific details since the C# team wants to reveal
exactly what they've done at PDC 2008. That said, you'll still get a very clear sense
of what they've been up to and where they're taking the language.&lt;br&gt;
&lt;br&gt;
It's always&amp;nbsp;a pleasure to chat with Anders and team. I think you'll enjoy this
one. On a personal note, I was coming down with a cold during this interview so please
excuse the asking of the same question more than once (though in a different context).
Oh, the joys of cold medicine. You know, the same stuff Lenn was on when he conceived
the idea of Channel 9 several years ago.&lt;/em&gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ef13b49b-5a96-46f3-9247-972831e008a0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,ef13b49b-5a96-46f3-9247-972831e008a0.aspx</comments>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=180c2e79-16b9-42ee-b444-6c10f7074c70</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,180c2e79-16b9-42ee-b444-6c10f7074c70.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,180c2e79-16b9-42ee-b444-6c10f7074c70.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=180c2e79-16b9-42ee-b444-6c10f7074c70</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Earlier this month, Microsoft posted the first "blueprint" of a series that will help
developers more easily build Software plus Services (S+S) applications. The project
was released as a project on <a href="http://www.codeplex.com">CodePlex</a>, the open-source
community from Microsoft.
</p>
        <p>
This first blueprint is intended for developing S+S applications with Outlook 2007.
Microsoft plans to offer blueprints for other office business applications, e-commerce,
media/community and mobility. 
</p>
        <p>
The Outlook + Services Blueprint download -- available as a single file or two files
-- includes the S+S framework, source code, Outlook Plus Services add-in library,
workflow and other guidance. The blueprint is designed to help developers expose data
and integrate services into Outlook 2007. It requires Outlook 2007, SQL Server Express
2005 and Visual Studio 2005.
</p>
        <p>
Within the S+S framework, developers open up an Outlook + Services Visual Studio project
and learn how to extend the e-mail app based on the guidance provided in Overview,
Workflow and Detail tabs (a step-by-step walk-through). Microsoft expects to distribute
a "more sophisticated" developer example, dubbed "My eBay," which features eBay Web
services, a custom ribbon interface and HTML from an eBay page, in short order.
</p>
        <p>
          <font size="1">Source: reddevnews.</font>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=180c2e79-16b9-42ee-b444-6c10f7074c70" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Microsoft taking Software plus Services very serious</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,180c2e79-16b9-42ee-b444-6c10f7074c70.aspx</guid>
      <link>http://www.snowball.be/2007/12/09/Microsoft+Taking+Software+Plus+Services+Very+Serious.aspx</link>
      <pubDate>Sun, 09 Dec 2007 14:02:11 GMT</pubDate>
      <description>&lt;p&gt;
Earlier this month, Microsoft posted the first "blueprint" of a series that will help
developers more easily build Software plus Services (S+S) applications. The project
was released as a project on &lt;a href="http://www.codeplex.com"&gt;CodePlex&lt;/a&gt;, the open-source
community from Microsoft.
&lt;/p&gt;
&lt;p&gt;
This first blueprint is intended for developing S+S applications with Outlook 2007.
Microsoft plans to offer blueprints for other office business applications, e-commerce,
media/community and mobility. 
&lt;/p&gt;
&lt;p&gt;
The Outlook + Services Blueprint download -- available as a single file or two files
-- includes the S+S framework, source code, Outlook Plus Services add-in library,
workflow and other guidance. The blueprint is designed to help developers expose data
and integrate services into Outlook 2007. It requires Outlook 2007, SQL Server Express
2005 and Visual Studio 2005.
&lt;/p&gt;
&lt;p&gt;
Within the S+S framework, developers open up an Outlook + Services Visual Studio project
and learn how to extend the e-mail app based on the guidance provided in Overview,
Workflow and Detail tabs (a step-by-step walk-through). Microsoft expects to distribute
a "more sophisticated" developer example, dubbed "My eBay," which features eBay Web
services, a custom ribbon interface and HTML from an eBay page, in short order.
&lt;/p&gt;
&lt;p&gt;
&lt;font size=1&gt;Source: reddevnews.&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=180c2e79-16b9-42ee-b444-6c10f7074c70" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,180c2e79-16b9-42ee-b444-6c10f7074c70.aspx</comments>
      <category>.net</category>
      <category>.net 3.5</category>
      <category>C#</category>
      <category>Microsoft</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=cb3acc53-2e58-4e80-b9cc-6947ecf4275b</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,cb3acc53-2e58-4e80-b9cc-6947ecf4275b.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,cb3acc53-2e58-4e80-b9cc-6947ecf4275b.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=cb3acc53-2e58-4e80-b9cc-6947ecf4275b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Finally, we can present the RTM version of the Visual Studio 2008 RTM Training Kit.<br />
This kit is a real goldmine, containing presentations, Hands-On-Labs, demo's... on
all topics related to Visual Studio 2008.<br />
Now you only have to find about 5 days to complete all that's in here, and you're
set!
</p>
        <p>
          <img src="http://www.snowball.be/content/binary/rtmtrainingkit1.jpg" border="0" />
        </p>
        <p>
          <br />
All the info is below:<br /><em>The Visual Studio 2008 Training Kit has been updated for the RTM and has been
released on the Microsoft.com Download Center for anyone to download and use. </em></p>
        <p>
          <em>The Visual Studio 2008 Training Kit contains a full 5-days of technical content
including <b>20</b><b></b><b>hands-on labs</b>, <b>28 presentations</b>, and <b>20
scripted demos</b>.   The technologies covered in the kit include: 
LINQ, C# 3.0, VB 9, WCF, WF, WPF, Windows CardSpace, Silverlight, ASP.NET Ajax, .NET
Compact Framework 3.5, VSTO 3.0, Visual Studio Team System, and Team Foundation Server.  </em>
        </p>
        <p>
          <em>Originally developed for early adoption work with ISVs, it is now available to
all.  </em>
        </p>
        <p>
          <em>You can download the entire training kit from the download center here:  </em>
          <a href="http://go.microsoft.com/?linkid=7602397">
            <em>http://go.microsoft.com/?linkid=7602397</em>
          </a>
          <em>. 
The kit is just over 120MB compressed.   After downloading the kit, simply
run the installation program to extract the contents to your local machine. 
Once the installation process is complete, you will see an HTML page that allows you
to navigate through the contents of the kit.  </em>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=cb3acc53-2e58-4e80-b9cc-6947ecf4275b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Visual Studio 2008 RTM Training Kit</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,cb3acc53-2e58-4e80-b9cc-6947ecf4275b.aspx</guid>
      <link>http://www.snowball.be/2007/11/20/Visual+Studio+2008+RTM+Training+Kit.aspx</link>
      <pubDate>Tue, 20 Nov 2007 21:51:38 GMT</pubDate>
      <description>&lt;p&gt;
Finally, we can present the RTM version of the Visual Studio 2008 RTM Training Kit.&lt;br&gt;
This kit is a real goldmine, containing presentations, Hands-On-Labs, demo's... on
all topics related to Visual Studio 2008.&lt;br&gt;
Now you only have to find about 5 days to complete all that's in here, and you're
set!
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.snowball.be/content/binary/rtmtrainingkit1.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
All the info is below:&lt;br&gt;
&lt;em&gt;The Visual Studio 2008 Training Kit has been updated for the RTM and has been
released on the Microsoft.com Download Center for anyone to download and use. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;The Visual Studio 2008 Training Kit contains a full 5-days of technical content
including &lt;b&gt;20&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;hands-on labs&lt;/b&gt;, &lt;b&gt;28 presentations&lt;/b&gt;, and &lt;b&gt;20
scripted demos&lt;/b&gt;.&amp;nbsp;&amp;nbsp; The technologies covered in the kit include:&amp;nbsp;
LINQ, C# 3.0, VB 9, WCF, WF, WPF, Windows CardSpace, Silverlight, ASP.NET Ajax, .NET
Compact Framework 3.5, VSTO 3.0, Visual Studio Team System, and Team Foundation Server.&amp;nbsp; &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Originally developed for early adoption work with ISVs, it is now available to
all.&amp;nbsp; &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;You can download the entire training kit from the download center here:&amp;nbsp; &lt;/em&gt;&lt;a href="http://go.microsoft.com/?linkid=7602397"&gt;&lt;em&gt;http://go.microsoft.com/?linkid=7602397&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&amp;nbsp;
The kit is just over 120MB compressed.&amp;nbsp;&amp;nbsp; After downloading the kit, simply
run the installation program to extract the contents to your local machine.&amp;nbsp;
Once the installation process is complete, you will see an HTML page that allows you
to navigate through the contents of the kit.&amp;nbsp;&amp;nbsp;&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=cb3acc53-2e58-4e80-b9cc-6947ecf4275b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,cb3acc53-2e58-4e80-b9cc-6947ecf4275b.aspx</comments>
      <category>.net</category>
      <category>.net 3.5</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Silverlight</category>
      <category>Visual Studio.net</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=eeb58571-8855-44c0-a2fc-3c7f50445364</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,eeb58571-8855-44c0-a2fc-3c7f50445364.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,eeb58571-8855-44c0-a2fc-3c7f50445364.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=eeb58571-8855-44c0-a2fc-3c7f50445364</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <br />
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439014738_6d8859b9af_m%5B2%5D%5B2%5D.jpg" atomicselection="true">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439014738_6d8859b9af_m%5B2%5D_thumb.jpg" align="left" border="0" />
          </a>
          <br />
          <br />
I just got home of DevDays 2007 (and now already I'm typing a report...), and man,
it was a fun ride! If you weren't there, you did miss out on  great sessions
and great fun (and great little pies... still don't know what was in them, but
they tasted great). In my DevDays report, I want to highlight some of my personal
'fav-moments', some nice little tools I learned about and show some of my pics I took
(maybe you're on them somewhere...).<br /><br />
(I wasn't at the pre-conference, so no report on March 27th...)<br /></p>
        <p>
 
</p>
        <p>
          <br />
          <strong>Day 1<br /></strong>6.00 am. Very early... Must get up to avoid traffic jams. 
<br />
7.30 am. Breakfast at ICC Gent, avoided all traffic jams (jeej). 
<br /><br />
The day began like usual with an opening keynote, given this year by David Chappell.
He went over what he thought would be the most important Microsoft-related innovations
for 2007. These included the .net 3.0 framework, Forefront, Security Center and Longhorn
Server. 
<br /><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010505_3772ed6d56_m%5B1%5D%5B2%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010505_3772ed6d56_m%5B1%5D_thumb.jpg" align="left" border="0" /></a>  <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013480_db4deacd3f_m%5B1%5D%5B2%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013480_db4deacd3f_m%5B1%5D_thumb.jpg" align="right" border="0" /></a><br />
After that, I went to the Blend demo, given by Carrie Longson. She showed some XAML
effects created easily using Expression Blend. After that, she showed some impressive
applications created with WPF. One of these was an application created by Microsoft
UK for the Londen Underground (the tube). It was able to give an overview of the trains,
where they were, all rendered in real time. It was even possible to rotate the viewport,
completely in 3D. The application, while very impressive, took only 3 weeks to create
with WPF.<br /><br />
Jeff Prosise is the speaker I saw the most sessions of (you'll find him again later
in this article). The first one on Asynchronous ASP.net was impressive. He showed
how to (and how not to) program threaded ASP.net. Doing this correctly can create
a vast scalability for your web application. I hope to find some time to blog
on some of his thoughts on this subject (hold your breath).<br /><br />
Up next was the first of 2 sessions of Raj Pai. This first one on Linq (.net Language
Intergrated Query framework) explained in depth the possibilities of this extension
of C# that will be included in C# 3.0. While the syntax on some moments still feels
weird (it's odd to see Select and From in your C# code sometimes, even if you've been
playing with it for some time), the session was very clear.<br /><br />
Like I said, Jeff Prosise would come back in this article. The next session I attended,
Optimizing and Extending ASP.net Ajax, was very helpful for me. I've doing quite a
lot of Ajax in the last months, but 1 thing I didn't use a lot yet, is the Ajax Client
Script Library (the javascript). This library is not documented very well at this
moment, so it's sometimes hard to figure out what you can do with it, and even harder
how to do it. Luckily, this <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010021_6e9ecc5538_m%5B1%5D%5B2%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010021_6e9ecc5538_m%5B1%5D_thumb.jpg" align="left" border="0" /></a> session
cleared some clouds in my brain, so I think I'm on my way with it now!<br /><br />
The last session of the day, Hardcore debugging of .net applications given by "Mr
Type Fast" Ingo Rammer was easily the one where I learned the most. I didn't know
what to expect from it, but the demo's of this session literally blew me away.<br />
He started by showing how to use <a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" target="_blank">WinDbg</a> (WinDebug).
While this is not a .net debugger, it can be used (loading in some DLLs) to debug
running (production) .net applications. I actually never knew this was possible. This
program is not the most user friendly, but it can be a real time saver. It does however
use a lot of commands, and so I hope this session will certainly be included with
the DVD.<br />
He went on showing some other interesting tools. <a href="http://support.microsoft.com/kb/286350" target="_blank">ADPlus</a> is
another tool (command line) that can be used to create a memory dump on any PC, that
can afterwards be analyzed using WinDbg. Using these 2 can give you insight on why
an application crashes or hangs.<br />
The last shown tool was <a href="http://www.acorns.com.au/hawkeye/" target="_blank">HawkEye</a>.
The free version can be used to inspect any .net forms application: you can see all
properties of any control (name, color...) on a forms application. 
<br /><br />
After that, Visug, the Belgian Visug Studio User Group (of which I'm the webmaster),
organised a bowling in Gent. We started playing at 9 pm, but due to a blackout in
a large part of Gent, we were forced to stop playing around 10 pm.<br /><br />
1 am: in bed ;-)<br /><br /><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015134_1cee8fcce5_m%5B1%5D%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015134_1cee8fcce5_m%5B1%5D.jpg" border="0" /></a>  <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015314_86caa6e840_m%5B1%5D%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015314_86caa6e840_m%5B1%5D.jpg" border="0" /></a>  <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011563_b7adb4ddc1_m%5B1%5D%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011563_b7adb4ddc1_m%5B1%5D.jpg" border="0" /></a>  <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D.jpg" border="0" /></a> <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D%5B3%5D.jpg" atomicselection="true"></a><br /><br /><strong>Day 2<br /></strong><br />
6.00 am... you know the story...
</p>
        <p>
The day started with the second session of Raj Pai, that closely intergrated with
the session of day 1. In this session, he explained the new features of C# 3.0 (of
which I'll be blogging in the coming weeks): extension methods, automatic properties,
how LINQ works internally... 
<br /><br />
I was lucky enough to be able to attend 2 "sidemeetings" with 2 speakers, namely Raj
Pai and Jeff Prosise. 
<br />
At 11am, I met in person with Raj on the top floor, and together with some collegues
of Ordina, we got to ask him questions on LINQ and C# 3.0 . 
<br />
He explained in detail what went on behind the scenes when you run a LINQ statement.
Seeing this more or less eased me! On my question on how you could debug a LINQ statement,
he advised me to break the statement into pieces, and add a ToList() to each part.
That way, you can easily see what each part of the statement actually returns.<br /><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D%5B6%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D_thumb.jpg" align="left" border="0" /></a><br />
Another question we asked was the following: how do you see LINQ in a DAL? Sadly,
on this topic, they're actually still working themselves, and he promised that some
white papers will be available soon.<br /><br />
I also asked his vision on the "over-use" of extension methods in C# 3.0. Using these
methods, you can for example write your own System.String.In() method. Personally,
I think this will make code review very hard. Raj agreed with me, and said there will
be some patterns and practices available later on when to use these methods.<br /><br />
Due to this private session, I was unable to attend the session given by my collegue
Kurt Claeys. I did hear nothing but positive comments afterwards, so Kurt: congrats!<br /><br />
The next session I attended was again one given by Jeff Prosise, this time on WPF/E. 
<br />
This session was closely followed by my second private session, this time with Jeff.
During this session, we talked on the future of the 3 web technologies Microsoft is
currently using/developing: ASP.net 2.0, WPF/E and ASP.net Ajax. He thinks that all
these will intergrate more in the future, certainly WPF/E and ASP.net Ajax.<br /><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010095_410c8b1afb_m%5B1%5D%5B2%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010095_410c8b1afb_m%5B1%5D_thumb.jpg" align="right" border="0" /></a><br />
He said that what we have seen so far of WPF/E is only a fraction of what it
will really become. He believes that on some aspects, the final version will be better
that it's competitor, Adobe Flash. He seemed very excited on some features that will
be announced at Mix '07, including the final name. This session was not only fun,
it gave a great insight in what web technology is evolving too.<br /><br />
In the last session of the day, Ingo Rammer explained some more of on profiling .net
applications using CLR profiler and SQL profiler.<br /><br />
After this session, I went home, tired, but happy!<br />
Great job guys!<br /><br /><strong>The Ordina booth<br /></strong>My company Ordina was Platinum Sponsor of this event, and so we had a very
large booth. On the following pics, you can see more of this.<br /><br /><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013696_176941e1aa_m%5B1%5D%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013696_176941e1aa_m%5B1%5D.jpg" border="0" /></a>  <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010443_d6fd922e2b_m%5B1%5D%5B1%5D.jpg" atomicselection="true"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010443_d6fd922e2b_m%5B1%5D.jpg" border="0" /></a><br /><br />
All my DevDays 2007 pics can be found here: <a title="http://www.flickr.com/photos/gillcleeren/sets/72157600035030532/" href="http://www.flickr.com/photos/gillcleeren/sets/72157600035030532/">http://www.flickr.com/photos/gillcleeren/sets/72157600035030532/</a><br /><br /><strong>What I brought home...<br /></strong>Het Computerwinkeltje, Belgium's largest computer book store, was also here,
and they organised some book signing sessions. I just bought the new book on Powershell,
Manning's Windows Powershell In Action , writte by Bruce Payette. I got my copy
signed! 
<br /><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/payette_cover150%5B1%5D%5B2%5D.jpg" atomicselection="true"></a><br />
I also brought home the new book from Apress on LINQ.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=eeb58571-8855-44c0-a2fc-3c7f50445364" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>DevDays 2007: the final verdict</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,eeb58571-8855-44c0-a2fc-3c7f50445364.aspx</guid>
      <link>http://www.snowball.be/2007/03/29/DevDays+2007+The+Final+Verdict.aspx</link>
      <pubDate>Thu, 29 Mar 2007 20:47:47 GMT</pubDate>
      <description>&lt;p&gt;
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439014738_6d8859b9af_m%5B2%5D%5B2%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439014738_6d8859b9af_m%5B2%5D_thumb.jpg" align=left border=0&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
I just got home of DevDays 2007 (and now already I'm typing a report...), and man,
it was a fun ride! If you weren't there, you did miss out on&amp;nbsp; great sessions
and&amp;nbsp;great fun (and great little pies... still don't know what was in them, but
they tasted great). In my DevDays report, I want to highlight some of my personal
'fav-moments', some nice little tools I learned about and show some of my pics I took
(maybe you're on them somewhere...).&lt;br&gt;
&lt;br&gt;
(I wasn't at the pre-conference, so no report on March 27th...)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;strong&gt;Day 1&lt;br&gt;
&lt;/strong&gt;6.00 am. Very early... Must get up to avoid traffic jams. 
&lt;br&gt;
7.30 am. Breakfast at ICC Gent, avoided all traffic jams (jeej). 
&lt;br&gt;
&lt;br&gt;
The day began like usual with an opening keynote, given this year by David Chappell.
He went over what he thought would be the most important Microsoft-related innovations
for 2007. These included the .net 3.0 framework, Forefront, Security Center and Longhorn
Server. 
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010505_3772ed6d56_m%5B1%5D%5B2%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010505_3772ed6d56_m%5B1%5D_thumb.jpg" align=left border=0&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013480_db4deacd3f_m%5B1%5D%5B2%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013480_db4deacd3f_m%5B1%5D_thumb.jpg" align=right border=0&gt;&lt;/a&gt; 
&lt;br&gt;
After that, I went to the Blend demo, given by Carrie Longson. She showed some XAML
effects created easily using Expression Blend. After that, she showed some impressive
applications created with WPF. One of these was an application created by Microsoft
UK for the Londen Underground (the tube). It was able to give an overview of the trains,
where they were, all rendered in real time. It was even possible to rotate the viewport,
completely in 3D. The application, while very impressive, took only 3 weeks to create
with WPF.&lt;br&gt;
&lt;br&gt;
Jeff Prosise is the speaker I saw the most sessions of (you'll find him again later
in this article). The first one on Asynchronous ASP.net was impressive. He showed
how to (and how not to) program threaded ASP.net. Doing this correctly can create
a vast scalability for your web application.&amp;nbsp;I hope to find some time to blog
on some of his thoughts on this subject (hold your breath).&lt;br&gt;
&lt;br&gt;
Up next was the first of 2 sessions of Raj Pai. This first one on Linq (.net Language
Intergrated Query framework) explained in depth the possibilities of this extension
of C# that will be included in C# 3.0. While the syntax on some moments still feels
weird (it's odd to see Select and From in your C# code sometimes, even if you've been
playing with it for some time), the session was very clear.&lt;br&gt;
&lt;br&gt;
Like I said, Jeff Prosise would come back in this article. The next session I attended,
Optimizing and Extending ASP.net Ajax, was very helpful for me. I've doing quite a
lot of Ajax in the last months, but 1 thing I didn't use a lot yet, is the Ajax Client
Script Library (the javascript). This library is not documented very well at this
moment, so it's sometimes hard to figure out what you can do with it, and even harder
how to do it. Luckily, this &lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010021_6e9ecc5538_m%5B1%5D%5B2%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010021_6e9ecc5538_m%5B1%5D_thumb.jpg" align=left border=0&gt;&lt;/a&gt; session
cleared some clouds in my brain, so I think I'm on my way with it now!&lt;br&gt;
&lt;br&gt;
The last session of the day, Hardcore debugging of .net applications given by "Mr
Type Fast" Ingo Rammer was easily the one where I learned the most. I didn't know
what to expect from it, but the demo's of this session literally blew me away.&lt;br&gt;
He started by showing how to use &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" target=_blank&gt;WinDbg&lt;/a&gt; (WinDebug).
While this is not a .net debugger, it can be used (loading in some DLLs) to debug
running (production) .net applications. I actually never knew this was possible.&amp;nbsp;This
program is not the most user friendly, but it can be a real time saver. It does however
use a lot of commands, and so I hope this session will certainly be included with
the DVD.&lt;br&gt;
He went on showing some other interesting tools. &lt;a href="http://support.microsoft.com/kb/286350" target=_blank&gt;ADPlus&lt;/a&gt; is
another tool (command line) that can be used to create a memory dump on any PC, that
can afterwards be analyzed using WinDbg. Using these 2 can give you insight on why
an application crashes or hangs.&lt;br&gt;
The last shown tool was &lt;a href="http://www.acorns.com.au/hawkeye/" target=_blank&gt;HawkEye&lt;/a&gt;.
The free version can be used to inspect any .net forms application: you can see all
properties of any control (name, color...) on a forms application. 
&lt;br&gt;
&lt;br&gt;
After that, Visug, the Belgian Visug Studio User Group&amp;nbsp;(of which I'm the webmaster),
organised a bowling in Gent. We started playing at 9 pm, but due to a blackout in
a large part of Gent, we were forced to stop playing around 10 pm.&lt;br&gt;
&lt;br&gt;
1 am: in bed ;-)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015134_1cee8fcce5_m%5B1%5D%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015134_1cee8fcce5_m%5B1%5D.jpg" border=0&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015314_86caa6e840_m%5B1%5D%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439015314_86caa6e840_m%5B1%5D.jpg" border=0&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011563_b7adb4ddc1_m%5B1%5D%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011563_b7adb4ddc1_m%5B1%5D.jpg" border=0&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D.jpg" border=0&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D%5B3%5D.jpg" atomicselection="true"&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Day 2&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
6.00 am... you know the story...
&lt;/p&gt;
&lt;p&gt;
The day started with the second session of Raj Pai, that closely intergrated with
the session of day 1. In this session, he explained the new features of C# 3.0 (of
which I'll be blogging in the coming weeks): extension methods, automatic properties,
how LINQ works internally... 
&lt;br&gt;
&lt;br&gt;
I was lucky enough to be able to attend 2 "sidemeetings" with 2 speakers, namely Raj
Pai and Jeff Prosise. 
&lt;br&gt;
At 11am, I met in person with Raj on the top floor, and together with some collegues
of Ordina, we got to ask him questions on LINQ and C# 3.0 . 
&lt;br&gt;
He explained in detail what went on behind the scenes when you run a LINQ statement.
Seeing this more or less eased me! On my question on how you could debug a LINQ statement,
he advised me to break the statement into pieces, and add a ToList() to each part.
That way, you can easily see what each part of the statement actually returns.&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D%5B6%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439011367_a057603c44_m%5B1%5D_thumb.jpg" align=left border=0&gt;&lt;/a&gt; 
&lt;br&gt;
Another question we asked was the following: how do you see LINQ in a DAL? Sadly,
on this topic, they're actually still working themselves, and he promised that some
white papers will be available soon.&lt;br&gt;
&lt;br&gt;
I also asked his vision on the "over-use" of extension methods in C# 3.0. Using these
methods, you can for example write your own System.String.In() method. Personally,
I think this will make code review very hard. Raj agreed with me, and said there will
be some patterns and practices available later on when to use these methods.&lt;br&gt;
&lt;br&gt;
Due to this private session, I was unable to attend the session given by my collegue
Kurt Claeys. I did hear nothing but positive comments afterwards, so Kurt: congrats!&lt;br&gt;
&lt;br&gt;
The next session I attended was again one given by Jeff Prosise, this time on WPF/E. 
&lt;br&gt;
This session was closely followed by my second private session, this time with Jeff.
During this session, we talked on the future of the 3 web technologies Microsoft is
currently using/developing: ASP.net 2.0, WPF/E and ASP.net Ajax. He thinks that all
these will intergrate more in the future, certainly WPF/E and ASP.net Ajax.&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010095_410c8b1afb_m%5B1%5D%5B2%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010095_410c8b1afb_m%5B1%5D_thumb.jpg" align=right border=0&gt;&lt;/a&gt; 
&lt;br&gt;
He said that what we have seen so far&amp;nbsp;of WPF/E is only a fraction of what it
will really become. He believes that on some aspects, the final version will be better
that it's competitor, Adobe Flash. He seemed very excited on some features that will
be announced at Mix '07, including the final name. This session was not only fun,
it gave a great insight in what web technology is evolving too.&lt;br&gt;
&lt;br&gt;
In the last session of the day, Ingo Rammer explained some more of on profiling .net
applications using CLR profiler and SQL profiler.&lt;br&gt;
&lt;br&gt;
After this session, I went home, tired, but happy!&lt;br&gt;
Great job guys!&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;The Ordina booth&lt;br&gt;
&lt;/strong&gt;My company Ordina was Platinum Sponsor of this event, and so we had a very
large booth. On the following pics, you can see more of this.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013696_176941e1aa_m%5B1%5D%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439013696_176941e1aa_m%5B1%5D.jpg" border=0&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010443_d6fd922e2b_m%5B1%5D%5B1%5D.jpg" atomicselection="true"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/439010443_d6fd922e2b_m%5B1%5D.jpg" border=0&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
All my DevDays 2007 pics can be found here: &lt;a title=http://www.flickr.com/photos/gillcleeren/sets/72157600035030532/ href="http://www.flickr.com/photos/gillcleeren/sets/72157600035030532/"&gt;http://www.flickr.com/photos/gillcleeren/sets/72157600035030532/&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;What I brought home...&lt;br&gt;
&lt;/strong&gt;Het Computerwinkeltje, Belgium's largest computer book store, was also here,
and they organised some book signing sessions. I just bought the new book on Powershell,
Manning's Windows&amp;nbsp;Powershell In Action , writte by Bruce Payette. I got my copy
signed! 
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2007thefinalverdict_12A3F/payette_cover150%5B1%5D%5B2%5D.jpg" atomicselection="true"&gt;&lt;/a&gt;
&lt;br&gt;
I also brought home the new book from Apress on LINQ.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=eeb58571-8855-44c0-a2fc-3c7f50445364" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,eeb58571-8855-44c0-a2fc-3c7f50445364.aspx</comments>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Microsoft</category>
      <category>Visug</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=fe3981a0-5115-4bb8-88dc-f16abe9ab775</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,fe3981a0-5115-4bb8-88dc-f16abe9ab775.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,fe3981a0-5115-4bb8-88dc-f16abe9ab775.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=fe3981a0-5115-4bb8-88dc-f16abe9ab775</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <title>All you need to know to get the most out of Reflector 5</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,fe3981a0-5115-4bb8-88dc-f16abe9ab775.aspx</guid>
      <link>http://www.snowball.be/2007/03/25/All+You+Need+To+Know+To+Get+The+Most+Out+Of+Reflector+5.aspx</link>
      <pubDate>Sun, 25 Mar 2007 13:48:54 GMT</pubDate>
      <description>&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;Last year, I had the opportunity to have a
lunch meeting&amp;nbsp;with Lutz Roeder. I was able to talk with him about life at Microsoft
in Redmond, the creation of the Expression suite, and of course, Reflector, the very
popular .net class browser, used by every .net programmer that respects himself!&lt;br&gt;
Since a few weeks, the new version of this popular program was released, version 5
that is.&lt;br&gt;
In this article, I’ll discuss some of the new functions and also some of the lesser
known functions that were already in previous versions, so you can get the most out
of this magnificent tool.&lt;br style="mso-special-character: line-break"&gt;
&lt;br style="mso-special-character: line-break"&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font color=#000000&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Obtaining
the newest version&lt;/b&gt;
&lt;br&gt;
First, if you haven’t done already, download Reflector here: &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;a href="http://www.aisto.com/roeder/dotnet"&gt;&lt;font face=Calibri size=3&gt;http://www.aisto.com/roeder/dotnet&lt;/font&gt;&lt;/a&gt;&lt;font face=Calibri color=#000000 size=3&gt; or
if you have an old version installed, you can have it auto-update via the Help menu.
There are a great number of extensions available. These are put together on a codeplex
site that can be found here: &lt;/font&gt;&lt;a href="http://www.codeplex.com/reflectoraddins"&gt;&lt;font face=Calibri size=3&gt;http://www.codeplex.com/reflectoraddins&lt;/font&gt;&lt;/a&gt;&lt;font face=Calibri color=#000000 size=3&gt;.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Getting
started with version 5&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;One of the very handy new functions is the
possibility to register Reflector with Explorer. This way, Reflector will become the
default option for your DLL files.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;
&lt;br&gt;
&lt;img src="http://www.snowball.be/content/binary/112.jpg" border=0&gt;
&lt;br&gt;
&lt;/p&gt;
&gt; 
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;Double-clicking on any .net DLL will open
Reflector, and you’ll be able to see the contents of the assembly.&lt;br&gt;
To do this, open a command window, browse to the directory where you have extracted
Reflector and run the following command: Reflector /register .You should now get a
message that registering went OK, as can be seen on the image below.&lt;br&gt;
&lt;/font&gt;&lt;span style="mso-no-proof: yes"&gt;
&lt;/p&gt;
&gt; 
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;o:p&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;img src="http://www.snowball.be/content/binary/21.jpg" border=0&gt;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Assembly
lists&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;If like me, you use Reflector
a lot, perhaps on different projects, the list of assemblies in Reflector can become
very long. On top of that, the memory use is way higher (I noticed that on my PC,
don’t know if this is the case everywhere though) if you have more assemblies loaded
in the browser.&lt;br&gt;
&lt;br&gt;
There is however a feature that can help solve this annoyance: assembly lists. Press
CTRL-L or File &lt;/font&gt;&lt;span style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;à&lt;/span&gt;&lt;/span&gt;&lt;font face=Calibri&gt; Open
List to open the Assembly List Management dialog.&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;img src="http://www.snowball.be/content/binary/3.JPG" border=0&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;br&gt;
&lt;font face=Calibri color=#000000 size=3&gt;As you can see, I have a number of lists in
my window. Each of these corresponds to a list of DLLs that will be displayed in the
browser when loaded.&lt;br&gt;
You can create a new list, which is blank by default. In the browser, you can then
load assemblies that will only be displayed when that particular list is selected. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Code
URL&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;Something completely new in version 5 is the
so-called “Code URL” support. 
&lt;br&gt;
Simply select any item in the browser and press Ctrl-Alt-C. This will copy the code-URI
for that item in the following format (I selected System.Web.HttpCookie): code://System.Web:2.0.0.0:b03f5f7f11d50a3a/System.Web.HttpCookie. &lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;If you have Reflector installed, clicking
the following link in IE will fire up Reflector and immediately browse to the class/method/assembly
described in the URL. You can test it with the following link: &lt;/font&gt;&lt;a href="code://System.Web:2.0.0.0:b03f5f7f11d50a3a/System.Web.HttpCookie"&gt;&lt;font face=Calibri color=#0000ff size=3&gt;code://System.Web:2.0.0.0:b03f5f7f11d50a3a/System.Web.HttpCookie&lt;/font&gt;&lt;/a&gt;&lt;font face=Calibri color=#000000 size=3&gt;. 
&lt;br&gt;
This feature can also come in handy to pass a link to a colleague, even over MSN!&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font face=Calibri color=#000000 size=3&gt;.net
3.5 support&lt;/font&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;Even though it is still some months away,
Reflector already offers support for .net 3.5. You can enable it via the Options window.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;span style="mso-no-proof: yes"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&lt;img src="http://www.snowball.be/content/binary/4.JPG" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;Included in .net 3.5 are C# 3.0 and LINQ.
Reflector now includes full support for both of these.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;Also, it now offers support for anonymous
methods and nullable types.&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;The
new assembly browser&lt;br&gt;
&lt;/b&gt;The most important part of Reflector is of course the assembly browser itself.
While it was already fast, it didn’t include the possibility to open multiple windows
at the same time. That limitation is now gone! For example, you can open the Analyzer
and the Disassembler at the same time. 
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;img style="WIDTH: 617px; HEIGHT: 297px" height=410 src="http://www.snowball.be/content/binary/5.JPG" width=887 border=0&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Disassembler
and Analyzer&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;Both the Disassembler and the Analyzer got
some new functions in this new release.&lt;br&gt;
The Disassembler now has a “Expand Methods” function, that, like the name says, will
expand all functions right in the same window. 
&lt;br&gt;
&lt;/font&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="mso-no-proof: yes"&gt;&lt;/span&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&lt;img src="http://www.snowball.be/content/binary/6.JPG" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;The result:&lt;span style="mso-spacerun: yes"&gt;&lt;font face=Calibri color=#000000 size=3&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;font face=Calibri color=#000000 size=3&gt;&lt;img src="http://www.snowball.be/content/binary/7.JPG" border=0&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;The Analyzer, which you can find by right-clicking
an assembly, also has some new functions: Exposed by, Instantiated by and Assigned
by.&lt;br&gt;
These functions can greatly help you in funding where certain classes are used within
the assembly.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;span style="mso-spacerun: yes"&gt;&lt;font face=Calibri color=#000000 size=3&gt;&lt;img src="http://www.snowball.be/content/binary/8.JPG" border=0&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;font face=Calibri color=#000000 size=3&gt;BAML
Disassembling&lt;/font&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 10pt"&gt;
&lt;font face=Calibri color=#000000 size=3&gt;While Reflector is great, the extensions available
for it make it even greater.&lt;br&gt;
Personally, I do a lot of WPF, and it’s very handy to be able to read the XAML code
for things you encounter on the net. For this, we now have the BAML Disassembler.
You can read more on this extension here: &lt;/font&gt;&lt;a href="http://wpfwonderland.wordpress.com/2007/01/27/reflector-and-wpf-baml-disassembler-revisited/"&gt;&lt;font face=Calibri size=3&gt;http://wpfwonderland.wordpress.com/2007/01/27/reflector-and-wpf-baml-disassembler-revisited/&lt;/font&gt;&lt;/a&gt;&lt;font face=Calibri color=#000000 size=3&gt; &lt;/font&gt;
&lt;br&gt;
&lt;b style="mso-bidi-font-weight: normal"&gt;
&lt;br style="mso-special-character: line-break"&gt;
&lt;br style="mso-special-character: line-break"&gt;
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=fe3981a0-5115-4bb8-88dc-f16abe9ab775" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,fe3981a0-5115-4bb8-88dc-f16abe9ab775.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming tools</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=651c90d5-8290-4769-9311-1eee1a147173</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,651c90d5-8290-4769-9311-1eee1a147173.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,651c90d5-8290-4769-9311-1eee1a147173.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=651c90d5-8290-4769-9311-1eee1a147173</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <br />
          <br />
          <img alt="DinnerNow" src="http://www.dinnernow.net/images/DinnerNow/screenshots.png" />
          <br />
          <br />
DinnerNow.net V1.0 is released.<br /><br />
DinnerNow is a fictious marketplace where customers can order food from local restaurants
for delivery to their home or office. This sample is designed to demonstrate how you
can develop a connected application using several new Microsoft technologies. 
<br /><br />
The demo utilizes several technologies including: IIS7, ASP.NET Ajax Extensions, Linq,
Windows Communication Foundation, Windows Workflow Foundation, Windows Presentation
Foundation, Windows Powershell, and the .NET Compact Framework. 
<br /><br />
The DinnerNow sample application is now available for download. You can download the
entire DinnerNow sample code from CodePlex. 
<br /><br />
It's a free download, you can get it <a href="http://www.dinnernow.net/default.aspx?tabindex=0&amp;tabid=1">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=651c90d5-8290-4769-9311-1eee1a147173" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>DinnerNownet V1.0 Is Released</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,651c90d5-8290-4769-9311-1eee1a147173.aspx</guid>
      <link>http://www.snowball.be/2007/02/08/DinnerNownet+V10+Is+Released.aspx</link>
      <pubDate>Thu, 08 Feb 2007 23:11:55 GMT</pubDate>
      <description>&lt;p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img alt=DinnerNow src="http://www.dinnernow.net/images/DinnerNow/screenshots.png"&gt;
&lt;br&gt;
&lt;br&gt;
DinnerNow.net V1.0 is released.&lt;br&gt;
&lt;br&gt;
DinnerNow is a fictious marketplace where customers can order food from local restaurants
for delivery to their home or office. This sample is designed to demonstrate how you
can develop a connected application using several new Microsoft technologies. 
&lt;br&gt;
&lt;br&gt;
The demo utilizes several technologies including: IIS7, ASP.NET Ajax Extensions, Linq,
Windows Communication Foundation, Windows Workflow Foundation, Windows Presentation
Foundation, Windows Powershell, and the .NET Compact Framework. 
&lt;br&gt;
&lt;br&gt;
The DinnerNow sample application is now available for download. You can download the
entire DinnerNow sample code from CodePlex. 
&lt;br&gt;
&lt;br&gt;
It's a free download, you can get it &lt;a href="http://www.dinnernow.net/default.aspx?tabindex=0&amp;amp;tabid=1"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=651c90d5-8290-4769-9311-1eee1a147173" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,651c90d5-8290-4769-9311-1eee1a147173.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=c9f99a3b-44be-415a-935f-c23bb7f4cf7e</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,c9f99a3b-44be-415a-935f-c23bb7f4cf7e.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,c9f99a3b-44be-415a-935f-c23bb7f4cf7e.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=c9f99a3b-44be-415a-935f-c23bb7f4cf7e</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
For some of my latest projects, I have been using Enterprise Library for the Data
Access Layer (combined with other technologies).<br />
The week before Christmas, Tom Hollander, who leads development of the Enterprise
Library, announced the first CTP of the enterprise library V3.0.<br />
This weekend, I decided to do a first test drive with it, since a lot of features
that are now included (or will be included in the final release) seem very useful
in the creation of enterprise applications.<br />
In this tutorial, I will explain the Validation Application Block, a complete new
application block included in version 3 of the library. I’ll create some samples on
how you can use the Validation block and I’ll also create a custom validator.<br /><br /><b>Installation of the enterprise library V3.0<br /><br /></b>As you probably guessed, to start using the EntLib V3.0, you should install the
files. You can get the CTP from the all-new <a href="http://www.codeplex.com/entlib">CodePlex.com
site</a>, entirely devoted to Enterprise Library. You should of course have Visual
Studio 2005 installed on your PC. If you want to use the Guidance Packages, you’ll
also need the Guidance Automation Extensions. You can read any further requirements
in the Readme included in the download.<br />
When installed, you can find the library under Microsoft Patterns and Practices. As
you can see, one of the items there is the Enterprise Library Source Code Installer.
You can use this to create more than one “working copies” of the code included in
the EntLib. Run this, you’ll be needing this if you want to follow along with this
tutorial. I extracted the files to “C:\EntLib3Src”.<br />
In the folder, go to App Blocks à Src à Validation and open the project file you find
here (Validation.csproj). To finish the installation, build the project. You’ll now
have the DLLs needed to use the Validation Application Block.<br /><br /><b>OK, but what is this Validation block then?<br /></b><br />
Before I begin with the explanation on how to use the Validation Block, let me first
introduce you to what it actually does and where it can be used. 
<br /><br />
From Tom Hollander’s Blog:<br /><i>The Validation Application Block will include a comprehensive library of common
validation rules that apply to primitive data types. For example, we'll include rules
like string length, numeric range, date range, regular expressions and so on. However
your applications will typically deal with more complex objects such as Customers
or Orders (yes, here at Microsoft we assume every application is based on Northwind
;-), so while the built-in Validators should be great building blocks, you'll need
to do some additional work to specify how these primitive rules apply to more complex
objects. We plan on letting you do this in two primary ways: in configuration (which
is ideal if you want the rules to be easily changed after deployment), or in code
(which allows better encapsulation of rules and ensures the behavior won't change
unless the code does).<br /></i><br />
You can do validation using configuration, or you can do it in code. In this tutorial,
I’ll be focusing on the code-approach using attributes, mainly because there is no
support yet in the “Enterprise Library Configuration-tool” for this at this moment.<br /><br />
Included in the library are a number of often needed validations: “not null”, string
length, null… You can take a look at the included validators in the project you built
earlier under Validation à Validators. In the final release, more will be added. In
the first part of this tutorial, I’ll be using some of these to show you how it works.<br />
Of course, this collection will never be enough for full-scale enterprise applications,
so you have the possibility to write your own validators, as I’ll show later in this
tutorial.<br /><br /><b>I’m convinced about the VAB! How can I use it?<br /></b><br />
OK, now that you know what the block is about, let’s start using it. As said, in this
first part of my tutorial, I’ll use some of the included validators.<br /><br />
Create a new project in Visual Studio (I used a Winforms project and named it TestValidationApplicationBlock).
While you’re at it, add a class library to the solution (for example: BLCustomers).
This will be used as Business Layer in the sample application, and the objects in
this layer will need to be validated using the Validation Application Block.<br /><br />
In the class library, add a new class, Customer for example. Add 2 properties, name
and email for example (you can of course take whatever you want).<br /><br /><font face="Courier New">using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;<br />
using Microsoft.Practices.EnterpriseLibrary.Validation;<br />
using MyCustomValidators;</font></p>
        <p>
          <font face="Courier New">namespace BLCustomers<br />
{<br />
    public class Customer<br />
    {<br />
        private string name;<br />
        private string email;</font>
        </p>
        <p>
          <font face="Courier New">        public Customer()
{ }</font>
        </p>
        <p>
          <font face="Courier New">        public Customer(string
name, string email)<br />
        {<br />
            this.name = name;<br />
            this.email = email;<br />
        }<br /><br />
        public string Name<br />
        {<br />
            get { return name;
}<br />
            set { name = value;
}<br />
        }<br /><br />
        public string Email<br />
        {<br />
            get { return email;
}<br />
            set { email = value;
}<br />
        }<br />
   }<br />
}</font>
        </p>
        <p>
To enable validation on this class, we first need to reference the necessary DLLs
in this project. Right-click the “class library project” and select “Add reference”.
Browse to where you built the enterprise library validation project, and in the bin
folder, you’ll find 3 DLLs (Microsoft.Practices.EnterpriseLibrary.Common.dll, Microsoft.Practices.EnterpriseLibrary.Validation.dll
and Microsoft.Practices.ObjectBuilder.dll). Reference these, and also create a reference
to System.Configuration (which you’ll find under the .net tab). 
</p>
        <p>
Now, we want to add some validation on the name and email properties of the Customer
class. As said, we’ll use attributes on the properties. For example, we want the name
to be a string with a length greater than 0, and we want both the email and the name
to be not null. 
</p>
        <p>
For this, we add the NotNullValidator and StringLengthValidator as attributes. The
StringLengthValidator is overloaded: the first number stands for the lowerbound (we
don’t want it to have a length of zero) and the second is the upperbound.<br />
Notice the extra “using” to be able to use the Validator attributes. 
</p>
        <p>
          <font face="Courier New">using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;<br />
using Microsoft.Practices.EnterpriseLibrary.Validation;<br />
using MyCustomValidators;</font>
        </p>
        <p>
          <font face="Courier New">namespace BLCustomers<br />
{<br />
    public class Customer<br />
    {<br />
        private string name;<br />
        private string email;</font>
        </p>
        <p>
          <font face="Courier New">        public Customer()
{ }</font>
        </p>
        <p>
          <font face="Courier New">        public Customer(string
name, string email)<br />
        {<br />
            this.name = name;<br />
            this.email = email;<br />
        }</font>
        </p>
        <p>
          <font face="Courier New">        [NotNullValidator]<br />
        [StringLengthValidator(1, 100)]<br />
        public string Name<br />
        {<br />
            get { return name;
}<br />
            set { name = value;
}<br />
        }</font>
        </p>
        <p>
          <font face="Courier New">        [NotNullValidator]<br />
        public string Email<br />
        {<br />
            get { return email;
}<br />
            set { email = value;
}<br />
        }<br />
   }<br />
}</font>
        </p>
        <p>
At the moment, nothing actually triggers this validation yet. We can do this in several
ways. 
<br />
The simplest manner is using the Validation façade, included in the VAB, as shown
next.<br /><br />
I have created a very simple interface in the Forms project, where the user can enter
a name and email, as shown below. 
</p>
        <p>
          <img height="302" alt="1.JPG" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Ent.0HowtousetheValidationApplicationBlo_13345/clip_image001.jpg" width="301" border="0" />
          <br />
          <br />
In the click-event of the Validate button, the Customer instance is created. After
that, the ValidateCustomer method is called, which is a method in the business layer. <br /><br /><font face="Courier New">        private void
btnValidate_Click(object sender, EventArgs e)<br />
        {<br />
            Customer customer
= new Customer(txtName.Text, txtEmail.Text);</font></p>
        <p>
          <font face="Courier New">           
MessageBox.Show(customer.ValidateCustomer());<br />
        }</font>
        </p>
        <p>
          <br />
Now, let’s take a look at the actual validation. This is performed in the business
layer in the Customer class. Let’s look at the code.<br /><br /><font face="Courier New">        public string
ValidateCustomer()<br />
        {<br />
            ValidationResults
results = Validation.Validate(this);<br />
            string message
= string.Empty;</font></p>
        <p>
          <font face="Courier New">           
if (!results.IsValid)<br />
            {<br />
               
// if this is not valid, we'll loop through the results to create the message<br />
               
foreach (ValidationResult result in results)<br />
               
{<br />
                   
message += result.Message;<br />
               
}<br />
            }<br />
            if(message.Equals(string.Empty))<br />
            {<br />
               
message = "The input is valid!";<br />
            }<br />
            return message;<br />
        }</font>
        </p>
        <p>
The ValidationResults is a collection of ValidationResult objects. When the Validate
method is called, each attribute on every property is checked, and whenever one does
not validate correctly, a new instance of ValidationResult is added to the collection.
After the validation, you can loop through the collection to check the messages that
were added (sort of “exception-messages” that are added). If all validation goes well,
the IsValid method will return true. 
<br /><br /><br />
This concludes the first way of doing validation: we have not used the configuration
files (which is however done very often with the enterprise library). We did use attributes
and the Validate method to check if the object was valid. 
</p>
        <p>
I said “the first way”… That means there are more ways of performing validation without
using the configuration files? Yes, there is. In fact, this second method will look
more familiar if you have used previous versions of the enterprise library.<br />
Other application blocks often make use of Factory methods (like for example the data
access application block). The VAB also has a way of doing this.<br /><br /><font face="Courier New">public string ValidateCustomerWithFactoryMethod()<br />
        {<br />
            string message
= string.Empty;</font></p>
        <p>
          <font face="Courier New">           
IValidator&lt;Customer&gt; validatorCustomer = ValidationFactory.CreateValidator&lt;Customer&gt;();</font>
        </p>
        <p>
          <font face="Courier New">           
ValidationResults results = validatorCustomer.Validate(this);</font>
        </p>
        <p>
          <font face="Courier New">           
if (!results.IsValid)<br />
            {<br />
               
// if this is not valid, we'll loop through the results to create the message<br />
               
foreach (ValidationResult result in results)<br />
               
{<br />
                   
message += result.Message;<br />
               
}<br />
            }<br />
            if (message.Equals(string.Empty))<br />
            {<br />
               
message = "The input is valid!";<br />
            }<br />
            return message;<br />
        }</font>
        </p>
        <p>
          <br />
The result of the above code is the same. 
</p>
        <p>
          <b>Creating your own Validators</b>
        </p>
        <p>
Up until now, we have used only the built-in validators. Nevertheless these are useful,
a day will come (and if you’re developing large applications, it will come soon…)
that they will not suffice. Therefore, the architecture of the VAB is open so you
can easily create your own validators.<br />
In this second part, I’ll show you how.<br /><br />
Let’s assume that we want to create an email validator. For the sake of simplicity,
we’ll have it check if the string contains an “@” character. 
<br /><br />
To start, let’s create an additional project in our solution named MyCustomValidators.
Make this project a class library too. Add the same references as you did with the
BLCustomers project.<br /><br />
Create a class named EmailValidatorAttribute. This will be the attribute we’ll be
adding to our Customer object later on.<br />
For a class to be used as an attribute, it must among others things, inherit from
Attribute. We’ll have it inherit from ValidatorAttribute, that already inherits from
Attribute.<br /><br /><font face="Courier New">public sealed class EmailValidatorAttribute : ValidatorAttribute<br />
    {<br />
        public override IValidator CreateValidator()<br />
        {<br />
            return new EmailValidator(this.GetMessageTemplate());<br />
        }<br />
    }</font></p>
        <p>
Now, let’s create the actual EmailValidator class, which is where the actual validation
will take place. 
<br /><br />
    <font face="Courier New">public class EmailValidator : ValidatorBase<br />
    {<br />
        public EmailValidator()<br />
            : this(null)<br />
        { }</font></p>
        <p>
          <font face="Courier New">        public EmailValidator(string
messageTemplate)<br />
            : base(messageTemplate)<br />
        { }</font>
        </p>
        <p>
          <font face="Courier New">        protected override
void DoValidate(object target, ValidationResults validationResults)<br />
        {<br />
            try<br />
            {<br />
               
string converted = (string)target;<br />
               
if (!converted.Contains("@"))<br />
               
{<br />
                   
this.AddResult(validationResults, new ValidationResult(this.MessageTemplate));<br />
               
}<br />
            }<br />
            catch<br />
            {<br />
               
this.AddResult(validationResults, new ValidationResult(this.MessageTemplate));<br />
            }<br />
        }</font>
        </p>
        <p>
          <font face="Courier New">        protected override
string GetDefaultMessageTemplate()<br />
        {<br />
            return "This is
not a valid emailaddress since it does not contain the @ character";<br />
        }<br />
    }</font>
        </p>
        <p>
It inherits from ValidatorBase, and overrides 2 methods in particular: DoValidate
and GetDefaultMessageTemplate. 
<br />
In the DoValidate method, the actual validation is done: here, I have written a few
lines of simple code to check whether the passed string contains a “@”. 
<br />
If the string does not include this character (and is therefore not an email address),
a new instance of ValidationResult is added to the collection. The message that is
included here is the string returned from GetDefaultMessageTemplate.<br /><br />
Now, we can use our own attribute. Return to the Customer class and add the EmailValidator-attribute
to the email property.<br /><br /><font face="Courier New">        [NotNullValidator]<br />
        [StringLengthValidator(1, 100)]<br />
        public string Name<br />
        {<br />
            get { return name;
}<br />
            set { name = value;
}<br />
        }<br /></font><br />
When you run the application again, and you enter a string without a @ as email, you’ll
get a message window with the message you included in the EmailValidator class.<br /><br /><br />
I hope this will help you understand the Validation Application Block. If you have
any questions, please feel free to post them.<br /><br /></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c9f99a3b-44be-415a-935f-c23bb7f4cf7e" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Enterprise Library V3.0: How to use the Validation Application Block</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,c9f99a3b-44be-415a-935f-c23bb7f4cf7e.aspx</guid>
      <link>http://www.snowball.be/2007/01/07/Enterprise+Library+V30+How+To+Use+The+Validation+Application+Block.aspx</link>
      <pubDate>Sun, 07 Jan 2007 20:51:16 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
For some of my latest projects, I have been using Enterprise Library for the Data
Access Layer (combined with other technologies).&lt;br&gt;
The week before Christmas, Tom Hollander, who leads development of the Enterprise
Library, announced the first CTP of the enterprise library V3.0.&lt;br&gt;
This weekend, I decided to do a first test drive with it, since a lot of features
that are now included (or will be included in the final release) seem very useful
in the creation of enterprise applications.&lt;br&gt;
In this tutorial, I will explain the Validation Application Block, a complete new
application block included in version 3 of the library. I’ll create some samples on
how you can use the Validation block and I’ll also create a custom validator.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Installation of the enterprise library V3.0&lt;br&gt;
&lt;br&gt;
&lt;/b&gt;As you probably guessed, to start using the EntLib V3.0, you should install the
files. You can get the CTP from the all-new &lt;a href="http://www.codeplex.com/entlib"&gt;CodePlex.com
site&lt;/a&gt;, entirely devoted to Enterprise Library. You should of course have Visual
Studio 2005 installed on your PC. If you want to use the Guidance Packages, you’ll
also need the Guidance Automation Extensions. You can read any further requirements
in the Readme included in the download.&lt;br&gt;
When installed, you can find the library under Microsoft Patterns and Practices. As
you can see, one of the items there is the Enterprise Library Source Code Installer.
You can use this to create more than one “working copies” of the code included in
the EntLib. Run this, you’ll be needing this if you want to follow along with this
tutorial. I extracted the files to “C:\EntLib3Src”.&lt;br&gt;
In the folder, go to App Blocks à Src à Validation and open the project file you find
here (Validation.csproj). To finish the installation, build the project. You’ll now
have the DLLs needed to use the Validation Application Block.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;OK, but what is this Validation block then?&lt;br&gt;
&lt;/b&gt;
&lt;br&gt;
Before I begin with the explanation on how to use the Validation Block, let me first
introduce you to what it actually does and where it can be used. 
&lt;br&gt;
&lt;br&gt;
From Tom Hollander’s Blog:&lt;br&gt;
&lt;i&gt;The Validation Application Block will include a comprehensive library of common
validation rules that apply to primitive data types. For example, we'll include rules
like string length, numeric range, date range, regular expressions and so on. However
your applications will typically deal with more complex objects such as Customers
or Orders (yes, here at Microsoft we assume every application is based on Northwind
;-), so while the built-in Validators should be great building blocks, you'll need
to do some additional work to specify how these primitive rules apply to more complex
objects. We plan on letting you do this in two primary ways: in configuration (which
is ideal if you want the rules to be easily changed after deployment), or in code
(which allows better encapsulation of rules and ensures the behavior won't change
unless the code does).&lt;br&gt;
&lt;/i&gt;
&lt;br&gt;
You can do validation using configuration, or you can do it in code. In this tutorial,
I’ll be focusing on the code-approach using attributes, mainly because there is no
support yet in the “Enterprise Library Configuration-tool” for this at this moment.&lt;br&gt;
&lt;br&gt;
Included in the library are a number of often needed validations: “not null”, string
length, null… You can take a look at the included validators in the project you built
earlier under Validation à Validators. In the final release, more will be added. In
the first part of this tutorial, I’ll be using some of these to show you how it works.&lt;br&gt;
Of course, this collection will never be enough for full-scale enterprise applications,
so you have the possibility to write your own validators, as I’ll show later in this
tutorial.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;I’m convinced about the VAB! How can I use it?&lt;br&gt;
&lt;/b&gt;
&lt;br&gt;
OK, now that you know what the block is about, let’s start using it. As said, in this
first part of my tutorial, I’ll use some of the included validators.&lt;br&gt;
&lt;br&gt;
Create a new project in Visual Studio (I used a Winforms project and named it TestValidationApplicationBlock).
While you’re at it, add a class library to the solution (for example: BLCustomers).
This will be used as Business Layer in the sample application, and the objects in
this layer will need to be validated using the Validation Application Block.&lt;br&gt;
&lt;br&gt;
In the class library, add a new class, Customer for example. Add 2 properties, name
and email for example (you can of course take whatever you want).&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;using System;&lt;br&gt;
using System.Collections.Generic;&lt;br&gt;
using System.Text;&lt;br&gt;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;&lt;br&gt;
using Microsoft.Practices.EnterpriseLibrary.Validation;&lt;br&gt;
using MyCustomValidators;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;namespace BLCustomers&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Customer&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string name;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string email;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Customer()
{ }&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Customer(string
name, string email)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.name = name;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.email = email;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Name&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return name;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { name = value;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Email&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return email;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { email = value;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;/font&gt; 
&lt;p&gt;
To enable validation on this class, we first need to reference the necessary DLLs
in this project. Right-click the “class library project” and select “Add reference”.
Browse to where you built the enterprise library validation project, and in the bin
folder, you’ll find 3 DLLs (Microsoft.Practices.EnterpriseLibrary.Common.dll, Microsoft.Practices.EnterpriseLibrary.Validation.dll
and Microsoft.Practices.ObjectBuilder.dll). Reference these, and also create a reference
to System.Configuration (which you’ll find under the .net tab). 
&lt;p&gt;
Now, we want to add some validation on the name and email properties of the Customer
class. As said, we’ll use attributes on the properties. For example, we want the name
to be a string with a length greater than 0, and we want both the email and the name
to be not null. 
&lt;p&gt;
For this, we add the NotNullValidator and StringLengthValidator as attributes. The
StringLengthValidator is overloaded: the first number stands for the lowerbound (we
don’t want it to have a length of zero) and the second is the upperbound.&lt;br&gt;
Notice the extra “using” to be able to use the Validator attributes. 
&lt;p&gt;
&lt;font face="Courier New"&gt;using System;&lt;br&gt;
using System.Collections.Generic;&lt;br&gt;
using System.Text;&lt;br&gt;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;&lt;br&gt;
using Microsoft.Practices.EnterpriseLibrary.Validation;&lt;br&gt;
using MyCustomValidators;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;namespace BLCustomers&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Customer&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string name;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string email;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Customer()
{ }&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Customer(string
name, string email)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.name = name;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.email = email;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NotNullValidator]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [StringLengthValidator(1, 100)]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Name&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return name;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { name = value;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NotNullValidator]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Email&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return email;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { email = value;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;/font&gt; 
&lt;p&gt;
At the moment, nothing actually triggers this validation yet. We can do this in several
ways. 
&lt;br&gt;
The simplest manner is using the Validation façade, included in the VAB, as shown
next.&lt;br&gt;
&lt;br&gt;
I have created a very simple interface in the Forms project, where the user can enter
a name and email, as shown below. 
&lt;p&gt;
&lt;img height=302 alt=1.JPG src="http://www.snowball.be/content/binary/WindowsLiveWriter/Ent.0HowtousetheValidationApplicationBlo_13345/clip_image001.jpg" width=301 border=0&gt;
&lt;br&gt;
&lt;br&gt;
In the click-event of the Validate button, the Customer instance is created. After
that, the ValidateCustomer method is called, which is a method in the business layer.&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private void
btnValidate_Click(object sender, EventArgs e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Customer customer
= new Customer(txtName.Text, txtEmail.Text);&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
MessageBox.Show(customer.ValidateCustomer());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
&lt;br&gt;
Now, let’s take a look at the actual validation. This is performed in the business
layer in the Customer class. Let’s look at the code.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string
ValidateCustomer()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ValidationResults
results = Validation.Validate(this);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string message
= string.Empty;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if (!results.IsValid)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
// if this is not valid, we'll loop through the results to create the message&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
foreach (ValidationResult result in results)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
message += result.Message;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(message.Equals(string.Empty))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
message = "The input is valid!";&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return message;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
The ValidationResults is a collection of ValidationResult objects. When the Validate
method is called, each attribute on every property is checked, and whenever one does
not validate correctly, a new instance of ValidationResult is added to the collection.
After the validation, you can loop through the collection to check the messages that
were added (sort of “exception-messages” that are added). If all validation goes well,
the IsValid method will return true. 
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
This concludes the first way of doing validation: we have not used the configuration
files (which is however done very often with the enterprise library). We did use attributes
and the Validate method to check if the object was valid. 
&lt;p&gt;
I said “the first way”… That means there are more ways of performing validation without
using the configuration files? Yes, there is. In fact, this second method will look
more familiar if you have used previous versions of the enterprise library.&lt;br&gt;
Other application blocks often make use of Factory methods (like for example the data
access application block). The VAB also has a way of doing this.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;public string ValidateCustomerWithFactoryMethod()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string message
= string.Empty;&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
IValidator&amp;lt;Customer&amp;gt; validatorCustomer = ValidationFactory.CreateValidator&amp;lt;Customer&amp;gt;();&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
ValidationResults results = validatorCustomer.Validate(this);&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if (!results.IsValid)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
// if this is not valid, we'll loop through the results to create the message&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
foreach (ValidationResult result in results)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
message += result.Message;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (message.Equals(string.Empty))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
message = "The input is valid!";&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return message;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
&lt;br&gt;
The result of the above code is the same. 
&lt;p&gt;
&lt;b&gt;Creating your own Validators&lt;/b&gt; 
&lt;p&gt;
Up until now, we have used only the built-in validators. Nevertheless these are useful,
a day will come (and if you’re developing large applications, it will come soon…)
that they will not suffice. Therefore, the architecture of the VAB is open so you
can easily create your own validators.&lt;br&gt;
In this second part, I’ll show you how.&lt;br&gt;
&lt;br&gt;
Let’s assume that we want to create an email validator. For the sake of simplicity,
we’ll have it check if the string contains an “@” character. 
&lt;br&gt;
&lt;br&gt;
To start, let’s create an additional project in our solution named MyCustomValidators.
Make this project a class library too. Add the same references as you did with the
BLCustomers project.&lt;br&gt;
&lt;br&gt;
Create a class named EmailValidatorAttribute. This will be the attribute we’ll be
adding to our Customer object later on.&lt;br&gt;
For a class to be used as an attribute, it must among others things, inherit from
Attribute. We’ll have it inherit from ValidatorAttribute, that already inherits from
Attribute.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;public sealed class EmailValidatorAttribute : ValidatorAttribute&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override IValidator CreateValidator()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new EmailValidator(this.GetMessageTemplate());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
Now, let’s create the actual EmailValidator class, which is where the actual validation
will take place. 
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font face="Courier New"&gt;public class EmailValidator : ValidatorBase&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public EmailValidator()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : this(null)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { }&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public EmailValidator(string
messageTemplate)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : base(messageTemplate)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { }&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override
void DoValidate(object target, ValidationResults validationResults)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
string converted = (string)target;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if (!converted.Contains("@"))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.AddResult(validationResults, new ValidationResult(this.MessageTemplate));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.AddResult(validationResults, new ValidationResult(this.MessageTemplate));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override
string GetDefaultMessageTemplate()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "This is
not a valid emailaddress since it does not contain the @ character";&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt; 
&lt;p&gt;
It inherits from ValidatorBase, and overrides 2 methods in particular: DoValidate
and GetDefaultMessageTemplate. 
&lt;br&gt;
In the DoValidate method, the actual validation is done: here, I have written a few
lines of simple code to check whether the passed string contains a “@”. 
&lt;br&gt;
If the string does not include this character (and is therefore not an email address),
a new instance of ValidationResult is added to the collection. The message that is
included here is the string returned from GetDefaultMessageTemplate.&lt;br&gt;
&lt;br&gt;
Now, we can use our own attribute. Return to the Customer class and add the EmailValidator-attribute
to the email property.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NotNullValidator]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [StringLengthValidator(1, 100)]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string Name&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return name;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { name = value;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
When you run the application again, and you enter a string without a @ as email, you’ll
get a message window with the message you included in the EmailValidator class.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
I hope this will help you understand the Validation Application Block. If you have
any questions, please feel free to post them.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c9f99a3b-44be-415a-935f-c23bb7f4cf7e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,c9f99a3b-44be-415a-935f-c23bb7f4cf7e.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Enterprise Library</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=8499104e-80a3-45a9-85d7-465e2a76b418</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,8499104e-80a3-45a9-85d7-465e2a76b418.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,8499104e-80a3-45a9-85d7-465e2a76b418.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=8499104e-80a3-45a9-85d7-465e2a76b418</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Lately, I have been doing a lot of projects with Dotnetnuke. I first started using
it for my own use, but lately, I have used it to create some large portal sites for
some of our customers.<br /><br />
To start with, let me first introduce Dotnetnuke (DNN). The very first sentence on
the DNN homepage states the following: DotNetNuke<sup></sup>is an Open Source Framework
ideal for creating Enterprise Web Applications. 
</p>
        <p>
Let’s analyze this sentence, shall we? For starters, it’s a framework that you can
use out-of-the-box to set up a portal site. Included in the download package are a
number of modules that are sufficient to build an entire portal. Modules included
vary from a simple HTML module to an entire forum and an image gallery. Of course,
these are not enough to build an entire enterprise application. But DNN is very versatile,
and so for every need, new modules can be build.<br />
Since it’s an open-source project, it’s easy to tweak the framework where needed,
to meet the needs of the application you are designing with it.<br /><br />
Sometimes, if an web-application is needed very fast, nothing comes close to use a
portal framework like DNN. Lately, I have built the new Visug (Visual Studio User
Group: <a href="http://www.visug.be">www.visug.be</a> ) site with DNN. We needed a
site quickly, and DNN brought us the solution.<br />
Some people I met are skeptical towards the use of DNN. The main concerns are mostly
speed, reliability and not being in control. Personally, I admit that sometimes the
latter can be true. I have had some problems with included features that are hard
to override or undo. But since it’s open-source, I have been able to conquer them
all.<br /><br />
One little thing, though. DNN is written in VB.net (the core and the core modules,
that is). If you’re like me and you don’t program in VB.net, but still want to develop
modules, you can do so in C#! Since Visual Studio 2005, it’s not a problem to have
a solution with VB.net and C# files. Should you require to modify some core settings,
you’ll have to write your code in VB.net, however. 
</p>
        <p>
So, now that I have been using DNN for several large projects, I have decided
to share my knowledge on it via a series of articles.<br /><br />
In the first article, I will discuss how to install DNN and create the first
portal with it. In the articles to come, I will show you how to create a module, how
to skin the portal and how to extend DNN to use it to create full enterprise applications
where DNN is used in a SOA environment. Stay tuned!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8499104e-80a3-45a9-85d7-465e2a76b418" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Start of DotNetNuke articles</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,8499104e-80a3-45a9-85d7-465e2a76b418.aspx</guid>
      <link>http://www.snowball.be/2007/01/01/Start+Of+DotNetNuke+Articles.aspx</link>
      <pubDate>Mon, 01 Jan 2007 14:29:31 GMT</pubDate>
      <description>&lt;p&gt;
Lately, I have been doing a lot of projects with Dotnetnuke. I first started using
it for my own use, but lately, I have used it to create some large portal sites for
some of our customers.&lt;br&gt;
&lt;br&gt;
To start with, let me first introduce Dotnetnuke (DNN). The very first sentence on
the DNN homepage states the following: DotNetNuke&lt;sup&gt; &lt;/sup&gt;is an Open Source Framework
ideal for creating&amp;nbsp;Enterprise Web Applications. 
&lt;/p&gt;
&lt;p&gt;
Let’s analyze this sentence, shall we? For starters, it’s a framework that you can
use out-of-the-box to set up a portal site. Included in the download package are a
number of modules that are sufficient to build an entire portal. Modules included
vary from a simple HTML module to an entire forum and an image gallery. Of course,
these are not enough to build an entire enterprise application. But DNN is very versatile,
and so for every need, new modules can be build.&lt;br&gt;
Since it’s an open-source project, it’s easy to tweak the framework where needed,
to meet the needs of the application you are designing with it.&lt;br&gt;
&lt;br&gt;
Sometimes, if an web-application is needed very fast, nothing comes close to use a
portal framework like DNN. Lately, I have built the new Visug (Visual Studio User
Group: &lt;a href="http://www.visug.be"&gt;www.visug.be&lt;/a&gt; ) site with DNN. We needed a
site quickly, and DNN brought us the solution.&lt;br&gt;
Some people I met are skeptical towards the use of DNN. The main concerns are mostly
speed, reliability and not being in control. Personally, I admit that sometimes the
latter can be true. I have had some problems with included features that are hard
to override or undo. But since it’s open-source, I have been able to conquer them
all.&lt;br&gt;
&lt;br&gt;
One little thing, though. DNN is written in VB.net (the core and the core modules,
that is). If you’re like me and you don’t program in VB.net, but still want to develop
modules, you can do so in C#! Since Visual Studio 2005, it’s not a problem to have
a solution with VB.net and C# files. Should you require to modify some core settings,
you’ll have to write your code in VB.net, however. 
&lt;p&gt;
So, now that I have been using DNN for&amp;nbsp;several large projects, I have decided
to share my knowledge on&amp;nbsp;it via a series of articles.&lt;br&gt;
&lt;br&gt;
In the first article,&amp;nbsp;I will discuss how to install DNN and create the first
portal with it. In the articles to come, I will show you how to create a module, how
to skin the portal and how to extend DNN to use it to create full enterprise applications
where DNN is used in a SOA environment. Stay tuned!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8499104e-80a3-45a9-85d7-465e2a76b418" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,8499104e-80a3-45a9-85d7-465e2a76b418.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>DotNetNuke</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Since I didn't spend much time on the computer these last days, I hadn't noticed that
last Friday, December 22nd, Enterprise Library V3.0 CTP was released! Shame on me
;-)<br /><br />
If you don't know what EntLib is, here's a short description: <em>The patterns &amp;
practices Enterprise Library is a library of application blocks designed to assist
developers with common enterprise development challenges. Application blocks are a
type of guidance, provided as source code that can be used "as is," extended, or modified
by developers to use on enterprise development projects.<br /><br /></em>I used it myself in 2 projects, and I'm very pleased with it.<br />
In V3.0, some new features will (of course) be included, which will make it more complete.
No complete lists is available, but here's an overview.<br /></p>
        <p>
          <strong>Core</strong>
        </p>
        <ul>
          <li>
Source Code installer 
</li>
          <li>
Partial Trust Support 
</li>
          <li>
Strong-Named Binary Assemblies</li>
        </ul>
        <p>
          <strong>Validation Application Block</strong>
        </p>
        <ul>
          <li>
Core validation API 
</li>
          <li>
Minimal Validator Library 
</li>
          <li>
Attaching validators to objects via attributes 
</li>
          <li>
Attaching validators to objects via configuration 
</li>
          <li>
Not included yet (but in the works): Configuration tool support, complete validator
library, integration with ASP.NET, Windows Forms, WCF etc. 
</li>
        </ul>
        <p>
          <strong>Data Access Application Block</strong>
        </p>
        <ul>
          <li>
SQL Server Compact Edition Support 
</li>
          <li>
New Database.UpdateDatabase overload with updateBatchSize parameter</li>
        </ul>
        <p>
          <strong>Configuration Tool</strong>
        </p>
        <ul>
          <li>
Visual Studio IDE integration 
</li>
          <li>
AppSettings support 
</li>
          <li>
Encryption support</li>
        </ul>
        <p>
          <strong>Application Block Software Factory</strong>
        </p>
        <ul>
          <li>
Templates and recipes for creating application blocks and provider libraries 
</li>
          <li>
Preliminary documentation</li>
        </ul>
        <p>
          <strong>Strong Naming Guidance Package</strong>
        </p>
        <ul>
          <li>
Recipes to assist in strong-naming and updating [InternalsVisibleTo] across multiple
projects</li>
        </ul>
        <p>
If you're like me, you are gonna play with it already! So, download it <a href="http://www.codeplex.com/entlib/Release/ProjectReleases.aspx?ReleaseId=1368">here</a> on
the new Codeplex-site!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Enterprise Library v3.0 December CTP released</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd.aspx</guid>
      <link>http://www.snowball.be/2006/12/26/Enterprise+Library+V30+December+CTP+Released.aspx</link>
      <pubDate>Tue, 26 Dec 2006 11:36:34 GMT</pubDate>
      <description>&lt;p&gt;
Since I didn't spend much time on the computer these last days, I hadn't noticed that
last Friday, December 22nd, Enterprise Library V3.0 CTP was released! Shame on me
;-)&lt;br&gt;
&lt;br&gt;
If you don't know what EntLib is, here's a short description: &lt;em&gt;The patterns &amp;amp;
practices Enterprise Library is a library of application blocks designed to assist
developers with common enterprise development challenges. Application blocks are a
type of guidance, provided as source code that can be used "as is," extended, or modified
by developers to use on enterprise development projects.&lt;br&gt;
&lt;br&gt;
&lt;/em&gt;I used it myself in 2 projects, and I'm very pleased with it.&lt;br&gt;
In V3.0, some new features will (of course) be included, which will make it more complete.
No complete lists is available, but here's an overview.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Core&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Source Code installer 
&lt;li&gt;
Partial Trust Support 
&lt;li&gt;
Strong-Named Binary Assemblies&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Validation Application Block&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Core validation API 
&lt;li&gt;
Minimal Validator Library 
&lt;li&gt;
Attaching validators to objects via attributes 
&lt;li&gt;
Attaching validators to objects via configuration 
&lt;li&gt;
Not included yet (but in the works): Configuration tool support, complete validator
library, integration with ASP.NET, Windows Forms, WCF etc. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Data Access Application Block&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
SQL Server Compact Edition Support 
&lt;li&gt;
New Database.UpdateDatabase overload with updateBatchSize parameter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Configuration Tool&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Visual Studio IDE integration 
&lt;li&gt;
AppSettings support 
&lt;li&gt;
Encryption support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Application Block Software Factory&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Templates and recipes for creating application blocks and provider libraries 
&lt;li&gt;
Preliminary documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Strong Naming Guidance Package&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Recipes to assist in strong-naming and updating [InternalsVisibleTo] across multiple
projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you're like me, you are gonna play with it already! So, download it &lt;a href="http://www.codeplex.com/entlib/Release/ProjectReleases.aspx?ReleaseId=1368"&gt;here&lt;/a&gt; on
the new Codeplex-site!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,03dc244a-79e7-4ec8-a1d8-fd9b378f7cbd.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=86bb2105-b9d2-4a0a-8a42-df292958b853</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,86bb2105-b9d2-4a0a-8a42-df292958b853.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,86bb2105-b9d2-4a0a-8a42-df292958b853.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=86bb2105-b9d2-4a0a-8a42-df292958b853</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The .NET Framework 3.0 has officially been released!  You can download the
.NET Framework 3.0 components here:
</p>
        <ul>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;displaylang=en">.NET
Framework 3.0 Runtime Components</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C2B1E300-F358-4523-B479-F53D234CDCCF&amp;displaylang=en">Windows
SDK for Vista and the .NET Framework 3.0</a>  
</li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5D61409E-1FA3-48CF-8023-E8F38E709BA6&amp;displaylang=en">Visual
Studio 2005 Extensions for .NET Framework 3.0 (Windows Workflow Foundation)</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D&amp;displaylang=en">Visual
Studio 2005 Extensions for .NET Framework 3.0 (WCF &amp; WPF), November 2006 CTP</a>
          </li>
        </ul>
        <p>
If you use Vista, they are installed by default.
</p>
        <p>
Th  If you have a previous CTP installed, please be sure to review the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AAE7FC63-D405-4E13-909F-E85AA9E66146&amp;displaylang=en">uninstall
instructions</a>. 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=86bb2105-b9d2-4a0a-8a42-df292958b853" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>.net 3.0 released</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,86bb2105-b9d2-4a0a-8a42-df292958b853.aspx</guid>
      <link>http://www.snowball.be/2006/11/07/net+30+Released.aspx</link>
      <pubDate>Tue, 07 Nov 2006 10:09:54 GMT</pubDate>
      <description>&lt;p&gt;
The .NET Framework 3.0 has officially been released!&amp;nbsp;&amp;nbsp;You can download the
.NET Framework 3.0 components&amp;nbsp;here:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en"&gt;.NET
Framework 3.0 Runtime Components&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C2B1E300-F358-4523-B479-F53D234CDCCF&amp;amp;displaylang=en"&gt;Windows
SDK for Vista&amp;nbsp;and the .NET Framework 3.0&lt;/a&gt;&amp;nbsp; 
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5D61409E-1FA3-48CF-8023-E8F38E709BA6&amp;amp;displaylang=en"&gt;Visual
Studio 2005 Extensions for .NET Framework 3.0 (Windows Workflow Foundation)&lt;/a&gt; 
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D&amp;amp;displaylang=en"&gt;Visual
Studio 2005 Extensions for .NET Framework 3.0 (WCF &amp;amp; WPF), November 2006 CTP&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
If you use Vista, they are installed by default.
&lt;/p&gt;
&lt;p&gt;
Th&amp;nbsp;&amp;nbsp;If you have a previous CTP installed, please be sure to review the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=AAE7FC63-D405-4E13-909F-E85AA9E66146&amp;amp;displaylang=en"&gt;uninstall
instructions&lt;/a&gt;.&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=86bb2105-b9d2-4a0a-8a42-df292958b853" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,86bb2105-b9d2-4a0a-8a42-df292958b853.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>WinFX</category>
      <category>WPF</category>
      <category>XAML</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=73481e3b-8cea-41a7-8ca1-e58f5d628d06</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,73481e3b-8cea-41a7-8ca1-e58f5d628d06.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,73481e3b-8cea-41a7-8ca1-e58f5d628d06.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=73481e3b-8cea-41a7-8ca1-e58f5d628d06</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With Windows Presentation Foundation coming closer to its release date with Vista
almost being upon us, more and more people are taking a look at programming in WPF…
Lately, people searching on Google for WPF-related information is soaring. How do
you know that, you might ask? Well, in my logs, I notice a steep increase in people
landing on my blog who searched for information on WPF. That’s a good thing!! ?
</p>
        <p>
However, what I do notice, is that there is still some confusion on some topics. 
In this article, I want to help clear out the difference between the different application
types in WPF/Vista. Since this is a major change with previous application models,
lots of people, including me when I first heard about it, seem confused.
</p>
        <p>
          <em>So, let’s get to it!</em>
        </p>
        <p>
WPF has 2 main applications models: standalone and browser. On the other hand, it
also has 2 types of navigation: menu-driven, which is what we’re all used to in traditional
Windows applications and link-driven, which is the default for web applications. The
first thing to note is that in WPF, both types of navigation can be used in either
of the application models. Neat, isn’t it? 
<br />
That basically means that you can create a web application as if it were a windows
application, containing a menu to navigate around. Or, create a standalone desktop
application that feels like a web application, with all buttons replaced by links.<br />
No longer are you bound to one application model with is “natural” navigation model!
</p>
        <p>
          <strong>Standalone applications<br /></strong>
          <br />
When you want to create a “traditional” Windows application, you should choose to
create “Windows Application (WPF)”. 
<br /></p>
        <p align="center">
          <img src="http://www.snowball.be/content/binary/11.jpg" border="0" />
        </p>
        <p align="left">
The Windows Form now became a Window, each of these is declared as Window1.xaml. Notice
that the build action for a Window file is automatically set to Page. What this means,
is that the markup is turned into a special type of resource that can be identified
uniquely by a Uniform Resource Identifier (URI). This way, WPF can load the window
using a URI, as is done set the starting point in your App.xaml. 
</p>
        <p align="left">
          <font face="Courier New">&lt;Application x:Class="WindowsApplication2.App"<br />
    xmlns="</font>
          <a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
            <font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml/presentation</font>
          </a>
          <font face="Courier New">"<br />
    xmlns:x="</font>
          <a href="http://schemas.microsoft.com/winfx/2006/xaml">
            <font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml</font>
          </a>
          <font face="Courier New">"<br />
    StartupUri="Window1.xaml"<br />
    &gt;</font>
        </p>
        <p align="left">
This way, your application knows which window it has to load up first. This window
is loaded modeless, meaning that it has no problems with you clicking anywhere else
in the application. 
</p>
        <p align="left">
          <strong>Page’d applications<br /></strong>
          <br />
Should you want to create an application that mimics the web experience but still
run as a standalone application, you should start by adding a Page(WPF). 
</p>
        <p align="left">
Just like in the Window, you can add controls and content to the page. However, when
you change the startupuri in the App.xaml to your newly added page, some things will
change. 
</p>
        <p align="left">
A window can host itself, like a form did in traditional Windows Forms programming.
A HTML/ASPX page requires a browser. Now, we created a “standalone” application with
the starting point set to a page. Kinda weird, right?
</p>
        <p align="left">
Well, the Application class in WPF is smart enough to detect if your startupuri is
set to a page. It will then create a window to host your application. 
</p>
        <p align="center">
          <img src="http://www.snowball.be/content/binary/2.jpg" border="0" />
        </p>
        <p align="left">
          <br />
Now, where does this “hosting window” come from?<br />
When the startupuri is set to a XAML page or HTML page, Application  creates
an instance of NavigationWindow to host them. This class derives from Window but extends
it to make it look like a mini-browser window, providing navigation buttons at the
top.
</p>
        <p align="left">
When content changes or when you click a link to navigate to another page, the previous
content is added to the history. The management of the history itself is managed too
by the NavigationWindow. 
</p>
        <p align="left">
          <strong>XAML Browser applications<br /></strong>
          <br />
The final type of application is the XAML browser application. While the previous
type of application basically is a web application, being hosted in its own mini-browser,
you can’t really take advantage of all the features modern browser have today. If
that’s what you need, you should create a XAML browser application or XBAP. 
</p>
        <p align="left">
To create one, you should choose new “XAML Browser Application (WPF)”. After that,
you can copy all the code you created for that WPF standalone application to one or
more pages, and your application is ready for the web! 
</p>
        <p align="left">
One more thing you can do with XBAPs is publish them on a web- or intranet server.
This is done using ClickOnce, which creates the executable along with 2 manifest files.
One of these 2 has the extension XBAP, and that’s were the user navigates too. It
then “downloads” the application to the local computer.
</p>
        <p align="left">
Because of the security risk, XBAPs are not installed and run in a security sandbox:
some operations like writing to the registry are not allowed. Basically, XBAPs can
only do things that are allowed for apps launched from the Internet zone, a restricted
set of operations.<br /><br /><strong>Conclusion<br /></strong>As you can see, the ways an application is build are different
from what you are used to in traditional programming. I hope this guide
is clear enough to help you choose the correct type when building a WPF application
for Vista.<br />
 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=73481e3b-8cea-41a7-8ca1-e58f5d628d06" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>WPF tutorial: Different types of applications in Windows Presentation Foundation</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,73481e3b-8cea-41a7-8ca1-e58f5d628d06.aspx</guid>
      <link>http://www.snowball.be/2006/11/02/WPF+Tutorial+Different+Types+Of+Applications+In+Windows+Presentation+Foundation.aspx</link>
      <pubDate>Thu, 02 Nov 2006 15:01:59 GMT</pubDate>
      <description>&lt;p&gt;
With Windows Presentation Foundation coming closer to its release date with Vista
almost being upon us, more and more people are taking a look at programming in WPF…
Lately, people searching on Google for WPF-related information is soaring. How do
you know that, you might ask? Well, in my logs, I notice a steep increase in people
landing on my blog who searched for information on WPF. That’s a good thing!! ?
&lt;/p&gt;
&lt;p&gt;
However, what I do notice, is that there is still some confusion on some topics.&amp;nbsp;
In this article, I want to help clear out the difference between the different application
types in WPF/Vista. Since this is a major change with previous application models,
lots of people, including me when I first heard about it, seem confused.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;So, let’s get to it!&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
WPF has 2 main applications models: standalone and browser. On the other hand, it
also has 2 types of navigation: menu-driven, which is what we’re all used to in traditional
Windows applications and link-driven, which is the default for web applications. The
first thing to note is that in WPF, both types of navigation can be used in either
of the application models. Neat, isn’t it? 
&lt;br&gt;
That basically means that you can create a web application as if it were a windows
application, containing a menu to navigate around. Or, create a standalone desktop
application that feels like a web application, with all buttons replaced by links.&lt;br&gt;
No longer are you bound to one application model with is “natural” navigation model!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Standalone applications&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
When you want to create a “traditional” Windows application, you should choose to
create “Windows Application (WPF)”. 
&lt;br&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.snowball.be/content/binary/11.jpg" border=0&gt;
&lt;/p&gt;
&lt;p align=left&gt;
The Windows Form now became a Window, each of these is declared as Window1.xaml. Notice
that the build action for a Window file is automatically set to Page. What this means,
is that the markup is turned into a special type of resource that can be identified
uniquely by a Uniform Resource Identifier (URI). This way, WPF can load the window
using a URI, as is done set the starting point in your App.xaml. 
&lt;/p&gt;
&lt;p align=left&gt;
&lt;font face="Courier New"&gt;&amp;lt;Application x:Class="WindowsApplication2.App"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:x="&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; StartupUri="Window1.xaml"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p align=left&gt;
This way, your application knows which window it has to load up first. This window
is loaded modeless, meaning that it has no problems with you clicking anywhere else
in the application. 
&lt;/p&gt;
&lt;p align=left&gt;
&lt;strong&gt;Page’d applications&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
Should you want to create an application that mimics the web experience but still
run as a standalone application, you should start by adding a Page(WPF). 
&lt;/p&gt;
&lt;p align=left&gt;
Just like in the Window, you can add controls and content to the page. However, when
you change the startupuri in the App.xaml to your newly added page, some things will
change. 
&lt;/p&gt;
&lt;p align=left&gt;
A window can host itself, like a form did in traditional Windows Forms programming.
A HTML/ASPX page requires a browser. Now, we created a “standalone” application with
the starting point set to a page. Kinda weird, right?
&lt;/p&gt;
&lt;p align=left&gt;
Well, the Application class in WPF is smart enough to detect if your startupuri is
set to a page. It will then create a window to host your application. 
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.snowball.be/content/binary/2.jpg" border=0&gt;
&lt;/p&gt;
&lt;p align=left&gt;
&lt;br&gt;
Now, where does this “hosting window” come from?&lt;br&gt;
When the startupuri is set to a XAML page or HTML page, Application&amp;nbsp; creates
an instance of NavigationWindow to host them. This class derives from Window but extends
it to make it look like a mini-browser window, providing navigation buttons at the
top.
&lt;/p&gt;
&lt;p align=left&gt;
When content changes or when you click a link to navigate to another page, the previous
content is added to the history. The management of the history itself is managed too
by the NavigationWindow. 
&lt;/p&gt;
&lt;p align=left&gt;
&lt;strong&gt;XAML Browser applications&lt;br&gt;
&lt;/strong&gt;
&lt;br&gt;
The final type of application is the XAML browser application. While the previous
type of application basically is a web application, being hosted in its own mini-browser,
you can’t really take advantage of all the features modern browser have today. If
that’s what you need, you should create a XAML browser application or XBAP. 
&lt;/p&gt;
&lt;p align=left&gt;
To create one, you should choose new “XAML Browser Application (WPF)”. After that,
you can copy all the code you created for that WPF standalone application to one or
more pages, and your application is ready for the web! 
&lt;/p&gt;
&lt;p align=left&gt;
One more thing you can do with XBAPs is publish them on a web- or intranet server.
This is done using ClickOnce, which creates the executable along with 2 manifest files.
One of these 2 has the extension XBAP, and that’s were the user navigates too. It
then “downloads” the application to the local computer.
&lt;/p&gt;
&lt;p align=left&gt;
Because of the security risk, XBAPs are not installed and run in a security sandbox:
some operations like writing to the registry are not allowed. Basically, XBAPs can
only do things that are allowed for apps launched from the Internet zone, a restricted
set of operations.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Conclusion&lt;br&gt;
&lt;/strong&gt;As you can&amp;nbsp;see,&amp;nbsp;the ways&amp;nbsp;an application is build are different
from what you are used to&amp;nbsp;in traditional&amp;nbsp;programming. I hope this guide
is clear enough to help you choose the&amp;nbsp;correct type when building a WPF application
for Vista.&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=73481e3b-8cea-41a7-8ca1-e58f5d628d06" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,73481e3b-8cea-41a7-8ca1-e58f5d628d06.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Vista</category>
      <category>Visual Studio.net</category>
      <category>WinFX</category>
      <category>WPF</category>
      <category>XAML</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=752891c4-728e-4bf7-9e97-f8e17e5c81c3</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,752891c4-728e-4bf7-9e97-f8e17e5c81c3.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,752891c4-728e-4bf7-9e97-f8e17e5c81c3.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=752891c4-728e-4bf7-9e97-f8e17e5c81c3</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today, I was programming on the new <a href="http://www.visug.be">www.visug.be</a> of
which I recently became the webmaster. 
<br />
I needed a time picker control for ASP.net. I already downloaded Basic Date Picker,
which includes a date picker for free and a time picker. Sadly, the time picker isn't
free.<br /><br />
So I searched a little, and stumbled on a free library of custom controls which can
be found here: <a href="http://www.eworldui.net/">http://www.eworldui.net/</a> .<br />
It includes among others a very nice Time Picker control for ASP.net, that works under
ASP.net 1.1 and 2.0.<br />
Great controls, I must say!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=752891c4-728e-4bf7-9e97-f8e17e5c81c3" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>ASP.net Timepicker control</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,752891c4-728e-4bf7-9e97-f8e17e5c81c3.aspx</guid>
      <link>http://www.snowball.be/2006/10/22/ASPnet+Timepicker+Control.aspx</link>
      <pubDate>Sun, 22 Oct 2006 20:22:22 GMT</pubDate>
      <description>&lt;p&gt;
Today, I was programming on the new &lt;a href="http://www.visug.be"&gt;www.visug.be&lt;/a&gt; of
which I recently became the webmaster. 
&lt;br&gt;
I needed a time picker control for ASP.net. I already downloaded Basic Date Picker,
which includes a date picker for free and a time picker. Sadly, the time picker isn't
free.&lt;br&gt;
&lt;br&gt;
So I searched a little, and stumbled on a free library of custom controls which can
be found here: &lt;a href="http://www.eworldui.net/"&gt;http://www.eworldui.net/&lt;/a&gt;&amp;nbsp;.&lt;br&gt;
It includes among others a very nice Time Picker control for ASP.net, that works under
ASP.net 1.1 and 2.0.&lt;br&gt;
Great controls, I must say!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=752891c4-728e-4bf7-9e97-f8e17e5c81c3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,752891c4-728e-4bf7-9e97-f8e17e5c81c3.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=d18a6103-79b0-44ef-a2c5-6325468717c1</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,d18a6103-79b0-44ef-a2c5-6325468717c1.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,d18a6103-79b0-44ef-a2c5-6325468717c1.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=d18a6103-79b0-44ef-a2c5-6325468717c1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My article on WPF (Windows Presentation Foundation) triggers and styles is online
on the MSDN website! You can read it <a href="http://www.microsoft.com/belux/msdn/nl/community/columns/gillcleeren/wpf_stylesandtriggers.mspx">here</a>!<br /><br />
From MSDN:<br /><em>In this article, Gill Cleeren focuses on the aspect of styles and triggers in
Windows Presenation Foundation. Styles make it possible to create applications with
a uniform look and with a high level of maintainability. Triggers allow WPF styles
to change one or more properties in response of a user interaction. In this document,
we will use both these technologies to create a richer user experience.<br /></em></p>
        <p>
This is my first article on MSDN (more will come, now that I'm into it ;-) )<br /><br />
Here's a screenshot of the MSDN Belux site (Click for larger version)<br /><br /><a href="http://www.snowball.be/content/binary/GillOnMSDNSmall.jpg"><img src="http://www.snowball.be/content/binary/thumbMSDN.jpg" border="0" /></a><br /><br />
Thanks to the MSDN Belux team, Wim Verhaegen and Tom Mertens.
</p>
        <a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/Thats+Me+On+MSDN+.aspx">
        </a>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d18a6103-79b0-44ef-a2c5-6325468717c1" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>That's me on MSDN ;-)</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,d18a6103-79b0-44ef-a2c5-6325468717c1.aspx</guid>
      <link>http://www.snowball.be/2006/10/20/Thats+Me+On+MSDN.aspx</link>
      <pubDate>Fri, 20 Oct 2006 11:38:00 GMT</pubDate>
      <description>&lt;p&gt;
My article on WPF (Windows Presentation Foundation) triggers and styles is online
on the MSDN website! You can read it &lt;a href="http://www.microsoft.com/belux/msdn/nl/community/columns/gillcleeren/wpf_stylesandtriggers.mspx"&gt;here&lt;/a&gt;!&lt;br&gt;
&lt;br&gt;
From MSDN:&lt;br&gt;
&lt;em&gt;In this article, Gill Cleeren focuses on the aspect of styles and triggers in
Windows Presenation Foundation. Styles make it possible to create applications with
a uniform look and with a high level of maintainability. Triggers allow WPF styles
to change one or more properties in response of a user interaction. In this document,
we will use both these technologies to create a richer user experience.&lt;br&gt;
&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
This is my first article on MSDN (more will come, now that I'm into it ;-) )&lt;br&gt;
&lt;br&gt;
Here's a screenshot of the MSDN Belux site (Click for larger version)&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/GillOnMSDNSmall.jpg"&gt;&lt;img src="http://www.snowball.be/content/binary/thumbMSDN.jpg" border=0&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Thanks to the MSDN Belux team, Wim Verhaegen and Tom Mertens.
&lt;/p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/Thats+Me+On+MSDN+.aspx"&gt;&lt;/a&gt;&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d18a6103-79b0-44ef-a2c5-6325468717c1" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,d18a6103-79b0-44ef-a2c5-6325468717c1.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Microsoft</category>
      <category>Programming tools</category>
      <category>WPF</category>
      <category>XAML</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=78cf1909-5f8f-4d9a-b517-a250fc000bd4</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,78cf1909-5f8f-4d9a-b517-a250fc000bd4.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,78cf1909-5f8f-4d9a-b517-a250fc000bd4.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=78cf1909-5f8f-4d9a-b517-a250fc000bd4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The november issue is available, <a href="http://msdn.microsoft.com/msdnmag/issues/06/11/default.aspx">free
for download</a> as always!<br /><br /></p>
        <p align="center">
          <img src="http://www.snowball.be/content/binary/November06Coverlg.gif" border="0" />
        </p>
        <p align="left">
This issue focuses on security and writing more secure code... 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=78cf1909-5f8f-4d9a-b517-a250fc000bd4" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>New issue of MSDN magazine available</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,78cf1909-5f8f-4d9a-b517-a250fc000bd4.aspx</guid>
      <link>http://www.snowball.be/2006/10/17/New+Issue+Of+MSDN+Magazine+Available.aspx</link>
      <pubDate>Tue, 17 Oct 2006 18:39:01 GMT</pubDate>
      <description>&lt;p&gt;
The november issue is available, &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/11/default.aspx"&gt;free
for download&lt;/a&gt; as always!&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.snowball.be/content/binary/November06Coverlg.gif" border=0&gt;
&lt;/p&gt;
&lt;p align=left&gt;
This issue focuses on security and writing more secure code... 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=78cf1909-5f8f-4d9a-b517-a250fc000bd4" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,78cf1909-5f8f-4d9a-b517-a250fc000bd4.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=1843ec6e-7e34-4f21-9266-19756f4cbe53</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,1843ec6e-7e34-4f21-9266-19756f4cbe53.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,1843ec6e-7e34-4f21-9266-19756f4cbe53.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=1843ec6e-7e34-4f21-9266-19756f4cbe53</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Free training alert!!!</strong>
          <br />
          <br />
          <a href="https://www.microsoftelearning.com/default.aspx">
            <font color="#355ea0">Microsoft
Learning</font>
          </a> developed some free online training(<a title="Collection 5134 : Developing Rich Experiences with Microsoft® .NET Framework 3.0 &#xD;&#xA;and Visual Studio® 2005" href="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340"><font color="#355ea0">Collection
5134 : Developing Rich Experiences with Microsoft® .NET Framework 3.0 and Visual Studio®
2005</font></a>) that you can use for a limited time.<br />
You will learn how to develop rich experiences using Windows Presentation Foundation,
Windows Workflow Foundation, and Windows Communication Foundation.
</p>
        <blockquote cite="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340">
          <p>
          </p>
          <p>
This collection of 3 2-hour premium clinics teaches about the new capabilities provided
by the .NET Framework 3.0. These clinics are for experienced Developers and Software
Architects who are looking to adopt Microsoft's next generation technology within
their solutions.
</p>
          <p class="Citation">
From: <cite cite="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340"><a href="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340"><font color="#355ea0">Collection
5134 : Developing Rich Experiences with Microsoft® .NET Framework 3.0 and Visual Studio®
2005</font></a></cite></p>
        </blockquote>
        <p>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1843ec6e-7e34-4f21-9266-19756f4cbe53" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Free training from Microsoft</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,1843ec6e-7e34-4f21-9266-19756f4cbe53.aspx</guid>
      <link>http://www.snowball.be/2006/10/17/Free+Training+From+Microsoft.aspx</link>
      <pubDate>Tue, 17 Oct 2006 18:28:30 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;Free training alert!!!&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="https://www.microsoftelearning.com/default.aspx"&gt;&lt;font color=#355ea0&gt;Microsoft
Learning&lt;/font&gt;&lt;/a&gt;&amp;nbsp;developed&amp;nbsp;some free online training(&lt;a title="Collection 5134 : Developing Rich Experiences with Microsoft® .NET Framework 3.0 &amp;#13;&amp;#10;and Visual Studio® 2005" href="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340"&gt;&lt;font color=#355ea0&gt;Collection
5134 : Developing Rich Experiences with Microsoft® .NET Framework 3.0 and Visual Studio®
2005&lt;/font&gt;&lt;/a&gt;) that you can use for a limited time.&lt;br&gt;
You will learn how to develop rich experiences using Windows Presentation Foundation,
Windows Workflow Foundation, and Windows Communication Foundation.
&lt;/p&gt;
&lt;blockquote cite=https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340&gt; 
&lt;p&gt;
&lt;p&gt;
This collection of 3 2-hour premium clinics teaches about the new capabilities provided
by the .NET Framework 3.0. These clinics are for experienced Developers and Software
Architects who are looking to adopt Microsoft's next generation technology within
their solutions.
&lt;/p&gt;
&lt;p class=Citation&gt;
From: &lt;cite cite=https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340&gt;&lt;a href="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=109340"&gt;&lt;font color=#355ea0&gt;Collection
5134 : Developing Rich Experiences with Microsoft® .NET Framework 3.0 and Visual Studio®
2005&lt;/font&gt;&lt;/a&gt;&lt;/cite&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1843ec6e-7e34-4f21-9266-19756f4cbe53" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,1843ec6e-7e34-4f21-9266-19756f4cbe53.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Vista</category>
      <category>WinFX</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=1526547a-04e5-4af3-8259-1003f9714039</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,1526547a-04e5-4af3-8259-1003f9714039.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,1526547a-04e5-4af3-8259-1003f9714039.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=1526547a-04e5-4af3-8259-1003f9714039</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Regular expressions... I don't like them. Or, no, let me specify: I don't like to
WRITE them. Tools like The Regulator help create them, but they're not easy to use. 
<br /><br />
I found a library in C# which contains a lot of predifined regular expressions: <a href="http://developer.coreweb.com/articles/Default15.aspx">http://developer.coreweb.com/articles/Default15.aspx</a>. 
<br />
Enjoy ;-)
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1526547a-04e5-4af3-8259-1003f9714039" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Regular expressions library</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,1526547a-04e5-4af3-8259-1003f9714039.aspx</guid>
      <link>http://www.snowball.be/2006/09/29/Regular+Expressions+Library.aspx</link>
      <pubDate>Fri, 29 Sep 2006 07:20:23 GMT</pubDate>
      <description>&lt;p&gt;
Regular expressions... I don't like them. Or, no, let me specify: I don't like to
WRITE them. Tools like The Regulator help create them, but they're not easy to use. 
&lt;br&gt;
&lt;br&gt;
I found a library in C# which contains a lot of predifined regular expressions: &lt;a href="http://developer.coreweb.com/articles/Default15.aspx"&gt;http://developer.coreweb.com/articles/Default15.aspx&lt;/a&gt;. 
&lt;br&gt;
Enjoy ;-)
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1526547a-04e5-4af3-8259-1003f9714039" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,1526547a-04e5-4af3-8259-1003f9714039.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=2688514a-8c7d-4e03-8488-e5fefa7143d6</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,2688514a-8c7d-4e03-8488-e5fefa7143d6.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,2688514a-8c7d-4e03-8488-e5fefa7143d6.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=2688514a-8c7d-4e03-8488-e5fefa7143d6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I found a nice string manipulation library via <a href="http://www.ASP.net">www.ASP.net</a>:
you can access it <a href="http://developer.coreweb.com/articles/Default5.aspx">here</a>.
Certainly a nice help if you have to work with strings a lot...
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=2688514a-8c7d-4e03-8488-e5fefa7143d6" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>A nice C# string library</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,2688514a-8c7d-4e03-8488-e5fefa7143d6.aspx</guid>
      <link>http://www.snowball.be/2006/09/20/A+Nice+C+String+Library.aspx</link>
      <pubDate>Wed, 20 Sep 2006 19:25:15 GMT</pubDate>
      <description>&lt;p&gt;
I found a nice string manipulation library via &lt;a href="http://www.ASP.net"&gt;www.ASP.net&lt;/a&gt;:
you can access it &lt;a href="http://developer.coreweb.com/articles/Default5.aspx"&gt;here&lt;/a&gt;.
Certainly a nice help if you have to work with strings&amp;nbsp;a lot...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=2688514a-8c7d-4e03-8488-e5fefa7143d6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,2688514a-8c7d-4e03-8488-e5fefa7143d6.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=826bbec7-00da-46ab-8a1a-9bc2acabbcdd</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,826bbec7-00da-46ab-8a1a-9bc2acabbcdd.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,826bbec7-00da-46ab-8a1a-9bc2acabbcdd.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=826bbec7-00da-46ab-8a1a-9bc2acabbcdd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This guy is going to write a C# application every day of the month... One a day...
For 30th days.<br /><br />
You can follow his life <a href="http://www.anappaday.com/">here</a>.<br /><br />
Oh yes, he'll be programming in C# ;-)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=826bbec7-00da-46ab-8a1a-9bc2acabbcdd" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>One crazy C# programmer...</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,826bbec7-00da-46ab-8a1a-9bc2acabbcdd.aspx</guid>
      <link>http://www.snowball.be/2006/09/12/One+Crazy+C+Programmer.aspx</link>
      <pubDate>Tue, 12 Sep 2006 19:01:47 GMT</pubDate>
      <description>&lt;p&gt;
This guy is going to write a C# application every day of the month... One a day...
For 30th days.&lt;br&gt;
&lt;br&gt;
You can follow his life &lt;a href="http://www.anappaday.com/"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Oh yes, he'll be programming in C# ;-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=826bbec7-00da-46ab-8a1a-9bc2acabbcdd" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,826bbec7-00da-46ab-8a1a-9bc2acabbcdd.aspx</comments>
      <category>C#</category>
      <category>Internet</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=6e825624-8644-4674-8425-68ad6554587b</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,6e825624-8644-4674-8425-68ad6554587b.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,6e825624-8644-4674-8425-68ad6554587b.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=6e825624-8644-4674-8425-68ad6554587b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After a naming game, Atlas finally got its final name!<br /><br /></p>
        <p>
          <strong>-</strong>Microsoft AJAX Library:  The client-side JavaScript library
that works with any browser and also supports any server-side framework, not
just ASP.NET. 
</p>
        <p>
-ASP.NET 2.0 AJAX Extensions: The server-side functionality that seamlessly integrates
with ASP.NET and uses the same programming model familiar to existing ASP.NET developers. 
<br /><br />
Atlas will also ship in version 1.0 (final) before the end of the year!!!<br /><br />
Scott Guthrie has an entire article devoted to the Atlas roadmap. You can read it <a href="http://weblogs.asp.net/scottgu/archive/2006/09/11/_2200_Atlas_2200_-1.0-Naming-and-Roadmap.aspx">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=6e825624-8644-4674-8425-68ad6554587b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Atlas - be gone!</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,6e825624-8644-4674-8425-68ad6554587b.aspx</guid>
      <link>http://www.snowball.be/2006/09/11/Atlas+Be+Gone.aspx</link>
      <pubDate>Mon, 11 Sep 2006 20:43:40 GMT</pubDate>
      <description>&lt;p&gt;
After a naming game, Atlas finally got its final name!&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;-&lt;/strong&gt;Microsoft AJAX Library:&amp;nbsp;&amp;nbsp;The client-side JavaScript library
that works with any browser and also supports any&amp;nbsp;server-side framework, not
just ASP.NET. 
&lt;/p&gt;
&lt;p&gt;
-ASP.NET 2.0 AJAX Extensions: The server-side functionality that seamlessly integrates
with ASP.NET and uses the same programming model familiar to existing ASP.NET developers. 
&lt;br&gt;
&lt;br&gt;
Atlas will also ship in version 1.0 (final) before the end of the year!!!&lt;br&gt;
&lt;br&gt;
Scott Guthrie has an entire article devoted to the Atlas roadmap. You can read it &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/09/11/_2200_Atlas_2200_-1.0-Naming-and-Roadmap.aspx"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=6e825624-8644-4674-8425-68ad6554587b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,6e825624-8644-4674-8425-68ad6554587b.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>Atlas</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=75606396-a479-4772-b4ac-d0d935524ac5</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,75606396-a479-4772-b4ac-d0d935524ac5.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,75606396-a479-4772-b4ac-d0d935524ac5.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=75606396-a479-4772-b4ac-d0d935524ac5</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today, I discovered a 'feature' of Visual Studio 2005. 
<br />
In VS 2003, I used the //TODO comment a lot, so that a list of all my ToDo items would
show up in the Task List.<br /><br />
Today, I was explaining to my collegue how to use this useful command... only to find
out that it doesn't work in VS2005 anymore... 
<br /><br />
This is what MSDN has to say about it:<br /><em>'Task List comments are not attached to the solution and project nodes displayed
in Solution Explorer. For this reason, they do not appear when a solution is first
opened. Rather, they are embedded within individual code files. Whenever a code file
is opened for editing, any comments that begin with recognized tokens are displayed
in the Task List. '<br /><br /></em>So, you can only see them when the file is open... not project-wide anymore :(<br /><br />
Anyone have another solution to this?
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=75606396-a479-4772-b4ac-d0d935524ac5" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>//TODO in VS 2005?</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,75606396-a479-4772-b4ac-d0d935524ac5.aspx</guid>
      <link>http://www.snowball.be/2006/09/07/TODO+In+VS+2005.aspx</link>
      <pubDate>Thu, 07 Sep 2006 07:57:16 GMT</pubDate>
      <description>&lt;p&gt;
Today, I discovered a 'feature' of Visual Studio 2005. 
&lt;br&gt;
In VS 2003, I used the //TODO comment a lot, so that a list of all my ToDo items would
show up in the Task List.&lt;br&gt;
&lt;br&gt;
Today, I was explaining to my collegue how to use this useful command... only to find
out that it doesn't work in VS2005 anymore... 
&lt;br&gt;
&lt;br&gt;
This is what MSDN has to say about it:&lt;br&gt;
&lt;em&gt;'Task List comments are not attached to the solution and project nodes displayed
in Solution Explorer. For this reason, they do not appear when a solution is first
opened. Rather, they are embedded within individual code files. Whenever a code file
is opened for editing, any comments that begin with recognized tokens are displayed
in the Task List. '&lt;br&gt;
&lt;br&gt;
&lt;/em&gt;So, you can only see them when the file is open... not project-wide anymore :(&lt;br&gt;
&lt;br&gt;
Anyone have another solution to this?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=75606396-a479-4772-b4ac-d0d935524ac5" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,75606396-a479-4772-b4ac-d0d935524ac5.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Visual Studio.net</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=9f248955-1547-438b-aa90-9e5ee8382a33</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,9f248955-1547-438b-aa90-9e5ee8382a33.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,9f248955-1547-438b-aa90-9e5ee8382a33.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=9f248955-1547-438b-aa90-9e5ee8382a33</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Is today "Release Day" or something? So many new releases...<br /><br />
Let's begin with IronPython, which reached status 1.0: 
<br /><br /><em>IronPython 1.0 has been released to the .NET community and is available on </em><a href="http://www.codeplex.com/"><font color="#355ea0"><em>CodePlex</em></font></a><em>. 
IronPython is an implementation of the Python dynamic programming language. 
IronPython is built on top of the .NET Framework and is interoperable
with other .NET languages.  Binaries, source code, and tutorials are available
at CodePlex.</em></p>
        <p>
          <em>Click </em>
          <a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=IronPython">
            <font color="#355ea0">
              <em>here</em>
            </font>
          </a>
          <em> to
download IronPython at CodePlex.<br /><br /></em>Another release is Expression Web Beta 1:<br /></p>
        <p>
          <em>We are pleased to present the Beta 1 release of Expression Web (formerly Expression
Web Designer).</em>
        </p>
        <p>
          <em>Expression Web is a professional design tool that helps you create and work with:</em>
        </p>
        <ul>
          <li>
            <em>Standards-based Web sites </em>
          </li>
          <li>
            <em>Sophisticated CSS-based layouts </em>
          </li>
          <li>
            <em>Extensive CSS formatting and management </em>
          </li>
          <li>
            <em>Rich data presentation </em>
          </li>
          <li>
            <em>Powerful ASP.NET 2.0-based technology </em>
          </li>
        </ul>
        <p>
          <em>To download, go </em>
          <a href="http://www.microsoft.com/products/expression/en/web_designer/wd_free_trial.aspx">
            <em>here</em>
          </a>
          <em>.</em>
          <br />
          <br />
Still going strong ;-) Next is WCF, which reached RC1 also.<br /><br /><em>The release candidate 1 for the .NET Framework 3.0 is now available!  You
can download the components for the RC1 here:</em></p>
        <ul>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=19E21845-F5E3-4387-95FF-66788825C1AF&amp;displaylang=en">
              <em>.NET
Framework 3.0 Runtime Components RC1</em>
            </a>
            <em>
            </em>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=117ECFD3-98AD-4D67-87D2-E95A8407FA86&amp;displaylang=en">
              <em>Windows
SDK for Vista RC1 and the .NET Framework 3.0 RC1</em>
            </a>
            <em>
            </em>
          </li>
          <li>
            <a href="http://www.microsoft.com/downloads/details.aspx?familyid=E8232F93-48F0-4E74-B09D-B51F1D4231A4&amp;displaylang=en">
              <em>Visual
Studio 2005 Extensions for Windows Workflow Foundation (WF RC5)</em>
            </a>
          </li>
        </ul>
        <p>
          <a href="http://www.netfx3.com/blogs/news_and_announcements/archive/2006/09/05/5479.aspx">
            <em>More
info on RC1</em>
          </a>
          <em>.</em>
          <br />
          <br />
          <br />
The Interactive Designer got updated, and now the September CTP is available:<br /><em>Microsoft® Expression® Interactive Designer September 2006 Community Technology
Preview (CTP) is a professional design tool used to create engaging, rich user interfaces
for desktop and Web applications.<br /><br />
To download, go </em><a href="http://www.microsoft.com/downloads/details.aspx?familyid=ebf7a3f3-4b55-4c2c-a43a-b977446a131a&amp;displaylang=en"><em>here</em></a><em>.<br /><br /></em>To finish, this one isn't actually released as of yet, but it's an interesting
project being researched at MS:<br /><br /><em>Microsoft researchers are experimenting with an automatic code zapper for the
company's Internet Explorer Web browser. </em></p>
        <p>
          <em>Researchers at the Redmond, Wash., company have completed work on a prototype
framework called BrowserShield that promises to allow IE to intercept and remove,
on the fly, malicious code hidden on Web pages, instead showing users safe equivalents
of those pages. </em>
        </p>
        <p>
          <em>The BrowserShield project—the brainchild of Helen Wang, a project leader in Microsoft
Research's Systems &amp; Networking Research Group, and an outgrowth of the company's
Shield initiative to block network worms—could one day even become Microsoft's answer
to zero-day browser exploits such as the WMF (Windows Metafile) attack that spread
like wildfire in December 2005.<br />
More <a href="http://www.eweek.com/article2/0,1759,2011765,00.asp?kc=EWRSS03119TX1K0000594">here</a>.</em>
        </p>
        <p>
That's all folks ;-)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=9f248955-1547-438b-aa90-9e5ee8382a33" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Lots of new releases</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,9f248955-1547-438b-aa90-9e5ee8382a33.aspx</guid>
      <link>http://www.snowball.be/2006/09/06/Lots+Of+New+Releases.aspx</link>
      <pubDate>Wed, 06 Sep 2006 20:12:58 GMT</pubDate>
      <description>&lt;p&gt;
Is today "Release Day" or something? So many new releases...&lt;br&gt;
&lt;br&gt;
Let's begin with IronPython, which reached status 1.0: 
&lt;br&gt;
&lt;br&gt;
&lt;em&gt;IronPython 1.0 has been released to the .NET community and is available on &lt;/em&gt;&lt;a href="http://www.codeplex.com/"&gt;&lt;font color=#355ea0&gt;&lt;em&gt;CodePlex&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;em&gt;.&amp;nbsp;
IronPython is an implementation of the Python dynamic programming language.&amp;nbsp;
IronPython is&amp;nbsp;built on top of the .NET Framework&amp;nbsp;and is&amp;nbsp;interoperable
with other .NET languages.&amp;nbsp; Binaries, source code, and tutorials are available
at CodePlex.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Click &lt;/em&gt;&lt;a href="http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=IronPython"&gt;&lt;font color=#355ea0&gt;&lt;em&gt;here&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;em&gt; to
download IronPython at CodePlex.&lt;br&gt;
&lt;br&gt;
&lt;/em&gt;Another release is Expression Web Beta 1:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;We are pleased to present the Beta 1 release of Expression Web (formerly Expression
Web Designer).&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Expression Web is a professional design tool that helps you create and work with:&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Standards-based Web sites &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Sophisticated CSS-based layouts &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Extensive CSS formatting and management &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Rich data presentation &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Powerful ASP.NET 2.0-based technology &lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;em&gt;To download, go &lt;/em&gt;&lt;a href="http://www.microsoft.com/products/expression/en/web_designer/wd_free_trial.aspx"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
Still going strong ;-) Next is WCF, which reached RC1 also.&lt;br&gt;
&lt;br&gt;
&lt;em&gt;The release candidate 1 for the .NET Framework 3.0 is now available!&amp;nbsp;&amp;nbsp;You
can download the components for the RC1 here:&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=19E21845-F5E3-4387-95FF-66788825C1AF&amp;amp;displaylang=en"&gt;&lt;em&gt;.NET
Framework 3.0 Runtime Components&amp;nbsp;RC1&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt; 
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=117ECFD3-98AD-4D67-87D2-E95A8407FA86&amp;amp;displaylang=en"&gt;&lt;em&gt;Windows
SDK for Vista RC1 and the .NET Framework 3.0 RC1&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt; 
&lt;li&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=E8232F93-48F0-4E74-B09D-B51F1D4231A4&amp;amp;displaylang=en"&gt;&lt;em&gt;Visual
Studio 2005 Extensions for Windows Workflow Foundation (WF RC5)&lt;/em&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://www.netfx3.com/blogs/news_and_announcements/archive/2006/09/05/5479.aspx"&gt;&lt;em&gt;More
info on RC1&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
The Interactive Designer got updated, and now the September CTP is available:&lt;br&gt;
&lt;em&gt;Microsoft® Expression® Interactive Designer September 2006 Community Technology
Preview (CTP) is a professional design tool used to create engaging, rich user interfaces
for desktop and Web applications.&lt;br&gt;
&lt;br&gt;
To download, go &lt;/em&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=ebf7a3f3-4b55-4c2c-a43a-b977446a131a&amp;amp;displaylang=en"&gt;&lt;em&gt;here&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;br&gt;
&lt;br&gt;
&lt;/em&gt;To finish, this one isn't actually released as of yet, but it's an interesting
project being researched at MS:&lt;br&gt;
&lt;br&gt;
&lt;em&gt;Microsoft researchers are experimenting with an automatic code zapper for the
company's Internet Explorer Web browser. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Researchers at the Redmond, Wash., company have completed work on a prototype
framework called BrowserShield that promises to allow IE to intercept and remove,
on the fly, malicious code hidden on Web pages, instead showing users safe equivalents
of those pages. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;The BrowserShield project—the brainchild of Helen Wang, a project leader in Microsoft
Research's Systems &amp;amp; Networking Research Group, and an outgrowth of the company's
Shield initiative to block network worms—could one day even become Microsoft's answer
to zero-day browser exploits such as the WMF (Windows Metafile) attack that spread
like wildfire in December 2005.&lt;br&gt;
More &lt;a href="http://www.eweek.com/article2/0,1759,2011765,00.asp?kc=EWRSS03119TX1K0000594"&gt;here&lt;/a&gt;.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
That's all folks ;-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=9f248955-1547-438b-aa90-9e5ee8382a33" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,9f248955-1547-438b-aa90-9e5ee8382a33.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Microsoft</category>
      <category>Programming</category>
      <category>Software/Microsoft</category>
      <category>Vista</category>
      <category>Windows</category>
      <category>WinFX</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=3761b514-3278-48c6-b3fb-145c6da96e7c</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,3761b514-3278-48c6-b3fb-145c6da96e7c.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,3761b514-3278-48c6-b3fb-145c6da96e7c.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=3761b514-3278-48c6-b3fb-145c6da96e7c</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">MS released XNA Game Studio Express
(Beta), the first beta for this tool that can help every individual to become a game
programmer.<br /><br />
From the site: 
<br /><span><em>XNA Game Studio Express enables individuals and small teams to more easily
create video games using new, optimized cross-platform gaming libraries for Windows
and Xbox 360. This beta release targets the development of games for Windows. The
final version of XNA Game Studio Express will be available this holiday season and
will enable development of games which target Windows and upon purchase of a XNA Creators
Club subscription, the Xbox 360 as well.<br /><br />
While we’re very proud of this Beta milestone, it does not represent all of the great
features we are enabling in XNA Game Studio Express which will be available in final
release form by this holiday. Some of the key feature areas that were not able to
make it into this beta include:<br />
- The XNA Framework Content Pipeline feature is not present in this release of XNA
Game Studio Express (Beta). It will be made available in a future beta release of
XNA Game Studio Express<br />
- Support for retail Xbox 360 game development. This feature will be made available
upon final release of XNA Game Studio Express later this holiday<br />
- Additional starter kits and tutorials will be made available upon final release
of XNA Game Studio Express<br /><br /></em>It's a free download of 91MB. You can find it <a href="http://www.microsoft.com/downloads/details.aspx?familyid=21e979e3-b8ae-4ea6-8e65-393ea7684d6c&amp;displaylang=en">here</a></span><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3761b514-3278-48c6-b3fb-145c6da96e7c" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Microsoft XNA Game Studio Express (Beta) released</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,3761b514-3278-48c6-b3fb-145c6da96e7c.aspx</guid>
      <link>http://www.snowball.be/2006/08/31/Microsoft+XNA+Game+Studio+Express+Beta+Released.aspx</link>
      <pubDate>Thu, 31 Aug 2006 15:11:34 GMT</pubDate>
      <description>MS released&amp;nbsp;XNA Game Studio Express (Beta), the first beta for this tool that can help every individual to become a game programmer.&lt;br&gt;
&lt;br&gt;
From the site: 
&lt;br&gt;
&lt;span&gt;&lt;em&gt;XNA Game Studio Express enables individuals and small teams to more easily
create video games using new, optimized cross-platform gaming libraries for Windows
and Xbox 360. This beta release targets the development of games for Windows. The
final version of XNA Game Studio Express will be available this holiday season and
will enable development of games which target Windows and upon purchase of a XNA Creators
Club subscription, the Xbox 360 as well.&lt;br&gt;
&lt;br&gt;
While we’re very proud of this Beta milestone, it does not represent all of the great
features we are enabling in XNA Game Studio Express which will be available in final
release form by this holiday. Some of the key feature areas that were not able to
make it into this beta include:&lt;br&gt;
- The XNA Framework Content Pipeline feature is not present in this release of XNA
Game Studio Express (Beta). It will be made available in a future beta release of
XNA Game Studio Express&lt;br&gt;
- Support for retail Xbox 360 game development. This feature will be made available
upon final release of XNA Game Studio Express later this holiday&lt;br&gt;
- Additional starter kits and tutorials will be made available upon final release
of XNA Game Studio Express&lt;br&gt;
&lt;br&gt;
&lt;/em&gt;It's a free download of 91MB. You can find it &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=21e979e3-b8ae-4ea6-8e65-393ea7684d6c&amp;amp;displaylang=en"&gt;here&lt;/a&gt;&lt;/span&gt;&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3761b514-3278-48c6-b3fb-145c6da96e7c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,3761b514-3278-48c6-b3fb-145c6da96e7c.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Microsoft</category>
      <category>Programming</category>
      <category>Software</category>
      <category>Software/Microsoft</category>
      <category>Visual Studio.net</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=dbdf7a54-6388-4c89-ad86-30120dcbf905</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,dbdf7a54-6388-4c89-ad86-30120dcbf905.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,dbdf7a54-6388-4c89-ad86-30120dcbf905.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=dbdf7a54-6388-4c89-ad86-30120dcbf905</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In this tutorial, I'm going to explain several 2D effects that can be performed on
images, using only XAML code. By the end of this tutorial, you'll know:
</p>
        <ul>
          <li>
how to create image refections 
</li>
          <li>
how to skew images 
</li>
          <li>
how to drop shadows</li>
        </ul>
        <p>
So let's get to it!<br /><br />
Create an empty WinFX application. We'll use the Window1.xaml. 
<br />
Make the background of the image somewhat darker, so we can better see the effects
we'll create further on. For this, simply use the Window.Background property. Also,
set the Height to 600 and Width to 800.<br /><br /><font face="Courier New">&lt;Window x:Class="Reflection.Window1"<br />
   xmlns="</font><a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;"><font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml/presentation"</font></a><br /><font face="Courier New">   xmlns:x="</font><a href="http://schemas.microsoft.com/winfx/2006/xaml&quot;"><font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml"</font></a><br /><font face="Courier New">   Title="Reflection" Height="600" Width="800" <br />
   Background="#CCCCCC"<br />
&gt;</font><br /><br /><strong>Add the image to your project<br /></strong>Select an image to include in your project. I'll do this tutorial with the
image included in my project, but you can of course use any image you want. The image
has to be included in your project. Once included, go to the properties window, and
with the image selected in the solution explorer, set the "Build Action" to "Content"
and "Copy to output directory" to "Copy always". This ensures that the image will
be available when running the project.<br /><br /><strong>Let's XAML<br /></strong>Finally, we're ready to do some XAML'ing (don't know if that is already a
word, but I vote it should become one though!).<br />
Since we will not be needing any advanced layout of the window, we'll use a simple
StackPanel. By default, a stackpanel places all content it receives in 1 invisible
vertical column. That's enough for this sample.<br /><br />
So, delete the <font face="Courier New">&lt;Grid&gt;</font> and <font face="Courier New">&lt;/Grid&gt;</font> and
replace them with &lt;StackPanel&gt; and &lt;/StackPanel&gt;.<br /><br />
For the image effects, we'll need ... an image. Add an simple image element to begin
with. Also, give it a name, we'll be needing this name later on. Use the following
code:<br /><br /><font face="Courier New">&lt;Image Source="image.jpg" Width="200" Height="300" x:Name="myImage"&gt;&lt;/Image&gt;<br /></font><br />
We'll now start adding the reflection effect. For reflections, the VisualBrush is
very handy.<br />
What is the VisualBrush? It's a brush, like DrawingBrush, but it can paint with the
contents of any other visual element that derives from Visual. Since Visual is the
base class of all UI elements in WPF, you can paint with almost any markup in a VisualBrush.<br />
Before we can reflect our image, we must add an element in which we can make the reflection
appear. You can do this with a Rectangle, a Border...<br />
For now, I'll use the Border. Add the Border element to the same StackPanel where
you put the image. Since it's a StackPanel, the border is put below the Image (you
can visualize this by setting the Background to some color).<br /><br /><font face="Courier New">&lt;Border Width="210" Height="300"&gt;&lt;/Border&gt;</font><br /><br />
Now, we'll use the recently introduced VisualBrush to fill the background of the Border
with the contents of the image (this is why we needed to name the image!).<br />
Add a VisualBrush to the Border like so:<br /><br /><font face="Courier New">&lt;Border.Background&gt;<br />
   &lt;VisualBrush Visual="{Binding ElementName=myImage}"&gt;<br />
   &lt;/VisualBrush&gt;<br />
&lt;/Border.Background&gt;</font></p>
        <p>
          <br />
You should now see something like this:<br /><br /><a href="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample22.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="272" src="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample2_thumb.jpg" width="367" border="0" /></a></p>
        <p>
Of course, for a reflection, we need a mirror effect. This can be achieved by adding
a ScaleTransform on the VisualBrush. By providing a value of -1, the image will be
flipped around the Y-axis.
</p>
        <p>
          <font face="Courier New">&lt;VisualBrush.Transform&gt;<br />
   &lt;ScaleTransform ScaleX="1" ScaleY="-1" CenterX="200" CenterY="150"&gt;&lt;/ScaleTransform&gt;<br />
&lt;/VisualBrush.Transform&gt;</font>
        </p>
        <p>
Now, to complete the reflection-part of this tutorial, we'll add an OpacityMask to
the Border. With this in place, we can make the reflected image fade out into the
backgroud, creating a nice effect. 
<br /><br /><font face="Courier New">&lt;Border.OpacityMask&gt;<br />
   &lt;LinearGradientBrush StartPoint="0,0" EndPoint="0,1"&gt;<br />
      &lt;GradientStop Offset="0" Color="Black"&gt;&lt;/GradientStop&gt;<br />
      &lt;GradientStop Offset="0.6" Color="Transparent"&gt;&lt;/GradientStop&gt;<br />
   &lt;/LinearGradientBrush&gt;<br />
&lt;/Border.OpacityMask&gt;</font></p>
        <p>
This again uses a LinearGradientBrush, with the color being Transparant from 0.6 on.
This means that at 60% of the reflected image, nothing can be seen anymore.<br /><br />
We'll also add a border around the original image in this code. Add the following
code around your image element:<br /><br /><font face="Courier New">&lt;Border BorderBrush="White" BorderThickness="5" HorizontalAlignment="Center"
VerticalAlignment="Center"&gt;<br />
...<br />
&lt;/Border&gt;<br /></font><br />
Your code should now look like the following:<br /></p>
        <p>
          <font face="Courier New">&lt;StackPanel&gt;<br />
   &lt;Border BorderBrush="White" BorderThickness="5" HorizontalAlignment="Center"
VerticalAlignment="Center"&gt;<br />
      &lt;Image Source="image.jpg" Width="200" Height="300"
Stretch="Fill" x:Name="myImage"&gt;&lt;/Image&gt;<br />
   &lt;/Border&gt;<br />
   &lt;Border Width="210" Height="300"&gt;<br />
      &lt;Border.Background&gt;<br />
         &lt;VisualBrush Visual="{Binding
ElementName=myImage}"&gt;<br />
            &lt;VisualBrush.Transform&gt;<br />
               &lt;ScaleTransform
ScaleX="1" ScaleY="-1" CenterX="200" CenterY="150"&gt;&lt;/ScaleTransform&gt;<br />
            &lt;/VisualBrush.Transform&gt;<br />
         &lt;/VisualBrush&gt;<br />
      &lt;/Border.Background&gt;<br />
      &lt;Border.OpacityMask&gt;<br />
         &lt;LinearGradientBrush StartPoint="0,0"
EndPoint="0,1"&gt;<br />
            &lt;GradientStop
Offset="0" Color="Black"&gt;&lt;/GradientStop&gt;<br />
            &lt;GradientStop
Offset="0.6" Color="Transparent"&gt;&lt;/GradientStop&gt;<br />
         &lt;/LinearGradientBrush&gt;<br />
      &lt;/Border.OpacityMask&gt;<br />
   &lt;/Border&gt;<br />
&lt;/StackPanel&gt;<br /></font>
          <br />
And the result should resemble this:<br /><br /><a href="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample32.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="223" src="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample3_thumb.jpg" width="299" border="0" /></a><br /><br /><strong>Skew and Shadows<br /></strong>In the latest part of this tutorial, I'm going to add a shadow to the original
image, and skew both the images, to create a 3D effect.<br />
First, the shadow. Shadows are created using a BitmapEffect. A bitmap effect takes
visual content as input and produces a new surface by applying one or more image filters,
such as a blur or a drop shadow. Currently, there are, among other, the DropShadowEffect,
the BlurBitmapEffect and the EmbossBitmapEffect. More might be added later. We'll
focus on the DropShadowEffect for now. Information on the other effects can be found
in the Windows SDK.<br /><br />
Add the following code to the Border where the original images resides:<br /></p>
        <p>
          <font face="Courier New">&lt;Border.BitmapEffect&gt;<br />
   &lt;BitmapEffectGroup&gt;<br />
      &lt;DropShadowBitmapEffect Color="Black" Direction="20"
ShadowDepth="25" Softness="1" <br />
         Opacity="0.5"/&gt;<br />
   &lt;/BitmapEffectGroup&gt;<br />
&lt;/Border.BitmapEffect&gt;</font>
        </p>
        <p>
This adds the dropshadow to the white border containing the image. These properties
are self-explaining, so I'm not going any deeper into this.<br /><br />
Now, to finish, we have to skew both the image and the reflection to create the effect
of depth. For this, we'll again use a transformation, this time a RenderTransform.
The Angle-properties provided indicate the angle for the rotation.<br />
The following code has to be added to the original image. 
</p>
        <p>
          <font face="Courier New">&lt;Border.RenderTransform&gt;<br />
   &lt;SkewTransform CenterX="0" CenterY="0" AngleX="0" AngleY="10"
/&gt;<br />
&lt;/Border.RenderTransform&gt;</font>
        </p>
        <p>
The reflection needs a re-centering, so we provide a value for the CenterX and CenterY
properties.<br /><br />
The result you get should like the following:<br /><br /><a href="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample43.jpg" atomicselection="true"><img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="288" src="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample4_thumb1.jpg" width="388" border="0" /></a><br /><br />
I hope this WPF example can help you in creating great layouts with this fantastic
new language!<br /><br />
The complete solution can be downloaded below.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/ImageEffects.zip">ImageEffects.zip
(120.66 KB)</a>
          <br />
          <br />
Note that you need Visual Studio 2005/Visual C# Express with .net 3.0 installed. This
code is tested with the June CTP.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=dbdf7a54-6388-4c89-ad86-30120dcbf905" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>WPF tutorial: how to create great image effects with WPF/XAML</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,dbdf7a54-6388-4c89-ad86-30120dcbf905.aspx</guid>
      <link>http://www.snowball.be/2006/08/18/WPF+Tutorial+How+To+Create+Great+Image+Effects+With+WPFXAML.aspx</link>
      <pubDate>Fri, 18 Aug 2006 21:15:10 GMT</pubDate>
      <description>&lt;p&gt;
In this tutorial, I'm going to explain several 2D effects that can be performed on
images, using only XAML code. By the end of this tutorial, you'll know:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
how to create image refections 
&lt;li&gt;
how to skew images 
&lt;li&gt;
how to drop shadows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
So let's get to it!&lt;br&gt;
&lt;br&gt;
Create an empty WinFX application. We'll use the Window1.xaml. 
&lt;br&gt;
Make the background of the image somewhat darker, so we can better see the effects
we'll create further on. For this, simply use the Window.Background property. Also,
set the Height to 600 and Width to 800.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Window x:Class="Reflection.Window1"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns="&lt;/font&gt;&lt;a href='http://schemas.microsoft.com/winfx/2006/xaml/presentation"'&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:x="&lt;/font&gt;&lt;a href='http://schemas.microsoft.com/winfx/2006/xaml"'&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml"&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Title="Reflection" Height="600" Width="800"&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Background="#CCCCCC"&lt;br&gt;
&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Add the image to your project&lt;br&gt;
&lt;/strong&gt;Select an image to include in your project. I'll do this tutorial with the
image included in my project, but you can of course use any image you want. The image
has to be included in your project. Once included, go to the properties window, and
with the image selected in the solution explorer, set the "Build Action" to "Content"
and "Copy to output directory" to "Copy always". This ensures that the image will
be available when running the project.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Let's XAML&lt;br&gt;
&lt;/strong&gt;Finally, we're ready to do some XAML'ing (don't know if that is already a
word, but I vote it should become one though!).&lt;br&gt;
Since we will not be needing any advanced layout of the window, we'll use a simple
StackPanel. By default, a stackpanel places all content it receives in 1 invisible
vertical column. That's enough for this sample.&lt;br&gt;
&lt;br&gt;
So, delete the &lt;font face="Courier New"&gt;&amp;lt;Grid&amp;gt;&lt;/font&gt; and &lt;font face="Courier New"&gt;&amp;lt;/Grid&amp;gt;&lt;/font&gt; and
replace them with &amp;lt;StackPanel&amp;gt; and &amp;lt;/StackPanel&amp;gt;.&lt;br&gt;
&lt;br&gt;
For the image effects, we'll need ... an image. Add an simple image element to begin
with. Also, give it a name, we'll be needing this name later on. Use the following
code:&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Image Source="image.jpg" Width="200" Height="300" x:Name="myImage"&amp;gt;&amp;lt;/Image&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
We'll now start adding the reflection effect. For reflections, the VisualBrush is
very handy.&lt;br&gt;
What is the VisualBrush? It's a brush, like DrawingBrush, but it can paint with the
contents of any other visual element that derives from Visual. Since Visual is the
base class of all UI elements in WPF, you can paint with almost any markup in a VisualBrush.&lt;br&gt;
Before we can reflect our image, we must add an element in which we can make the reflection
appear. You can do this with a Rectangle, a Border...&lt;br&gt;
For now, I'll use the Border. Add the Border element to the same StackPanel where
you put the image. Since it's a StackPanel, the border is put below the Image (you
can visualize this by setting the Background to some color).&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Border Width="210" Height="300"&amp;gt;&amp;lt;/Border&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Now, we'll use the recently introduced VisualBrush to fill the background of the Border
with the contents of the image (this is why we needed to name the image!).&lt;br&gt;
Add a VisualBrush to the Border like so:&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Border.Background&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;VisualBrush Visual="{Binding ElementName=myImage}"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/VisualBrush&amp;gt;&lt;br&gt;
&amp;lt;/Border.Background&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
You should now see something like this:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample22.jpg" atomicselection="true"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=272 src="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample2_thumb.jpg" width=367 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Of course, for a reflection, we need a mirror effect. This can be achieved by adding
a ScaleTransform on the VisualBrush. By providing a value of -1, the image will be
flipped around the Y-axis.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;VisualBrush.Transform&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ScaleTransform ScaleX="1" ScaleY="-1" CenterX="200" CenterY="150"&amp;gt;&amp;lt;/ScaleTransform&amp;gt;&lt;br&gt;
&amp;lt;/VisualBrush.Transform&amp;gt;&lt;/font&gt; 
&lt;p&gt;
Now, to complete the reflection-part of this tutorial, we'll add an OpacityMask to
the Border. With this in place, we can make the reflected image fade out into the
backgroud, creating a nice effect. 
&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Border.OpacityMask&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;LinearGradientBrush StartPoint="0,0" EndPoint="0,1"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;GradientStop Offset="0" Color="Black"&amp;gt;&amp;lt;/GradientStop&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;GradientStop Offset="0.6" Color="Transparent"&amp;gt;&amp;lt;/GradientStop&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/LinearGradientBrush&amp;gt;&lt;br&gt;
&amp;lt;/Border.OpacityMask&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
This again uses a LinearGradientBrush, with the color being Transparant from 0.6 on.
This means that at 60% of the reflected image, nothing can be seen anymore.&lt;br&gt;
&lt;br&gt;
We'll also add a border around the original image in this code. Add the following
code around your image element:&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Border BorderBrush="White" BorderThickness="5" HorizontalAlignment="Center"
VerticalAlignment="Center"&amp;gt;&lt;br&gt;
...&lt;br&gt;
&amp;lt;/Border&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
Your code should now look like the following:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;StackPanel&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Border BorderBrush="White" BorderThickness="5" HorizontalAlignment="Center"
VerticalAlignment="Center"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Image Source="image.jpg" Width="200" Height="300"
Stretch="Fill" x:Name="myImage"&amp;gt;&amp;lt;/Image&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Border&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Border Width="210" Height="300"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Border.Background&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;VisualBrush Visual="{Binding
ElementName=myImage}"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;VisualBrush.Transform&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ScaleTransform
ScaleX="1" ScaleY="-1" CenterX="200" CenterY="150"&amp;gt;&amp;lt;/ScaleTransform&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/VisualBrush.Transform&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/VisualBrush&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Border.Background&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Border.OpacityMask&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;LinearGradientBrush StartPoint="0,0"
EndPoint="0,1"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;GradientStop
Offset="0" Color="Black"&amp;gt;&amp;lt;/GradientStop&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;GradientStop
Offset="0.6" Color="Transparent"&amp;gt;&amp;lt;/GradientStop&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/LinearGradientBrush&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Border.OpacityMask&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Border&amp;gt;&lt;br&gt;
&amp;lt;/StackPanel&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
And the result should resemble this:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample32.jpg" atomicselection="true"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 src="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample3_thumb.jpg" width=299 border=0&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Skew and Shadows&lt;br&gt;
&lt;/strong&gt;In the latest part of this tutorial, I'm going to add a shadow to the original
image, and skew&amp;nbsp;both the images, to create a 3D effect.&lt;br&gt;
First, the shadow. Shadows are created using a BitmapEffect. A bitmap effect takes
visual content as input and produces a new surface by applying one or more image filters,
such as a blur or a drop shadow. Currently, there are, among other, the DropShadowEffect,
the BlurBitmapEffect and the EmbossBitmapEffect. More might be added later. We'll
focus on the DropShadowEffect for now. Information on the other effects can be found
in the Windows SDK.&lt;br&gt;
&lt;br&gt;
Add the following code to the Border where the original images resides:&lt;br&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;Border.BitmapEffect&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;BitmapEffectGroup&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DropShadowBitmapEffect Color="Black" Direction="20"
ShadowDepth="25" Softness="1"&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Opacity="0.5"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/BitmapEffectGroup&amp;gt;&lt;br&gt;
&amp;lt;/Border.BitmapEffect&amp;gt;&lt;/font&gt; 
&lt;p&gt;
This adds the dropshadow to the white border containing the image. These properties
are self-explaining, so I'm not going any deeper into this.&lt;br&gt;
&lt;br&gt;
Now, to finish, we have to skew both the image and the reflection to create the effect
of depth. For this, we'll again use a transformation, this time a RenderTransform.
The Angle-properties provided indicate the angle for the rotation.&lt;br&gt;
The following code has to be added to the original image. 
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;Border.RenderTransform&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;SkewTransform CenterX="0" CenterY="0" AngleX="0" AngleY="10"
/&amp;gt;&lt;br&gt;
&amp;lt;/Border.RenderTransform&amp;gt;&lt;/font&gt; 
&lt;p&gt;
The reflection needs a re-centering, so we provide a value for the CenterX and CenterY
properties.&lt;br&gt;
&lt;br&gt;
The result you get should like the following:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample43.jpg" atomicselection="true"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=288 src="http://www.snowball.be/content/binary/WPFtutorialhowtocreategreatimageeffectsw_12DE0/2Dsample4_thumb1.jpg" width=388 border=0&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
I hope this WPF example can help you in creating great layouts with this fantastic
new language!&lt;br&gt;
&lt;br&gt;
The complete solution can be downloaded below.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.snowball.be/content/binary/ImageEffects.zip"&gt;ImageEffects.zip
(120.66 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Note that you need Visual Studio 2005/Visual C# Express with .net 3.0 installed. This
code is tested with the June CTP.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=dbdf7a54-6388-4c89-ad86-30120dcbf905" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,dbdf7a54-6388-4c89-ad86-30120dcbf905.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>WinFX</category>
      <category>WPF</category>
      <category>XAML</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=bfa7e03e-1b64-4d68-8455-a402362e987b</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,bfa7e03e-1b64-4d68-8455-a402362e987b.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,bfa7e03e-1b64-4d68-8455-a402362e987b.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=bfa7e03e-1b64-4d68-8455-a402362e987b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm through with learning WPF (Windows Presentation Foundation), so now I'll have
more time to write some samples for my blog, so everybode can start learning a little
on WPF (that double-U-P-F ;-) ).<br /><br />
Today, I'm going to show you a small sample, in which I use a gradient and a storyboard
to create a sort of a flashing circle. This could be used to draw the user's attention
to something in the UI.<br /><br />
Here is the sample code:<br /><br /></p>
        <p>
          <font face="Courier New">&lt;Page xmlns="</font>
          <a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;">
            <font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml/presentation"</font>
          </a>
          <br />
          <font face="Courier New">xmlns:x=</font>
          <a href="http://schemas.microsoft.com/winfx/2006/xaml">
            <font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml</font>
          </a>
          <font face="Courier New">
            <br />
          </font>
          <font face="Courier New">WindowTitle="www.snowball.be - WPF Examples" Background="White"&gt;<br />
&lt;DockPanel&gt;<br />
   &lt;Ellipse Width="200" Height="200" Name="MyEllipse"&gt;<br />
      &lt;Ellipse.Fill&gt;<br />
         &lt;RadialGradientBrush &gt;<br />
            &lt;GradientStop
Offset="0" Color="#CCCCCCCC" /&gt;<br />
            &lt;GradientStop
Offset="0.5" Color="white" /&gt;<br />
            &lt;GradientStop
Offset="1" Color="black"/&gt;<br />
         &lt;/RadialGradientBrush &gt;<br />
      &lt;/Ellipse.Fill&gt;<br />
   &lt;/Ellipse&gt;<br />
&lt;DockPanel.Triggers&gt;<br />
   &lt;EventTrigger RoutedEvent="Page.Loaded"&gt;<br />
      &lt;BeginStoryboard Name="MyBeginStoryBoard"&gt;<br />
         &lt;Storyboard Name="MyStoryBoard"&gt;<br />
            &lt;DoubleAnimation
Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Height)" <br />
               From="0"
To="200" AutoReverse="true"<br />
               RepeatBehavior="0:0:10"
BeginTime="0:0:0" /&gt;<br />
            &lt;DoubleAnimation
Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Width)" <br />
               From="0"
To="200" AutoReverse="true"<br />
               RepeatBehavior="0:0:10"
BeginTime="0:0:0" /&gt;<br />
         &lt;/Storyboard&gt;<br />
      &lt;/BeginStoryboard&gt;<br />
   &lt;/EventTrigger&gt;<br />
&lt;/DockPanel.Triggers&gt;<br />
&lt;/DockPanel&gt;<br />
&lt;/Page&gt;<br /></font>
          <br />
First, I create an circle, which is actually an ellipse with identical width and height
(one could also use the RadiusX and RadiusY properties, the result would be the same). 
<br /><br /><font face="Courier New">&lt;Ellipse Width="200" Height="200" Name="MyEllipse"&gt;</font><br /><br />
Then, we use a Brush, in this case, the RadialGradientBrush, to create a gradient
fill in the ellipse. No longer are the "GradientStops" or the "GradientStopsCollection"
tags neccessary (they were in previous CTP's, but now they can be omitted).<br />
To specify the colors, we use several GradientStop elements. The offset specifies
where the color should "start". This is a relative value, and thus can't be more than
1. In this case, I specify 3 colors.<br /><br /><font face="Courier New">&lt;GradientStop Offset="0" Color="#CCCCCCCC" /&gt;<br />
&lt;GradientStop Offset="0.5" Color="white" /&gt;<br />
&lt;GradientStop Offset="1" Color="black"/&gt;<br /></font><br />
Now, to create the flashing effect, we have to use an animation. To start the animation,
we use a trigger, in this case, an event trigger, which is routed to the Loaded event.
This results in the trigger firing when the page loads. 
<br /><br /><font face="Courier New">&lt;EventTrigger RoutedEvent="Page.Loaded"&gt;</font><br /><br />
For the animation itself, we use the storyboard. In this storyboard, which is like
the name says, a series of steps that will be executed. You can compare it to a band
of drawings that form a comic.<br />
The storyboard thus consists of several animations. In this case, I use a DoubleAnimation,
because the property I'm going to change, is of value Double: I'm going to alter the
Height and Width property of the Ellipse. These are indeed Double values.<br /><br />
In the first animation, I specify that I want to animate the ellipse I created earlier,
by setting the TargetName, and the property I want to change is the Height. In the
From and the To properties, I specify what the values for the Height should be. In
this case, I want the ellipse to pop up out of nothing, so I set the From to 0 and
the To to 200. 
<br /><br />
The RepeatBehavior property specifies how long this animation should repeat, in this
case, I set it to 10 seconds. Note that several animations can have different RepeatBehaviors:
one can go one longer than the other. The BeginTime simply specifies when the animation
should start: you can build in a delay.<br />
Finally, the AutoReverse property indicates that WPF should reverse the animation
after completed.<br /><br />
The second animation does essentially the same, but for the width.<br />
Both these animations can't be grouped into one, which is a pity.<br /><br />
The result looks like this:<br /><br /></p>
        <img height="510" src="http://www.snowball.be/content/binary/WPFanimation.JPG" width="762" border="0" />
        <br />
        <br />
        <a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/WPF+Examples+A+Small+Example+On+Animation+And+Gradients.aspx">
          <img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.snowball.be/WPF+Examples+A+Small+Example+On+Animation+And+Gradients.aspx" border="0" />
        </a>
        <br />
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=bfa7e03e-1b64-4d68-8455-a402362e987b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>WPF Examples: a small example on animation and gradients</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,bfa7e03e-1b64-4d68-8455-a402362e987b.aspx</guid>
      <link>http://www.snowball.be/2006/08/18/WPF+Examples+A+Small+Example+On+Animation+And+Gradients.aspx</link>
      <pubDate>Fri, 18 Aug 2006 16:37:02 GMT</pubDate>
      <description>&lt;p&gt;
I'm through with learning WPF (Windows Presentation Foundation), so now I'll have
more time to write some samples for my blog, so everybode can start learning a little
on WPF (that double-U-P-F ;-) ).&lt;br&gt;
&lt;br&gt;
Today, I'm going to show you a small sample, in which I use a gradient and a storyboard
to create a sort of a flashing circle. This could be used to draw the user's attention
to something in the UI.&lt;br&gt;
&lt;br&gt;
Here is the sample code:&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;Page xmlns="&lt;/font&gt;&lt;a href='http://schemas.microsoft.com/winfx/2006/xaml/presentation"'&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/font&gt;&lt;/a&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;xmlns:x=&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt; 
&lt;br&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;WindowTitle="www.snowball.be - WPF Examples" Background="White"&amp;gt;&lt;br&gt;
&amp;lt;DockPanel&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Ellipse Width="200" Height="200" Name="MyEllipse"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Ellipse.Fill&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;RadialGradientBrush &amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;GradientStop
Offset="0" Color="#CCCCCCCC" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;GradientStop
Offset="0.5" Color="white" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;GradientStop
Offset="1" Color="black"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/RadialGradientBrush &amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Ellipse.Fill&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Ellipse&amp;gt;&lt;br&gt;
&amp;lt;DockPanel.Triggers&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;EventTrigger RoutedEvent="Page.Loaded"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;BeginStoryboard Name="MyBeginStoryBoard"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Storyboard Name="MyStoryBoard"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DoubleAnimation
Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Height)"&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;From="0"
To="200" AutoReverse="true"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RepeatBehavior="0:0:10"
BeginTime="0:0:0" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DoubleAnimation
Storyboard.TargetName="MyEllipse" Storyboard.TargetProperty="(Ellipse.Width)"&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;From="0"
To="200" AutoReverse="true"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RepeatBehavior="0:0:10"
BeginTime="0:0:0" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Storyboard&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/BeginStoryboard&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/EventTrigger&amp;gt;&lt;br&gt;
&amp;lt;/DockPanel.Triggers&amp;gt;&lt;br&gt;
&amp;lt;/DockPanel&amp;gt;&lt;br&gt;
&amp;lt;/Page&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
First, I create an circle, which is actually an ellipse with identical width and height
(one could also use the RadiusX and RadiusY properties, the result would be the same). 
&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Ellipse Width="200" Height="200" Name="MyEllipse"&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
Then, we use a Brush, in this case, the RadialGradientBrush, to create a gradient
fill in the ellipse. No longer are the "GradientStops" or the "GradientStopsCollection"
tags neccessary (they were in previous CTP's, but now they can be omitted).&lt;br&gt;
To specify the colors, we use several GradientStop elements. The offset specifies
where the color should "start". This is a relative value, and thus can't be more than
1. In this case, I specify 3 colors.&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;GradientStop Offset="0" Color="#CCCCCCCC" /&amp;gt;&lt;br&gt;
&amp;lt;GradientStop Offset="0.5" Color="white" /&amp;gt;&lt;br&gt;
&amp;lt;GradientStop Offset="1" Color="black"/&amp;gt;&lt;br&gt;
&lt;/font&gt;
&lt;br&gt;
Now, to create the flashing effect, we have to use an animation. To start the animation,
we use a trigger, in this case, an event trigger, which is routed to the Loaded event.
This results in the trigger firing when the page loads. 
&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;EventTrigger RoutedEvent="Page.Loaded"&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
For the animation itself, we use the storyboard. In this storyboard, which is like
the name says, a series of steps that will be executed. You can compare it to a band
of drawings that form a comic.&lt;br&gt;
The storyboard thus consists of several animations. In this case, I use a DoubleAnimation,
because the property I'm going to change, is of value Double: I'm going to alter the
Height and Width property of the Ellipse. These are indeed Double values.&lt;br&gt;
&lt;br&gt;
In the first animation, I specify that I want to animate the ellipse I created earlier,
by setting the TargetName, and the property I want to change is the Height. In the
From and the To properties, I specify what the values for the Height should be. In
this case, I want the ellipse to pop up out of nothing, so I set the From to 0 and
the To to 200. 
&lt;br&gt;
&lt;br&gt;
The RepeatBehavior property specifies how long this animation should repeat, in this
case, I set it to 10 seconds. Note that several animations can have different RepeatBehaviors:
one can go one longer than the other. The BeginTime simply specifies when the animation
should start: you can build in a delay.&lt;br&gt;
Finally, the AutoReverse property indicates that WPF should reverse the animation
after completed.&lt;br&gt;
&lt;br&gt;
The second animation does essentially the same, but for the width.&lt;br&gt;
Both these animations can't be grouped into one, which is a pity.&lt;br&gt;
&lt;br&gt;
The result looks like this:&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img height=510 src="http://www.snowball.be/content/binary/WPFanimation.JPG" width=762 border=0&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/WPF+Examples+A+Small+Example+On+Animation+And+Gradients.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.snowball.be/WPF+Examples+A+Small+Example+On+Animation+And+Gradients.aspx" border=0&gt;&lt;/a&gt; 
&lt;br&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=bfa7e03e-1b64-4d68-8455-a402362e987b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,bfa7e03e-1b64-4d68-8455-a402362e987b.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>Visual Studio.net</category>
      <category>WinFX</category>
      <category>WPF</category>
      <category>XAML</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=7dfc3df4-194e-4aa4-94f1-03cd3d0513d9</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,7dfc3df4-194e-4aa4-94f1-03cd3d0513d9.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,7dfc3df4-194e-4aa4-94f1-03cd3d0513d9.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=7dfc3df4-194e-4aa4-94f1-03cd3d0513d9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Already added 2 posts about new stuff today, so I'm going to bundle these last 2 for
today...<br /><br />
Yesterday, while I was at Disneyland (you can see my pics on my Flickr account...),
MS released SP1 for Visual Studio 2003. It's a 160MB download, and once installed,
you can't return without uninstalling, so install with care!<br /><br />
Go <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=69d2219f-ce82-46a5-8aec-072bd4bb955e&amp;DisplayLang=en">here</a> for
the download.<br /><br />
Something I came across are Nuggets. In Disneyland, you might ask? Yes, there
were Chicken Nuggets, but since this a technical blog, I'm not going to bother you
with what I ate... I'm talking about MSDN nuggets, hosted by Microsoft UK.
</p>
        <p>
          <em>Don't have the time to read a 10-page how-to article or watch a full length webcast?
Try an MSDN Nugget, a webcast that takes you step-by-step to discovering new functionality
or exploring a hot developer topic, all in 10-15 minutes. View them online now or
download for later reference.</em>
        </p>
        <p>
Head over <a href="http://www.microsoft.com/uk/msdn/events/nuggets.aspx">here</a> for
a lot of good content!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7dfc3df4-194e-4aa4-94f1-03cd3d0513d9" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Visual Studio 2003 SP1 + Nuggets</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,7dfc3df4-194e-4aa4-94f1-03cd3d0513d9.aspx</guid>
      <link>http://www.snowball.be/2006/08/17/Visual+Studio+2003+SP1+Nuggets.aspx</link>
      <pubDate>Thu, 17 Aug 2006 13:44:17 GMT</pubDate>
      <description>&lt;p&gt;
Already added 2 posts about new stuff today, so I'm going to bundle these last 2 for
today...&lt;br&gt;
&lt;br&gt;
Yesterday, while I was at Disneyland (you can see my pics on my Flickr account...),
MS released SP1 for Visual Studio 2003. It's a&amp;nbsp;160MB download, and once installed,
you can't return without uninstalling, so install with care!&lt;br&gt;
&lt;br&gt;
Go &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=69d2219f-ce82-46a5-8aec-072bd4bb955e&amp;amp;DisplayLang=en"&gt;here&lt;/a&gt; for
the&amp;nbsp;download.&lt;br&gt;
&lt;br&gt;
Something I came across are Nuggets. In Disneyland, you might ask?&amp;nbsp;Yes, there
were Chicken Nuggets, but since this a technical blog, I'm not going to bother you
with what I ate... I'm talking about MSDN nuggets, hosted by Microsoft UK.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Don't have the time to read a 10-page how-to article or watch a full length webcast?
Try an MSDN Nugget, a webcast that takes you step-by-step to discovering new functionality
or exploring a hot developer topic, all in 10-15 minutes. View them online now or
download for later reference.&lt;/em&gt; 
&lt;p&gt;
Head over &lt;a href="http://www.microsoft.com/uk/msdn/events/nuggets.aspx"&gt;here&lt;/a&gt; for
a lot of good&amp;nbsp;content!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7dfc3df4-194e-4aa4-94f1-03cd3d0513d9" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,7dfc3df4-194e-4aa4-94f1-03cd3d0513d9.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>Software</category>
      <category>Visual Studio.net</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=c361c8ce-863a-4ee5-a76b-71d3082263a4</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,c361c8ce-863a-4ee5-a76b-71d3082263a4.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,c361c8ce-863a-4ee5-a76b-71d3082263a4.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=c361c8ce-863a-4ee5-a76b-71d3082263a4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week, a collegue of mine told me about a video on the ADO.net entity framework
over at Channel9. I watched it, and was very impressed.<br /><br />
Today, MS released the first CTP for this framework that is to be included later on
in the .net framework.  
</p>
        <p>
From the release notes:<br /></p>
        <p>
          <em>This package is the first Community Technology Preview (CTP) of ADO.NET vNext
and includes the preview build of the ADO.NET Entity Framework along with samples
and whitepapers. The ADO.NET Entity Framework supports Object Relational Mapping scenarios
using ADO.NET Entities, in this build you can:<br />
- Query of persistent Entities using LINQ to Entities or Entity SQL<br />
- Save new and dirtied entity instances through the object abstractions which also
handle<br />
o State management<br />
o Identity resolution<br />
o Change tracking<br />
- Work with persistent object graphs and leverage a programming and query model where
relationships are a first class concept<br />
- Use optimistic concurrency and server generated values with persistent entities<br />
- Program against persistent entities as values using the new Map Provider<br />
- Get first hand experience with Entities and the Entity Data Model<br />
- Work with mappings based on view maintenance concepts to support<br />
o Entity Splitting (entities split across multiple tables)<br />
o Table Per Hierarchy, Table Per Class and Table Per Type mappings<br />
o Property renaming<br />
o Conditional mappings<br /><br /></em>It's a small download, if you want to give it a try, head over to <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b68f6f53-ec87-4122-b1c8-ee24a043bf72&amp;DisplayLang=en" target="_blank">Microsoft
downloads</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c361c8ce-863a-4ee5-a76b-71d3082263a4" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>ADO.net Entity Framework first CTP available now</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,c361c8ce-863a-4ee5-a76b-71d3082263a4.aspx</guid>
      <link>http://www.snowball.be/2006/08/17/ADOnet+Entity+Framework+First+CTP+Available+Now.aspx</link>
      <pubDate>Thu, 17 Aug 2006 13:31:15 GMT</pubDate>
      <description>&lt;p&gt;
Last week, a collegue of mine told me about a video on the ADO.net entity framework
over at Channel9. I watched it, and was very impressed.&lt;br&gt;
&lt;br&gt;
Today, MS released the first CTP for this framework that is to be included later on
in the .net framework.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
From the release notes:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;This package is the first Community Technology Preview (CTP) of ADO.NET vNext
and includes the preview build of the ADO.NET Entity Framework along with samples
and whitepapers. The ADO.NET Entity Framework supports Object Relational Mapping scenarios
using ADO.NET Entities, in this build you can:&lt;br&gt;
- Query of persistent Entities using LINQ to Entities or Entity SQL&lt;br&gt;
- Save new and dirtied entity instances through the object abstractions which also
handle&lt;br&gt;
o State management&lt;br&gt;
o Identity resolution&lt;br&gt;
o Change tracking&lt;br&gt;
- Work with persistent object graphs and leverage a programming and query model where
relationships are a first class concept&lt;br&gt;
- Use optimistic concurrency and server generated values with persistent entities&lt;br&gt;
- Program against persistent entities as values using the new Map Provider&lt;br&gt;
- Get first hand experience with Entities and the Entity Data Model&lt;br&gt;
- Work with mappings based on view maintenance concepts to support&lt;br&gt;
o Entity Splitting (entities split across multiple tables)&lt;br&gt;
o Table Per Hierarchy, Table Per Class and Table Per Type mappings&lt;br&gt;
o Property renaming&lt;br&gt;
o Conditional mappings&lt;br&gt;
&lt;br&gt;
&lt;/em&gt;It's a small download, if you want to give it a try, head over to &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b68f6f53-ec87-4122-b1c8-ee24a043bf72&amp;amp;DisplayLang=en" target=_blank&gt;Microsoft
downloads&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c361c8ce-863a-4ee5-a76b-71d3082263a4" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,c361c8ce-863a-4ee5-a76b-71d3082263a4.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>WinFX</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=0a7de736-4c64-4b2b-bc9d-1de89a39fd54</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,0a7de736-4c64-4b2b-bc9d-1de89a39fd54.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,0a7de736-4c64-4b2b-bc9d-1de89a39fd54.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=0a7de736-4c64-4b2b-bc9d-1de89a39fd54</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
More and more languages seem to be getting "the .net treatment". Next on the list
is PHP.<br />
Microsoft is hosting a project on its CodePlex site to deliver a PHP language compiler
for the .Net Framework. 
</p>
        <p>
The project's name is as Phalanger, the project reached Version 2.0 Beta 2 on July
30.<br /><br /><em>The primary goal of the project, released under Microsoft Shared Source Permissive
License, is to enable full functionality of existing PHP scripts on .Net without any
modification, Microsoft said. </em></p>
        <p>
          <em>Unlike the original PHP interpreter, Phalanger compiles scripts into MSIL (Microsoft
Intermediate Language). </em>
        </p>
        <p>
The object model in Phalanger is compatible with PHP 5.0, and it lets developers combine
PHP objects with .Net ones. 
</p>
        <p>
In fact, developers can use a class written in PHP from a .Net application or to import
a .Net class—that might be written in C# or Visual Basic—into PHP scripts.<br /><br />
Currently, one of the major features is to incorporate Phalanger in Visual Studio.net.<br /><br />
More on this can be found at CodePlex.com!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0a7de736-4c64-4b2b-bc9d-1de89a39fd54" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>PHP.net to come &amp;quot;soon&amp;quot;</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,0a7de736-4c64-4b2b-bc9d-1de89a39fd54.aspx</guid>
      <link>http://www.snowball.be/2006/08/14/PHPnet+To+Come+Quotsoonquot.aspx</link>
      <pubDate>Mon, 14 Aug 2006 12:56:14 GMT</pubDate>
      <description>&lt;p&gt;
More and more languages seem to be getting "the .net treatment". Next on the list
is PHP.&lt;br&gt;
Microsoft is hosting a project on its CodePlex site to deliver a PHP language compiler
for the .Net Framework. 
&lt;/p&gt;
&lt;p&gt;
The project's name is as Phalanger, the project reached Version 2.0 Beta 2 on July
30.&lt;br&gt;
&lt;br&gt;
&lt;em&gt;The primary goal of the project, released under Microsoft Shared Source Permissive
License, is to enable full functionality of existing PHP scripts on .Net without any
modification, Microsoft said. &lt;/em&gt; 
&lt;p&gt;
&lt;em&gt;Unlike the original PHP interpreter, Phalanger compiles scripts into MSIL (Microsoft
Intermediate Language). &lt;/em&gt; 
&lt;p&gt;
The object model in Phalanger is compatible with PHP 5.0, and it lets developers combine
PHP objects with .Net ones. 
&lt;p&gt;
In fact, developers can use a class written in PHP from a .Net application or to import
a .Net class—that might be written in C# or Visual Basic—into PHP scripts.&lt;br&gt;
&lt;br&gt;
Currently, one of the major features is to incorporate Phalanger in Visual Studio.net.&lt;br&gt;
&lt;br&gt;
More on this can be found at CodePlex.com!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0a7de736-4c64-4b2b-bc9d-1de89a39fd54" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,0a7de736-4c64-4b2b-bc9d-1de89a39fd54.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>Visual Studio.net</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=3974b3f7-173f-4770-886e-da1994e0dff9</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,3974b3f7-173f-4770-886e-da1994e0dff9.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,3974b3f7-173f-4770-886e-da1994e0dff9.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=3974b3f7-173f-4770-886e-da1994e0dff9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday, Microsoft announced during the Gamefest 2006-event in Seattle, the XNA
Game Studio Express. Like the name says, it is a development tool to allow developers,
hobbyists and students to write games for the PC and XBox360.<br /><br />
Like the other express editions, it will be available for free, at least if you want
to develop for the PC. If however you want to develop for the 360, a fee of 99 dollar
is to be payed. This way, developers get access to the "Creators Club". Members of
this club can build and test their games on the 360 platform. The distribution of
these home-brewn games is probably to be done via the Xbox Live Arcade. 
<br /><br />
The mayor reason Microsoft wants to attract more people to developing games, is the
current cost involved these days to develop a full-blown game. "Big" games cost big
money and take up to 3 years to develop. Companies like EA, MS... don't dare to take
risks to develop anything new, so the creativity is limited. Developers can't really
try out new concepts. With these tools, more people are able to make their ideas into
reality, perhaps opening up a whole new world for the game-industry.<br />
Over time, MS hopes to have an entire community where people can distribute their
games, and can express their opinion on other games, seperating the hits from the
flops.<br /><br />
Now, about the launch date... Microsoft is expecting to launch the first CTP by the
end of August. The final version will be released be released in November or perhaps
December of this year!<br />
The programming language used will be C#.<br /><br />
Microsoft is said to be doing this to keep get more people on the 360 platform, and
keep them away from the PS3, which is due somewhere later this year.<br /><br /></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3974b3f7-173f-4770-886e-da1994e0dff9" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Microsoft launching new developer tool for games</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,3974b3f7-173f-4770-886e-da1994e0dff9.aspx</guid>
      <link>http://www.snowball.be/2006/08/14/Microsoft+Launching+New+Developer+Tool+For+Games.aspx</link>
      <pubDate>Mon, 14 Aug 2006 10:25:31 GMT</pubDate>
      <description>&lt;p&gt;
Yesterday, Microsoft announced during the Gamefest 2006-event in Seattle, the&amp;nbsp;XNA
Game Studio Express. Like the name says, it is a development tool to allow developers,
hobbyists and students to write games for the PC and XBox360.&lt;br&gt;
&lt;br&gt;
Like the other express editions, it will be available for free, at least if you want
to develop for the PC. If however you want to develop for the 360, a fee of 99 dollar
is to be payed. This way, developers get access to the "Creators Club". Members of
this club can build and test their games on the 360 platform. The distribution of
these home-brewn games is probably to be done via the Xbox Live Arcade. 
&lt;br&gt;
&lt;br&gt;
The mayor reason Microsoft wants to attract more people to developing games, is the
current cost involved these days to develop a full-blown game. "Big" games cost big
money and take up to 3 years to develop. Companies like EA, MS... don't dare to take
risks to develop anything new, so the creativity is limited. Developers can't really
try out new concepts. With these tools, more people are able to make their ideas into
reality, perhaps opening up a whole new world for the game-industry.&lt;br&gt;
Over time, MS hopes to have an entire community where people can distribute their
games, and can express their opinion on other games, seperating the hits from the
flops.&lt;br&gt;
&lt;br&gt;
Now, about the launch date... Microsoft is expecting to launch the first CTP by the
end of August. The final version will be released be released in November or perhaps
December of this year!&lt;br&gt;
The programming language used will be C#.&lt;br&gt;
&lt;br&gt;
Microsoft is said to be doing this to keep get more people on the 360 platform, and
keep them away from the PS3, which is due somewhere later this year.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3974b3f7-173f-4770-886e-da1994e0dff9" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,3974b3f7-173f-4770-886e-da1994e0dff9.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming tools</category>
      <category>Software/Microsoft</category>
      <category>Visual Studio.net</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=b258c718-a5c2-495a-9c55-46e7dc486cec</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,b258c718-a5c2-495a-9c55-46e7dc486cec.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,b258c718-a5c2-495a-9c55-46e7dc486cec.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=b258c718-a5c2-495a-9c55-46e7dc486cec</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some links for my students in summerschool in .net:
</p>
        <p>
-<a href="http://www.aisto.com/roeder/dotnet/">Reflector</a>: tool to disassemble
compiled .net code (dll)<br />
-<a href="http://www.snowball.be/ct.ashx?id=e27389e3-f71f-497d-80e9-f27e022f7ef3&amp;url=http%3a%2f%2fdownload.jetbrains.com%2fresharper%2fReSharper2.0-VS2005-build256.exe">Resharper</a>:
plug-in for Visual Studio<br />
-<a href="http://www.snowball.be/Free+MSDN+Event+In+Belgium.aspx">MSDN event</a> in
Kinepolis!!<br />
-<a href="http://msdn.microsoft.com/vstudio/express/">Express editions </a>of Visual
Studio and SQL Server<br />
-Third party controls: <a href="http://infragistics.com/">Infragistics</a><br />
-<a href="http://www.snowball.be/Consolas+Font+Available+For+Download.aspx">Consolas</a> font<br /><br />
If I forgot any, please make a comment and I'll add it.<br /><br /></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b258c718-a5c2-495a-9c55-46e7dc486cec" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Links for starters</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,b258c718-a5c2-495a-9c55-46e7dc486cec.aspx</guid>
      <link>http://www.snowball.be/2006/08/08/Links+For+Starters.aspx</link>
      <pubDate>Tue, 08 Aug 2006 11:14:23 GMT</pubDate>
      <description>&lt;p&gt;
Some links for my students in summerschool in .net:
&lt;/p&gt;
&lt;p&gt;
-&lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Reflector&lt;/a&gt;: tool to disassemble
compiled .net code (dll)&lt;br&gt;
-&lt;a href="http://www.snowball.be/ct.ashx?id=e27389e3-f71f-497d-80e9-f27e022f7ef3&amp;amp;url=http%3a%2f%2fdownload.jetbrains.com%2fresharper%2fReSharper2.0-VS2005-build256.exe"&gt;Resharper&lt;/a&gt;:
plug-in for Visual Studio&lt;br&gt;
-&lt;a href="http://www.snowball.be/Free+MSDN+Event+In+Belgium.aspx"&gt;MSDN event&lt;/a&gt; in
Kinepolis!!&lt;br&gt;
-&lt;a href="http://msdn.microsoft.com/vstudio/express/"&gt;Express editions &lt;/a&gt;of Visual
Studio and SQL Server&lt;br&gt;
-Third party controls: &lt;a href="http://infragistics.com/"&gt;Infragistics&lt;/a&gt;
&lt;br&gt;
-&lt;a href="http://www.snowball.be/Consolas+Font+Available+For+Download.aspx"&gt;Consolas&lt;/a&gt; font&lt;br&gt;
&lt;br&gt;
If I forgot any, please make a comment and I'll add it.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b258c718-a5c2-495a-9c55-46e7dc486cec" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,b258c718-a5c2-495a-9c55-46e7dc486cec.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=b1f844d2-599d-4a8b-b5e1-4ffb9e826609</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,b1f844d2-599d-4a8b-b5e1-4ffb9e826609.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,b1f844d2-599d-4a8b-b5e1-4ffb9e826609.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=b1f844d2-599d-4a8b-b5e1-4ffb9e826609</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
August has only just begun, but the September issue of the Visual Studio magazine
is already <a href="http://msdn.microsoft.com/msdnmag/issues/06/09/default.aspx">here </a>(not
that we're complaining!!).<br /><br /></p>
        <p align="center">
          <img src="http://www.snowball.be/content/binary/September06Coverlg.gif" border="0" />
          <br />
          <br />
        </p>
        <p align="left">
I haven't had the time to read anything, but this month, there are a lot of interesting
articles IMO. 
<br />
The one on Virtual Earth seems very interesting. In this article, the Virtual Earth
API's and the Virtual Earth map control, a JavaScript component that provides all
the functionality you need to draw maps, search for locations, and get driving directions,
are explained.<br /><br />
The article on downloading files are needs reading! Here the author explains how you
can force the browser to start a download window for some file-types, which would
generally be opened in the browser, like for example, a JPEG.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b1f844d2-599d-4a8b-b5e1-4ffb9e826609" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>September issue of the MSDN magazine available</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,b1f844d2-599d-4a8b-b5e1-4ffb9e826609.aspx</guid>
      <link>http://www.snowball.be/2006/08/04/September+Issue+Of+The+MSDN+Magazine+Available.aspx</link>
      <pubDate>Fri, 04 Aug 2006 06:37:42 GMT</pubDate>
      <description>&lt;p&gt;
August has only just begun, but the September issue of the Visual Studio magazine
is already &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/09/default.aspx"&gt;here &lt;/a&gt;(not
that we're complaining!!).&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.snowball.be/content/binary/September06Coverlg.gif" border=0&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p align=left&gt;
I haven't had the time to read anything, but this month, there are a lot of interesting
articles IMO. 
&lt;br&gt;
The one on Virtual Earth seems very interesting. In this article, the Virtual Earth
API's and the Virtual Earth map control, a JavaScript component that provides all
the functionality you need to draw maps, search for locations, and get driving directions,
are explained.&lt;br&gt;
&lt;br&gt;
The article on downloading files are needs reading! Here the author explains how you
can force the browser to start a download window for some file-types, which would
generally be opened in the browser, like for example, a JPEG.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b1f844d2-599d-4a8b-b5e1-4ffb9e826609" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,b1f844d2-599d-4a8b-b5e1-4ffb9e826609.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=8df53f9e-db17-4a82-88e1-183430da71e7</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,8df53f9e-db17-4a82-88e1-183430da71e7.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,8df53f9e-db17-4a82-88e1-183430da71e7.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=8df53f9e-db17-4a82-88e1-183430da71e7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After a short period, Paint.net, one of the largest open-source .net projects out
there, is once again updated, now up to version 2.70.<br /><br />
Some new stuff included in this version:<br /><br />
* New effect: Glow 
<br />
* New effect: Bulge 
<br />
* New effect: Polar Inversion 
<br />
* New effect: Tile Reflection 
<br />
* New effect: Twist<br /><br />
You can download this free imaging tool <a href="http://blogs.msdn.com/rickbrew/archive/2006/08/02/686993.aspx">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8df53f9e-db17-4a82-88e1-183430da71e7" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Paint.net: updated again</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,8df53f9e-db17-4a82-88e1-183430da71e7.aspx</guid>
      <link>http://www.snowball.be/2006/08/03/Paintnet+Updated+Again.aspx</link>
      <pubDate>Thu, 03 Aug 2006 22:15:44 GMT</pubDate>
      <description>&lt;p&gt;
After a short period, Paint.net, one of the largest open-source .net projects out
there, is once again updated, now up to version 2.70.&lt;br&gt;
&lt;br&gt;
Some new stuff included in this version:&lt;br&gt;
&lt;br&gt;
* New effect: Glow 
&lt;br&gt;
* New effect: Bulge 
&lt;br&gt;
* New effect: Polar Inversion 
&lt;br&gt;
* New effect: Tile Reflection 
&lt;br&gt;
* New effect: Twist&lt;br&gt;
&lt;br&gt;
You can download this free imaging tool &lt;a href="http://blogs.msdn.com/rickbrew/archive/2006/08/02/686993.aspx"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8df53f9e-db17-4a82-88e1-183430da71e7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,8df53f9e-db17-4a82-88e1-183430da71e7.aspx</comments>
      <category>.net</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=25908320-0aff-45d8-a61d-3dcefd50c10a</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,25908320-0aff-45d8-a61d-3dcefd50c10a.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,25908320-0aff-45d8-a61d-3dcefd50c10a.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=25908320-0aff-45d8-a61d-3dcefd50c10a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h2>
          <img src="http://www.snowball.be/content/binary/net30_599x300.jpg" border="0" />
        </h2>
        <h2>MSDN Event: .NET Framework 3.0 Development
</h2>
        <p class="blurb">
Learn about .NET Framework 3.0, the upcoming managed-code programming model which
builds on and extends the .NET Framework. 
<br /><br />
The new version of the Framework offers you both practical solutions to today's software
challenges and new opportunities to create software and services not possible now. 
<br /><br />
It enables you, as a developer or designer, to quickly create new applications and
experiences that are more reliable and secure, visually stunning, smarter about information
management, better connected, and more collaborative.<br /><br />
Hurry up, it's free training on the next-generation!! Subscribe <a href="http://www.microsoft.com/belux/msdn/nl/events/2006/net30.mspx">here</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=25908320-0aff-45d8-a61d-3dcefd50c10a" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Free MSDN event in Belgium</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,25908320-0aff-45d8-a61d-3dcefd50c10a.aspx</guid>
      <link>http://www.snowball.be/2006/08/03/Free+MSDN+Event+In+Belgium.aspx</link>
      <pubDate>Thu, 03 Aug 2006 22:05:43 GMT</pubDate>
      <description>&lt;h2&gt;&lt;img src="http://www.snowball.be/content/binary/net30_599x300.jpg" border=0&gt;
&lt;/h2&gt;
&lt;h2&gt;MSDN Event: .NET Framework 3.0 Development
&lt;/h2&gt;
&lt;p class=blurb&gt;
Learn about .NET Framework 3.0, the upcoming managed-code programming model which
builds on and extends the .NET Framework. 
&lt;br&gt;
&lt;br&gt;
The new version of the Framework offers you both practical solutions to today's software
challenges and new opportunities to create software and services not possible now. 
&lt;br&gt;
&lt;br&gt;
It enables you, as a developer or designer, to quickly create new applications and
experiences that are more reliable and secure, visually stunning, smarter about information
management, better connected, and more collaborative.&lt;br&gt;
&lt;br&gt;
Hurry up, it's free training on the next-generation!! Subscribe &lt;a href="http://www.microsoft.com/belux/msdn/nl/events/2006/net30.mspx"&gt;here&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=25908320-0aff-45d8-a61d-3dcefd50c10a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,25908320-0aff-45d8-a61d-3dcefd50c10a.aspx</comments>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Microsoft</category>
      <category>WPF</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=6786fc11-d5d3-41e2-982f-cb8b51fe11c1</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=6786fc11-d5d3-41e2-982f-cb8b51fe11c1</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
WPF not only stands for new fantastic tools for layout. There are also some very interesting
new ways to implement databinding in your applications. 
<br />
In this article, I’m going to show how you can easily build an RSS reader using the
new databinding features in WPF.
</p>
        <p>
          <strong>How databinding works in WPF</strong>
          <br />
In order not to go too fast, first, let me explain some basic concepts of databinding
in WPF. 
</p>
        <p>
To keep data used in UI in sync with data in the datasource (for example a database),
we can of course use properties. There is nothing wrong if you keep doing this under
WPF. 
<br />
However, WPF provides very handy binding features, that will make your life a lot
easier! 
</p>
        <p>
We could bind the value of a textbox with the following code:<br /><font face="Courier New">&lt;TextBox Text="{Binding Path=Age}"&gt;<br />
&lt;/TextBox&gt;</font><br />
Databinding under WPF uses a <font face="Courier New">Binding</font> object. The above
code declares a textbox in XAML, and assigns the text-property the value of a property
named Age of an object that it is bound to. This is done using the <font face="Courier New">Path</font> property.
The <font face="Courier New">Path</font> property refers to the property of the object
we are binding too.
</p>
        <p>
To know to which object we are binding, we have the <font face="Courier New">DataContext</font> property.
In WPF, every <font face="Courier New">FrameworkElement</font> and also every <font face="Courier New">FrameworkContentElement</font> has
a <font face="Courier New">DataContext</font> property. It is of type object, so we
can bind to whatever we like. 
<br />
The binding does however have some interesting behaviour: if no <font face="Courier New">DataContext</font> is
specified on the object itself (like with our textbox), it goes up the tree in which
the controls are nested. So if we add our textbox in a Grid, it will look if this
Grid has a DataContext. If not, it goes up higher…<br />
This is of course very useful if we have more than one object (say 5 textboxes) binding
to the same object.
</p>
        <p>
Let me show you how to declare an object to which we’ll bind in XAML code (this uses
the new syntax, so to run this, you have to upgrade to beta 2 or higher!)
</p>
        <p>
          <font face="Courier New">&lt;Window x:Class="Snowball.Window2"<br />
    xmlns="</font>
          <a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
            <font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml/presentation</font>
          </a>
          <font face="Courier New">"<br />
    xmlns:x="</font>
          <a href="http://schemas.microsoft.com/winfx/2006/xaml">
            <font face="Courier New">http://schemas.microsoft.com/winfx/2006/xaml</font>
          </a>
          <font face="Courier New">"<br />
    xmlns:local="clr-namespace:Snowball"<br />
    Title="Snowball" Height="300" Width="300"<br />
    &gt;<br />
  &lt;Window.Resources&gt;<br />
    &lt;local:Person x:Key="Gill" Name="Gill Cleeren" Age="27"/&gt;<br />
  &lt;/Window.Resources&gt;<br />
    &lt;Grid DataContext="{StaticResource Gill}"&gt;<br />
       
<br />
      &lt;TextBox Text="{Binding Path=Name}"&gt;<br />
      &lt;/TextBox&gt;<br />
    &lt;/Grid&gt;<br />
&lt;/Window&gt;</font>
        </p>
        <p>
And in the code-behind:<br /><font face="Courier New">namespace Snowball<br />
{<br />
    public class Person<br />
    {<br />
        private string name;</font></p>
        <p>
          <font face="Courier New">        public string
Name<br />
        {<br />
            get { return name;
}<br />
            set { name = value;
}<br />
        }<br />
        private string age;</font>
        </p>
        <p>
          <font face="Courier New">        public string
Age<br />
        {<br />
            get { return age;
}<br />
            set { age = value;
}<br />
        }</font>
        </p>
        <p>
          <font face="Courier New">        public Person()<br />
        { }<br />
    }<br />
}</font>
        </p>
        <p>
What I have done here, is creating a Person object in XAML. For this to work, you
have to provide a default constructor. 
<br />
First, we have to wire the CLR namespace to be known in XAML: <font face="Courier New">xmlns:local="clr-namespace:Snowball"</font>. 
<br />
Now, we can use the tag “<font face="Courier New">local</font>” to refer to the namespace
in which the Person class resides. 
<br />
Using the following line, we instantiate a Person using XAML:<br /><font face="Courier New">&lt;local:Person x:Key="Gill" Name="Gill Cleeren" Age="27"/&gt;</font></p>
        <p>
The result is a textbox showing my name:
</p>
        <p>
          <img src="http://www.snowball.be/content/binary/WPFDatabinding1.jpg" border="0" />
        </p>
        <p>
Note that if you try this in Visual Studio at the time of writing, you get an error
viewing the design view. Don’t worry, when running, it all works fine.
</p>
        <p>
          <strong>Binding XML data to a list</strong>
          <br />
Most of the time, we bind data to a list: a dropdown, a grid… In this part, I’m going
to bind an RSS feed from my website <a href="http://www.snowball.be">www.snowball.be</a> to
a list. 
<br />
To do this, we’ll need an <font face="Courier New">XmlDataProvider</font>. 
</p>
        <p>
Data can be accessed by using a Provider. Currently, 2 providers exist: the <font face="Courier New">XmlDataProvider</font> and
the <font face="Courier New">ObjectDataProvider</font>. 
<br />
An XmlDataProvider object must be declared within the resources, for example the resources
of the grid:
</p>
        <p>
          <font face="Courier New">&lt;Grid.Resources&gt;<br />
        &lt;XmlDataProvider x:Key="SnowballRSS"
Source="</font>
          <a href="http://www.snowball.be/SyndicationService.asmx/GetRss">
            <font face="Courier New">http://www.snowball.be/SyndicationService.asmx/GetRss</font>
          </a>
          <font face="Courier New">"
/&gt;<br />
&lt;/Grid.Resources&gt;</font>
          <br />
          <br />
The <font face="Courier New">x:Key </font>assigns a name, which we can use in our
code-behind. 
</p>
        <p>
We can now use this object as a datasource for a listbox, like this:<br /><br /><font face="Courier New">&lt;ListBox ItemsSource="{Binding Source={StaticResource
SnowballRSS}, XPath=//rss//channel//item }"&gt;<br />
&lt;/ListBox.ItemTemplate&gt;</font></p>
        <p>
We provide a value for the <font face="Courier New">ItemSource</font>, being an instance
of Binding. For this <font face="Courier New">Binding</font> instance, we provide
the <font face="Courier New">Source</font> property. Since we’re dealing with a resource
that is defined in the XAML itself, we again use <font face="Courier New">StaticResource</font> and
as value, the name of the dataprovider. A second attribute is the <font face="Courier New">XPath</font> expression,
to locate the value we want to show in the listbox. 
</p>
        <p>
This is the result:<br /></p>
        <p>
          <img src="http://www.snowball.be/content/binary/WPFDatabinding2.jpg" border="0" />
          <br />
          <br />
What happens, is that the entire XML tag is being read into a listitem. This is not
desired, so we have to provide some kind of formatting, to tell WPF exactly what we
want to show in the items. 
<br />
This can be accomplished using a datatemplate.
</p>
        <p>
We provide an instance of <font face="Courier New">DataTemplate</font> to be used
as value for the <font face="Courier New">ItemTemplate</font> property of the listbox.
In this datatemplate, we can specify what to show as listitem. 
<br />
In the following code, I’m telling to make each listitem consist of a <font face="Courier New">TextBlock</font>.
The text to be shown is taken from the surrounding Listbox (remember searching for
the data up in the controltree?). In the data it finds, which is an XML tag with subnodes,
we can to take the title as the value for the item. 
<br /><br /><font face="Courier New">&lt;ListBox.ItemTemplate&gt;<br />
   &lt;DataTemplate&gt;<br />
      &lt;TextBlock Text="{Binding XPath=title}"&gt;&lt;/TextBlock&gt;<br />
   &lt;/DataTemplate&gt;<br />
&lt;/ListBox.ItemTemplate&gt;</font></p>
        <p>
When we now run this, we get the following:<br /><br /></p>
        <p>
          <img src="http://www.snowball.be/content/binary/WPFDatabinding3.jpg" border="0" />
          <br />
          <br />
Much better, isn’t it?!
</p>
        <p>
In the next part, we’re going to make the application a little bit more complete,
providing a click event for the listbox, and making sure that some fields are filled
in, again using databinding.
</p>
        <p>
          <strong>Adding the detailsform</strong>
          <br />
We’ll now change the program somewhat to make it display the details of the item selected
in the listbox.
</p>
        <p>
We’ll add a Grid to make it easy to display 3 rows and 2 columns with textblocks,
labels and textboxes. 
<br />
This can be done with the following code:<br /><br /><font face="Courier New">&lt;Grid&gt;<br />
   &lt;Grid.RowDefinitions&gt;<br />
      &lt;RowDefinition Height="30"&gt;&lt;/RowDefinition&gt;<br />
      &lt;RowDefinition Height="30"&gt;&lt;/RowDefinition&gt;<br />
      &lt;RowDefinition Height="*"&gt;&lt;/RowDefinition&gt;<br />
   &lt;/Grid.RowDefinitions&gt;<br />
   &lt;Grid.ColumnDefinitions&gt;<br />
      &lt;ColumnDefinition Width="0.2*"&gt;&lt;/ColumnDefinition&gt;<br />
      &lt;ColumnDefinition Width="0.8*"&gt;&lt;/ColumnDefinition&gt;<br />
   &lt;/Grid.ColumnDefinitions&gt;<br />
   &lt;TextBlock Grid.Row="0" Grid.Column="0"&gt;Title&lt;/TextBlock&gt;<br />
   &lt;Label Grid.Row="0" Grid.Column="1"&gt;&lt;/Label&gt;<br />
   &lt;TextBlock Grid.Row="1" Grid.Column="0"&gt;Link:&lt;/TextBlock&gt;<br />
   &lt;Label Grid.Row="1" Grid.Column="1" &gt;&lt;/Label&gt;<br />
   &lt;TextBlock Grid.Row="2" Grid.Column="0"&gt;Article&lt;/TextBlock&gt;<br />
   &lt;TextBox Grid.Row="2" Grid.Column="1"&gt;&lt;/TextBox&gt;<br />
&lt;/Grid&gt;</font></p>
        <p>
After adding the <font face="Courier New">Grid</font>, we’ll also have to change the
rest of the markup a little. Take a look at the sample code provided with this article
to see the rest of the layout. 
</p>
        <p>
We now want the detail-fields display more info on the selected item in the <font face="Courier New">Listbox</font>. 
Therefore, the <font face="Courier New">Grid</font> containing these fields should
have its <font face="Courier New">DataContext</font> set to the item selected in the
list. We do this with the following code:
</p>
        <p>
          <font face="Courier New">&lt;Grid DataContext="{Binding ElementName=RSSList, Path=SelectedItem}"
&gt;</font>
          <br />
          <br />
The element is the name of the listbox, the path is once again the property within
the source to which we’ll be binding the grid (and thus the detail fields).
</p>
        <p>
Now, every time we select an item in the listbox, the grid has its datacontext set
to this selected item. The fields can now get details as follows:<br /><br /><font face="Courier New">…<br />
&lt;Label Grid.Row="0" Grid.Column="1" Content="{Binding XPath=title}"&gt;&lt;/Label&gt;<br />
…<br />
&lt;Label Grid.Row="1" Grid.Column="1" Content="{Binding XPath=link}"&gt;<br />
            &lt;/Label&gt;<br />
…<br />
&lt;TextBox Grid.Row="2" Grid.Column="1" Text="{Binding XPath=description}"&gt;&lt;/TextBox&gt;</font></p>
        <p>
The result should resemble the following:<br /></p>
        <p>
          <img src="http://www.snowball.be/content/binary/WPFDatabinding4.jpg" border="0" />
          <br />
          <br />
Congratulations, you built your first databound application, using WPF databinding
and a simple datatemplate!<br /><br />
In my next (large) article, we’ll be looking at the styling tools provided by WPF
to make this application look TONS better!
</p>
        <a href="http://www.snowball.be/content/binary/RSSReader.zip">RSS Reader.zip (45.32
KB)</a>
        <br />
        <br />
        <br />
        <a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/PermaLink,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx">
          <img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.snowball.be/PermaLink,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx" border="0" />
        </a>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=6786fc11-d5d3-41e2-982f-cb8b51fe11c1" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>WPF examples: Databinding in WPF: a simple RSS reader with XAML/WPF</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx</guid>
      <link>http://www.snowball.be/2006/07/11/WPF+Examples+Databinding+In+WPF+A+Simple+RSS+Reader+With+XAMLWPF.aspx</link>
      <pubDate>Tue, 11 Jul 2006 13:56:47 GMT</pubDate>
      <description>&lt;p&gt;
WPF not only stands for new fantastic tools for layout. There are also some very interesting
new ways to implement databinding in your applications. 
&lt;br&gt;
In this article, I’m going to show how you can easily build an RSS reader using the
new databinding features in WPF.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;How databinding works in WPF&lt;/strong&gt;
&lt;br&gt;
In order not to go too fast, first, let me explain some basic concepts of databinding
in WPF. 
&lt;/p&gt;
&lt;p&gt;
To keep data used in UI in sync with data in the datasource (for example a database),
we can of course use properties. There is nothing wrong if you keep doing this under
WPF. 
&lt;br&gt;
However, WPF provides very handy binding features, that will make your life a lot
easier! 
&lt;/p&gt;
&lt;p&gt;
We could bind the value of a textbox with the following code:&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;TextBox Text="{Binding Path=Age}"&amp;gt;&lt;br&gt;
&amp;lt;/TextBox&amp;gt;&lt;/font&gt;
&lt;br&gt;
Databinding under WPF uses a &lt;font face="Courier New"&gt;Binding&lt;/font&gt; object. The above
code declares a textbox in XAML, and assigns the text-property the value of a property
named Age of an object that it is bound to. This is done using the &lt;font face="Courier New"&gt;Path&lt;/font&gt; property.
The &lt;font face="Courier New"&gt;Path&lt;/font&gt; property refers to the property of the object
we are binding too.
&lt;/p&gt;
&lt;p&gt;
To know to which object we are binding, we have the &lt;font face="Courier New"&gt;DataContext&lt;/font&gt; property.
In WPF, every &lt;font face="Courier New"&gt;FrameworkElement&lt;/font&gt; and also every &lt;font face="Courier New"&gt;FrameworkContentElement&lt;/font&gt; has
a &lt;font face="Courier New"&gt;DataContext&lt;/font&gt; property. It is of type object, so we
can bind to whatever we like. 
&lt;br&gt;
The binding does however have some interesting behaviour: if no &lt;font face="Courier New"&gt;DataContext&lt;/font&gt; is
specified on the object itself (like with our textbox), it goes up the tree in which
the controls are nested. So if we add our textbox in a Grid, it will look if this
Grid has a DataContext. If not, it goes up higher…&lt;br&gt;
This is of course very useful if we have more than one object (say 5 textboxes) binding
to the same object.
&lt;/p&gt;
&lt;p&gt;
Let me show you how to declare an object to which we’ll bind in XAML code (this uses
the new syntax, so to run this, you have to upgrade to beta 2 or higher!)
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;Window x:Class="Snowball.Window2"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:x="&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:local="clr-namespace:Snowball"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Title="Snowball" Height="300" Width="300"&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;Window.Resources&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;local:Person x:Key="Gill" Name="Gill Cleeren" Age="27"/&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/Window.Resources&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Grid DataContext="{StaticResource Gill}"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextBox Text="{Binding Path=Name}"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/TextBox&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Grid&amp;gt;&lt;br&gt;
&amp;lt;/Window&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
And in the code-behind:&lt;br&gt;
&lt;font face="Courier New"&gt;namespace Snowball&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Person&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string name;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string
Name&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return name;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { name = value;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string age;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string
Age&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return age;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set { age = value;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Person()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
What I have done here, is creating a Person object in XAML. For this to work, you
have to provide a default constructor. 
&lt;br&gt;
First, we have to wire the CLR namespace to be known in XAML: &lt;font face="Courier New"&gt;xmlns:local="clr-namespace:Snowball"&lt;/font&gt;. 
&lt;br&gt;
Now, we can use the tag “&lt;font face="Courier New"&gt;local&lt;/font&gt;” to refer to the namespace
in which the Person class resides. 
&lt;br&gt;
Using the following line, we instantiate a Person using XAML:&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;local:Person x:Key="Gill" Name="Gill Cleeren" Age="27"/&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
The result is a textbox showing my name:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.snowball.be/content/binary/WPFDatabinding1.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Note that if you try this in Visual Studio at the time of writing, you get an error
viewing the design view. Don’t worry, when running, it all works fine.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Binding XML data to a list&lt;/strong&gt;
&lt;br&gt;
Most of the time, we bind data to a list: a dropdown, a grid… In this part, I’m going
to bind an RSS feed from my website &lt;a href="http://www.snowball.be"&gt;www.snowball.be&lt;/a&gt; to
a list. 
&lt;br&gt;
To do this, we’ll need an &lt;font face="Courier New"&gt;XmlDataProvider&lt;/font&gt;. 
&lt;/p&gt;
&lt;p&gt;
Data can be accessed by using a Provider. Currently, 2 providers exist: the &lt;font face="Courier New"&gt;XmlDataProvider&lt;/font&gt; and
the &lt;font face="Courier New"&gt;ObjectDataProvider&lt;/font&gt;. 
&lt;br&gt;
An XmlDataProvider object must be declared within the resources, for example the resources
of the grid:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;Grid.Resources&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;XmlDataProvider x:Key="SnowballRSS"
Source="&lt;/font&gt;&lt;a href="http://www.snowball.be/SyndicationService.asmx/GetRss"&gt;&lt;font face="Courier New"&gt;http://www.snowball.be/SyndicationService.asmx/GetRss&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;"
/&amp;gt;&lt;br&gt;
&amp;lt;/Grid.Resources&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
The &lt;font face="Courier New"&gt;x:Key &lt;/font&gt;assigns a name, which we can use in our
code-behind. 
&lt;/p&gt;
&lt;p&gt;
We can now use this object as a datasource for a listbox, like this:&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;ListBox ItemsSource="{Binding Source={StaticResource
SnowballRSS}, XPath=//rss//channel//item }"&amp;gt;&lt;br&gt;
&amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
We provide a value for the &lt;font face="Courier New"&gt;ItemSource&lt;/font&gt;, being an instance
of Binding. For this &lt;font face="Courier New"&gt;Binding&lt;/font&gt; instance, we provide
the &lt;font face="Courier New"&gt;Source&lt;/font&gt; property. Since we’re dealing with a resource
that is defined in the XAML itself, we again use &lt;font face="Courier New"&gt;StaticResource&lt;/font&gt; and
as value, the name of the dataprovider. A second attribute is the &lt;font face="Courier New"&gt;XPath&lt;/font&gt; expression,
to locate the value we want to show in the listbox. 
&lt;/p&gt;
&lt;p&gt;
This is the result:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.snowball.be/content/binary/WPFDatabinding2.jpg" border=0&gt;
&lt;br&gt;
&lt;br&gt;
What happens, is that the entire XML tag is being read into a listitem. This is not
desired, so we have to provide some kind of formatting, to tell WPF exactly what we
want to show in the items. 
&lt;br&gt;
This can be accomplished using a datatemplate.
&lt;/p&gt;
&lt;p&gt;
We provide an instance of &lt;font face="Courier New"&gt;DataTemplate&lt;/font&gt; to be used
as value for the &lt;font face="Courier New"&gt;ItemTemplate&lt;/font&gt; property of the listbox.
In this datatemplate, we can specify what to show as listitem. 
&lt;br&gt;
In the following code, I’m telling to make each listitem consist of a &lt;font face="Courier New"&gt;TextBlock&lt;/font&gt;.
The text to be shown is taken from the surrounding Listbox (remember searching for
the data up in the controltree?). In the data it finds, which is an XML tag with subnodes,
we can to take the title as the value for the item. 
&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;ListBox.ItemTemplate&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DataTemplate&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextBlock Text="{Binding XPath=title}"&amp;gt;&amp;lt;/TextBlock&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/DataTemplate&amp;gt;&lt;br&gt;
&amp;lt;/ListBox.ItemTemplate&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
When we now run this, we get the following:&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.snowball.be/content/binary/WPFDatabinding3.jpg" border=0&gt;
&lt;br&gt;
&lt;br&gt;
Much better, isn’t it?!
&lt;/p&gt;
&lt;p&gt;
In the next part, we’re going to make the application a little bit more complete,
providing a click event for the listbox, and making sure that some fields are filled
in, again using databinding.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Adding the detailsform&lt;/strong&gt;
&lt;br&gt;
We’ll now change the program somewhat to make it display the details of the item selected
in the listbox.
&lt;/p&gt;
&lt;p&gt;
We’ll add a Grid to make it easy to display 3 rows and 2 columns with textblocks,
labels and textboxes. 
&lt;br&gt;
This can be done with the following code:&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;&amp;lt;Grid&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Grid.RowDefinitions&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;RowDefinition Height="30"&amp;gt;&amp;lt;/RowDefinition&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;RowDefinition Height="30"&amp;gt;&amp;lt;/RowDefinition&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;RowDefinition Height="*"&amp;gt;&amp;lt;/RowDefinition&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Grid.RowDefinitions&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Grid.ColumnDefinitions&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ColumnDefinition Width="0.2*"&amp;gt;&amp;lt;/ColumnDefinition&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ColumnDefinition Width="0.8*"&amp;gt;&amp;lt;/ColumnDefinition&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Grid.ColumnDefinitions&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextBlock Grid.Row="0" Grid.Column="0"&amp;gt;Title&amp;lt;/TextBlock&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Label Grid.Row="0" Grid.Column="1"&amp;gt;&amp;lt;/Label&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextBlock Grid.Row="1" Grid.Column="0"&amp;gt;Link:&amp;lt;/TextBlock&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Label Grid.Row="1" Grid.Column="1" &amp;gt;&amp;lt;/Label&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextBlock Grid.Row="2" Grid.Column="0"&amp;gt;Article&amp;lt;/TextBlock&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextBox Grid.Row="2" Grid.Column="1"&amp;gt;&amp;lt;/TextBox&amp;gt;&lt;br&gt;
&amp;lt;/Grid&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
After adding the &lt;font face="Courier New"&gt;Grid&lt;/font&gt;, we’ll also have to change the
rest of the markup a little. Take a look at the sample code provided with this article
to see the rest of the layout. 
&lt;/p&gt;
&lt;p&gt;
We now want the detail-fields display more info on the selected item in the &lt;font face="Courier New"&gt;Listbox&lt;/font&gt;.&amp;nbsp;
Therefore, the &lt;font face="Courier New"&gt;Grid&lt;/font&gt; containing these fields should
have its &lt;font face="Courier New"&gt;DataContext&lt;/font&gt; set to the item selected in the
list. We do this with the following code:
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;&amp;lt;Grid DataContext="{Binding ElementName=RSSList, Path=SelectedItem}"
&amp;gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
The element is the name of the listbox, the path is once again the property within
the source to which we’ll be binding the grid (and thus the detail fields).
&lt;/p&gt;
&lt;p&gt;
Now, every time we select an item in the listbox, the grid has its datacontext set
to this selected item. The fields can now get details as follows:&lt;br&gt;
&lt;br&gt;
&lt;font face="Courier New"&gt;…&lt;br&gt;
&amp;lt;Label Grid.Row="0" Grid.Column="1" Content="{Binding XPath=title}"&amp;gt;&amp;lt;/Label&amp;gt;&lt;br&gt;
…&lt;br&gt;
&amp;lt;Label Grid.Row="1" Grid.Column="1" Content="{Binding XPath=link}"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Label&amp;gt;&lt;br&gt;
…&lt;br&gt;
&amp;lt;TextBox Grid.Row="2" Grid.Column="1" Text="{Binding XPath=description}"&amp;gt;&amp;lt;/TextBox&amp;gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
The result should resemble the following:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.snowball.be/content/binary/WPFDatabinding4.jpg" border=0&gt;
&lt;br&gt;
&lt;br&gt;
Congratulations, you built your first databound application, using WPF databinding
and a simple datatemplate!&lt;br&gt;
&lt;br&gt;
In my next (large) article, we’ll be looking at the styling tools provided by WPF
to make this application look TONS better!
&lt;/p&gt;
&lt;a href="http://www.snowball.be/content/binary/RSSReader.zip"&gt;RSS Reader.zip (45.32
KB)&lt;/a&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/PermaLink,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.snowball.be/PermaLink,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx" border=0&gt;&lt;/a&gt; &lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=6786fc11-d5d3-41e2-982f-cb8b51fe11c1" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,6786fc11-d5d3-41e2-982f-cb8b51fe11c1.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Microsoft</category>
      <category>Programming</category>
      <category>Vista</category>
      <category>WinFX</category>
      <category>WPF</category>
      <category>XAML</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=736eff00-4b51-4b1f-af5a-041efe661b5b</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,736eff00-4b51-4b1f-af5a-041efe661b5b.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,736eff00-4b51-4b1f-af5a-041efe661b5b.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=736eff00-4b51-4b1f-af5a-041efe661b5b</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was today a small project to write Excel files from .net. As you might (or might
not...) know, you have to reference the Office DLL's for that. 
<br />
I opened the project I made on a work-pc on my laptop, and all of a sudden, it didn't
compile anymore.<br /><br />
The Microsoft.Office.Interop.Excel was missing. However, Office (and thus Excel) 2003
is installed on my system. After some googling (it's an official word know, so let's
use it ;-) ), I found out that I probably installed Office 2003 before I installed
the .net framework 1.1 (shame on me...). If you install in this order, the PIA's are
not installed with a typical install.<br /><br />
The solution was simply run the Office setup, and install the .net Programmability
Support. Problem solved... Another thing to remember when installing a new development
PC!
</p>
        <img src="http://www.snowball.be/content/binary/PIA.gif" border="0" />
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=736eff00-4b51-4b1f-af5a-041efe661b5b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Microsoft.Office.Interop.Excel not found</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,736eff00-4b51-4b1f-af5a-041efe661b5b.aspx</guid>
      <link>http://www.snowball.be/2006/07/11/MicrosoftOfficeInteropExcel+Not+Found.aspx</link>
      <pubDate>Tue, 11 Jul 2006 09:55:48 GMT</pubDate>
      <description>&lt;p&gt;
I was today a small project to write Excel files from .net. As you might (or might
not...) know, you have to reference the Office DLL's for that. 
&lt;br&gt;
I opened the project I made on a work-pc on my laptop, and all of a sudden, it didn't
compile anymore.&lt;br&gt;
&lt;br&gt;
The Microsoft.Office.Interop.Excel was missing. However, Office (and thus Excel) 2003
is installed on my system. After some googling (it's an official word know, so let's
use it ;-) ), I found out that I probably installed Office 2003 before I installed
the .net framework 1.1 (shame on me...). If you install in this order, the PIA's are
not installed with a typical install.&lt;br&gt;
&lt;br&gt;
The solution was simply run the Office setup, and install the .net Programmability
Support. Problem solved... Another thing to remember when installing a new development
PC!
&lt;/p&gt;
&lt;img src="http://www.snowball.be/content/binary/PIA.gif" border=0&gt;&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=736eff00-4b51-4b1f-af5a-041efe661b5b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,736eff00-4b51-4b1f-af5a-041efe661b5b.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=8d0b7a3e-1061-45f1-9677-b398a2672906</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,8d0b7a3e-1061-45f1-9677-b398a2672906.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,8d0b7a3e-1061-45f1-9677-b398a2672906.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=8d0b7a3e-1061-45f1-9677-b398a2672906</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The August 2006 issue of MSDN Magazine is now available online <a href="http://msdn.microsoft.com/msdnmag/issues/06/08">here</a>.
And for those of you on the go, a downloadable CHM file of the entire issue is available <a href="http://msdn.microsoft.com/msdnmag/htmlhelp.aspx">here</a>. 
</p>
        <p>
          <br />
 
</p>
        <p align="center">
          <img src="http://www.snowball.be/content/binary/August06Coverlg.gif" border="0" />
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8d0b7a3e-1061-45f1-9677-b398a2672906" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>MSDN magazine August</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,8d0b7a3e-1061-45f1-9677-b398a2672906.aspx</guid>
      <link>http://www.snowball.be/2006/07/06/MSDN+Magazine+August.aspx</link>
      <pubDate>Thu, 06 Jul 2006 19:59:26 GMT</pubDate>
      <description>&lt;p&gt;
The August 2006 issue of MSDN Magazine is now available online &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/08"&gt;here&lt;/a&gt;.
And for those of you on the go, a downloadable CHM file of the entire issue is available &lt;a href="http://msdn.microsoft.com/msdnmag/htmlhelp.aspx"&gt;here&lt;/a&gt;.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.snowball.be/content/binary/August06Coverlg.gif" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8d0b7a3e-1061-45f1-9677-b398a2672906" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,8d0b7a3e-1061-45f1-9677-b398a2672906.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=4c534f00-990c-4314-a75c-4b7e22eee006</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=4c534f00-990c-4314-a75c-4b7e22eee006</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For some time, I have been wondering how to create flashing, animated notify icons
that appear in your taskbar. Windows has a lot of these, like for example MSN Messenger
uses one when a person signs in. Or the flashing network icon when there is traffic
going in or out. 
</p>
        <p>
I started thinking at first it used some kind of animated gif, but soon realized that
that isn’t possible, since the NotifyIcon control in WinForms programs can only handle
*.ico files or *.bmp files.
</p>
        <p>
Now I found out how this actually works: the key element is the Timer control. It
fires events at a regular interval, and what actually happens is that the icon is
changed at these regular intervals.
</p>
        <p>
To show “the magic”, I created a little demo-project.
</p>
        <p>
First, create an array of icons:<br /><font face="Courier New">private Icon[] icons = new Icon[4];</font></p>
        <p>
Then, load in the images. It’s actually creating an animated gif, only that now, you
have to programmatically change between the steps.
</p>
        <p>
          <font face="Courier New">icons[0] = new Icon("green.ico");<br />
icons[1] = new Icon("red.ico");<br />
icons[2] = new Icon("green.ico");<br />
icons[3] = new Icon("red.ico");</font>
        </p>
        <p>
Add a <font face="Courier New">NotifyIcon</font> and a <font face="Courier New">Timer</font> control
to your program. Set the timer to an interval of 1000 (that is milliseconds). 
</p>
        <p>
Now, create the Tick event of the timer, to fire the event that will change the icon
displayed in the NotifyIcon.<br />
Since we have loaded the icons in an array, all we have to do is change the index
in the array, and update the icon in the NotifyIcon accordingly.
</p>
        <p>
          <font face="Courier New">private void timerChangeIcons_Tick(object sender, EventArgs
e)<br />
{<br />
   animatedIcon.Icon = icons[currentIcon];<br />
   currentIcon++;<br />
      if (currentIcon == 4)<br />
         currentIcon = 0;<br />
}</font>
        </p>
        <p>
Don’t forget to add the <font face="Courier New">timer.Start()</font> to the load
of your form!
</p>
        <p>
I did however notice something strange in the behavior of C#. It appears that icons
created with for example PhotoShop or Paint throw an error when loaded: <font face="Courier New">"Argument
'picture' must be a picture that can be used as a Icon”.</font> This appears that
have been a problem already in C# 1.0 and it is not addressed under C# 2.0.<br />
To correctly display the created icons, you have to change the headers, based on Windows
API documentation. 
<br />
A workaround I found, is simply to open the icons in Visual Studio and save them again.
This worked correctly afterwards.<br /><br />
The complete code can be found in the zip-file.<br /><br /></p>
        <a href="http://www.snowball.be/content/binary/FlashingNotifyIcon.zip">FlashingNotifyIcon.zip
(14.98 KB)</a>
        <br />
        <br />
        <a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/PermaLink,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx">
          <img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.snowball.be/PermaLink,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx" border="0" alt="kick it on dotnetkicks.com" />
        </a>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4c534f00-990c-4314-a75c-4b7e22eee006" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Winforms how-to: Dynamically changing the icon shown in the taskbar</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx</guid>
      <link>http://www.snowball.be/2006/06/18/Winforms+Howto+Dynamically+Changing+The+Icon+Shown+In+The+Taskbar.aspx</link>
      <pubDate>Sun, 18 Jun 2006 10:13:28 GMT</pubDate>
      <description>&lt;p&gt;
For some time, I have been wondering how to create flashing, animated notify icons
that appear in your taskbar. Windows has a lot of these, like for example MSN Messenger
uses one when a person signs in. Or the flashing network icon when there is traffic
going in or out. 
&lt;/p&gt;
&lt;p&gt;
I started thinking at first it used some kind of animated gif, but soon realized that
that isn’t possible, since the NotifyIcon control in WinForms programs can only handle
*.ico files or *.bmp files.
&lt;/p&gt;
&lt;p&gt;
Now I found out how this actually works: the key element is the Timer control. It
fires events at a regular interval, and what actually happens is that the icon is
changed at these regular intervals.
&lt;/p&gt;
&lt;p&gt;
To show “the magic”, I created a little demo-project.
&lt;/p&gt;
&lt;p&gt;
First, create an array of icons:&lt;br&gt;
&lt;font face="Courier New"&gt;private Icon[] icons = new Icon[4];&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Then, load in the images. It’s actually creating an animated gif, only that now, you
have to programmatically change between the steps.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;icons[0] = new Icon("green.ico");&lt;br&gt;
icons[1] = new Icon("red.ico");&lt;br&gt;
icons[2] = new Icon("green.ico");&lt;br&gt;
icons[3] = new Icon("red.ico");&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Add a &lt;font face="Courier New"&gt;NotifyIcon&lt;/font&gt; and a &lt;font face="Courier New"&gt;Timer&lt;/font&gt; control
to your program. Set the timer to an interval of 1000 (that is milliseconds). 
&lt;/p&gt;
&lt;p&gt;
Now, create the Tick event of the timer, to fire the event that will change the icon
displayed in the NotifyIcon.&lt;br&gt;
Since we have loaded the icons in an array, all we have to do is change the index
in the array, and update the icon in the NotifyIcon accordingly.
&lt;/p&gt;
&lt;p&gt;
&lt;font face="Courier New"&gt;private void timerChangeIcons_Tick(object sender, EventArgs
e)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;animatedIcon.Icon = icons[currentIcon];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;currentIcon++;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (currentIcon == 4)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentIcon = 0;&lt;br&gt;
}&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Don’t forget to add the &lt;font face="Courier New"&gt;timer.Start()&lt;/font&gt; to the load
of your form!
&lt;/p&gt;
&lt;p&gt;
I did however notice something strange in the behavior of C#. It appears that icons
created with for example PhotoShop or Paint throw an error when loaded: &lt;font face="Courier New"&gt;"Argument
'picture' must be a picture that can be used as a Icon”.&lt;/font&gt; This appears that
have been a problem already in C# 1.0 and it is not addressed under C# 2.0.&lt;br&gt;
To correctly display the created icons, you have to change the headers, based on Windows
API documentation. 
&lt;br&gt;
A workaround I found, is simply to open the icons in Visual Studio and save them again.
This worked correctly afterwards.&lt;br&gt;
&lt;br&gt;
The complete code can be found in the zip-file.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;a href="http://www.snowball.be/content/binary/FlashingNotifyIcon.zip"&gt;FlashingNotifyIcon.zip
(14.98 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http://www.snowball.be/PermaLink,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://www.snowball.be/PermaLink,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx" border="0" alt="kick it on dotnetkicks.com" /&gt;&lt;/a&gt; &lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4c534f00-990c-4314-a75c-4b7e22eee006" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,4c534f00-990c-4314-a75c-4b7e22eee006.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=c451cec3-7d73-445d-8711-e722cc4bc4e0</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,c451cec3-7d73-445d-8711-e722cc4bc4e0.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,c451cec3-7d73-445d-8711-e722cc4bc4e0.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=c451cec3-7d73-445d-8711-e722cc4bc4e0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The new issue of MSDN magazine is available. All articles can be read online for free
here: <a href="http://msdn.microsoft.com/msdnmag/issues/06/07/default.aspx">http://msdn.microsoft.com/msdnmag/issues/06/07/default.aspx</a> .<br /><br /></p>
        <p align="center">
          <img src="http://www.snowball.be/content/binary/July06cover.gif" border="0" />
        </p>
        <p>
          <br />
          <br />
This month, among others, 2 articles in particular are a very good read: the one on
Ajax (on which I'll be doing a presentation later this week at Ordina Lummen) and
one on WinFX.<br /><br />
Did you also know that you can download a chm-copy of the magazine for free? Go <a href="http://go.microsoft.com/?linkid=5026861">here</a> for
this months issue or <a href="http://msdn.microsoft.com/msdnmag/htmlhelp.aspx">here</a> for
an entire archive on back-issues!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c451cec3-7d73-445d-8711-e722cc4bc4e0" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>New isuue of MSDN magazine available</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,c451cec3-7d73-445d-8711-e722cc4bc4e0.aspx</guid>
      <link>http://www.snowball.be/2006/06/13/New+Isuue+Of+MSDN+Magazine+Available.aspx</link>
      <pubDate>Tue, 13 Jun 2006 19:58:47 GMT</pubDate>
      <description>&lt;p&gt;
The new issue of MSDN magazine is available. All articles can be read online for free
here: &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/07/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/06/07/default.aspx&lt;/a&gt;&amp;nbsp;.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.snowball.be/content/binary/July06cover.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;br&gt;
This month, among others, 2 articles in particular are a very good read: the one on
Ajax (on which I'll be doing a presentation later this week at Ordina Lummen) and
one on WinFX.&lt;br&gt;
&lt;br&gt;
Did you also know that you can download a chm-copy of the magazine for free? Go &lt;a href="http://go.microsoft.com/?linkid=5026861"&gt;here&lt;/a&gt; for
this months issue or &lt;a href="http://msdn.microsoft.com/msdnmag/htmlhelp.aspx"&gt;here&lt;/a&gt; for
an entire archive on back-issues!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c451cec3-7d73-445d-8711-e722cc4bc4e0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,c451cec3-7d73-445d-8711-e722cc4bc4e0.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>Software</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=92a65286-ca4e-44bc-999f-e7c2e232e436</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,92a65286-ca4e-44bc-999f-e7c2e232e436.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,92a65286-ca4e-44bc-999f-e7c2e232e436.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=92a65286-ca4e-44bc-999f-e7c2e232e436</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Tech Ed 2006 has taken off! Countless of speeches, demonstrations... are about to
take place.<br /><br />
If you want to see the keynote, go <a href="http://metahost.savvislive.com/microsoft/20060611/teched_20060611_300.asx">here</a>.<br /><br />
More on Tech Ed: <a href="http://www.microsoft.com/events/teched2006/default.mspx">http://www.microsoft.com/events/teched2006/default.mspx</a> <br /><br />
Oh and btw, it is also time for some new designs of laptops Intel showed to the
public. You can see them <a href="http://www.siliconvalleysleuth.com/2006/06/intels_concept_.html">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=92a65286-ca4e-44bc-999f-e7c2e232e436" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Tech Ed 2006 Keynote</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,92a65286-ca4e-44bc-999f-e7c2e232e436.aspx</guid>
      <link>http://www.snowball.be/2006/06/12/Tech+Ed+2006+Keynote.aspx</link>
      <pubDate>Mon, 12 Jun 2006 18:20:55 GMT</pubDate>
      <description>&lt;p&gt;
Tech Ed 2006 has taken off! Countless of speeches, demonstrations... are about to
take place.&lt;br&gt;
&lt;br&gt;
If you want to see the keynote, go &lt;a href="http://metahost.savvislive.com/microsoft/20060611/teched_20060611_300.asx"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
More on Tech Ed: &lt;a href="http://www.microsoft.com/events/teched2006/default.mspx"&gt;http://www.microsoft.com/events/teched2006/default.mspx&lt;/a&gt;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
Oh and btw, it is also time for some new designs of laptops&amp;nbsp;Intel showed to the
public. You can see them &lt;a href="http://www.siliconvalleysleuth.com/2006/06/intels_concept_.html"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=92a65286-ca4e-44bc-999f-e7c2e232e436" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,92a65286-ca4e-44bc-999f-e7c2e232e436.aspx</comments>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=929d7a73-3223-4432-92dc-e682f24c71f3</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,929d7a73-3223-4432-92dc-e682f24c71f3.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,929d7a73-3223-4432-92dc-e682f24c71f3.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=929d7a73-3223-4432-92dc-e682f24c71f3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
MSDN now has its official Wiki! Yes, it's true :-)<br />
For the "official" announcement, you should take a look at Soma's blog (<a href="http://blogs.msdn.com/somasegar/archive/2006/06/08/622875.aspx">http://blogs.msdn.com/somasegar/archive/2006/06/08/622875.aspx</a>). 
<br /><br /><em>In the MSDN Wiki beta, you can add code samples and content directly alongside
the Visual Studio 2005 and the .NET Framework 2.0 documentation in a Community Content
section that we have added to each documentation topic.  Right now the MSDN Wiki
site only features English documentation, but we are planning to expand this functionality
to the localized documentation in the future.<br /></em><br />
Pay a visit to them at: <a href="http://msdnwiki.microsoft.com/en-us/mtpswiki/default.aspx">http://msdnwiki.microsoft.com/en-us/mtpswiki/default.aspx</a> .<br /><br />
Great work, guys!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=929d7a73-3223-4432-92dc-e682f24c71f3" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>MSDN: The Wiki</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,929d7a73-3223-4432-92dc-e682f24c71f3.aspx</guid>
      <link>http://www.snowball.be/2006/06/08/MSDN+The+Wiki.aspx</link>
      <pubDate>Thu, 08 Jun 2006 21:02:01 GMT</pubDate>
      <description>&lt;p&gt;
MSDN now has its official Wiki! Yes, it's true :-)&lt;br&gt;
For the "official" announcement, you should take a look at Soma's blog (&lt;a href="http://blogs.msdn.com/somasegar/archive/2006/06/08/622875.aspx"&gt;http://blogs.msdn.com/somasegar/archive/2006/06/08/622875.aspx&lt;/a&gt;). 
&lt;br&gt;
&lt;br&gt;
&lt;em&gt;In the MSDN Wiki beta, you can add code samples and content directly alongside
the Visual Studio 2005 and the .NET Framework 2.0 documentation in a Community Content
section that we have added to each documentation topic.&amp;nbsp; Right now the MSDN Wiki
site only features English documentation, but we are planning to expand this functionality
to the localized documentation in the future.&lt;br&gt;
&lt;/em&gt;
&lt;br&gt;
Pay a visit to them at: &lt;a href="http://msdnwiki.microsoft.com/en-us/mtpswiki/default.aspx"&gt;http://msdnwiki.microsoft.com/en-us/mtpswiki/default.aspx&lt;/a&gt;&amp;nbsp;.&lt;br&gt;
&lt;br&gt;
Great work, guys!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=929d7a73-3223-4432-92dc-e682f24c71f3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,929d7a73-3223-4432-92dc-e682f24c71f3.aspx</comments>
      <category>.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=8ebc5c53-49bc-44f7-8504-126751fa6f02</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,8ebc5c53-49bc-44f7-8504-126751fa6f02.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,8ebc5c53-49bc-44f7-8504-126751fa6f02.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=8ebc5c53-49bc-44f7-8504-126751fa6f02</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I for sure didn't...<br /><br />
Let me explain the situation.<br />
I'm building a multilanguage ASP.net 2.0 application at KBC Bank. The underlying database
is Oracle 9i. This application uses masses of dates, all are in the format required
by the database, MM/YY/DDDD.<br /><br />
A collegue of mine wrote some lines of code using a rowfilter to filter out some records
from a dataset, retrieved from the Oracle database. So he used a simple DateTime.ToString().
This appeared to be working... until someone came along and tested it with Dutch IE
browser settings.<br /><br />
This resulted in a 'String was not recognized as a valid DateTime' error. 
<br /><br />
After some research, I found that the RowFilter always uses SQL Server syntax when
filtering out results, no matter if the data retrieved originates from Oracle or SQL
Server. 
<br /><br />
An article on calendars on CodeProject says the following: 
<br /><em>...The code forces a "MM/dd/yyyy" date format when constructing the <code>RowFilter</code> as
required for date comparisons in such expressions. The filter is also constructed
to take into account the possibility of time values within the <code>DayField</code> column.</em> <br /><br />
So, what did I do in the end? This:
</p>
        <p>
dv.RowFilter = string.Format(<br />
                  
"{0} &gt;= #{1}# and {0} &lt; #{2}#", 
<br />
                  
this.DayField, 
<br />
                   <font color="#ff0000">day.Date.ToString("MM/dd/yyyy"), 
<br />
                  
day.Date.AddDays(1).ToString("MM/dd/yyyy");</font><br /><br />
And that line saved the day :-)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8ebc5c53-49bc-44f7-8504-126751fa6f02" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Did you know this about the RowFilter?</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,8ebc5c53-49bc-44f7-8504-126751fa6f02.aspx</guid>
      <link>http://www.snowball.be/2006/05/31/Did+You+Know+This+About+The+RowFilter.aspx</link>
      <pubDate>Wed, 31 May 2006 21:27:17 GMT</pubDate>
      <description>&lt;p&gt;
I for sure didn't...&lt;br&gt;
&lt;br&gt;
Let me explain the situation.&lt;br&gt;
I'm building a multilanguage ASP.net 2.0 application at KBC Bank. The underlying database
is Oracle 9i. This application uses masses of dates, all are in the format required
by the database, MM/YY/DDDD.&lt;br&gt;
&lt;br&gt;
A collegue of mine wrote some lines of code using a rowfilter to filter out some records
from a dataset, retrieved from the Oracle database. So he used a simple DateTime.ToString().
This appeared to be working... until someone came along and tested it with Dutch IE
browser settings.&lt;br&gt;
&lt;br&gt;
This resulted in a 'String was not recognized as a valid DateTime' error. 
&lt;br&gt;
&lt;br&gt;
After some research, I found that the RowFilter always uses SQL Server syntax when
filtering out results, no matter if the data retrieved originates from Oracle or SQL
Server. 
&lt;br&gt;
&lt;br&gt;
An article on calendars on CodeProject says the following: 
&lt;br&gt;
&lt;em&gt;...The code forces a "MM/dd/yyyy" date format when constructing the &lt;code&gt;RowFilter&lt;/code&gt; as
required for date comparisons in such expressions. The filter is also constructed
to take into account the possibility of time values within the &lt;code&gt;DayField&lt;/code&gt; column.&lt;/em&gt;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
So, what did I do in the end? This:
&lt;/p&gt;
&lt;p&gt;
dv.RowFilter = string.Format(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
"{0} &amp;gt;= #{1}# and {0} &amp;lt; #{2}#", 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
this.DayField, 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=#ff0000&gt;day.Date.ToString("MM/dd/yyyy"), 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
day.Date.AddDays(1).ToString("MM/dd/yyyy");&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
And that line saved the day :-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8ebc5c53-49bc-44f7-8504-126751fa6f02" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,8ebc5c53-49bc-44f7-8504-126751fa6f02.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=1a57b401-a7d1-4227-93bc-a8743e951e60</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,1a57b401-a7d1-4227-93bc-a8743e951e60.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,1a57b401-a7d1-4227-93bc-a8743e951e60.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=1a57b401-a7d1-4227-93bc-a8743e951e60</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today, 2 interesting programs were suggested to me by collegues on the project I'm
currently working on.
</p>
        <p>
Up first is Snippet Compiler. It's a "small IDE", that enables you to do some quick
tests on code. Instead of making a dummy project in VS, where you can test if for
example myDateTime.ToShortDateString() also includes the hours, minutes and seconds,
you just tap in the line(s) of code in Snippet Compiler. It then runs these lines
as a Console application.<br /><br />
To get this free tool, go <a href="http://www.sliver.com/dotnet/SnippetCompiler/">here</a>. 
</p>
        <p>
The second interesting tool I discovered is "The Regulator". I had to a quite nasty
regular expression, but with this open-source tool, it is much easier than sitting
down and writing them by hand. 
<br /><br />
The homepage mentions the following:<br /><em>It allows you to build and verify a regular expression against any text input,
file or web, and displays matching, splitting or replacement results within an easy
to understand, hierarchical tree.<br /></em><br />
For this application, go <a href="http://regex.osherove.com/">here</a>.<br /><br />
These two applications are gonna be in my toolbox for sure ;-)<br /><br />
Oh and while I'm at it, did you know the VS 2005 version of Resharper, Resharper 2.0
was released. Go here: <a href="http://www.jetbrains.com/resharper">www.jetbrains.com/resharper</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1a57b401-a7d1-4227-93bc-a8743e951e60" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Two interesting tools that should be in your toolbox</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,1a57b401-a7d1-4227-93bc-a8743e951e60.aspx</guid>
      <link>http://www.snowball.be/2006/05/31/Two+Interesting+Tools+That+Should+Be+In+Your+Toolbox.aspx</link>
      <pubDate>Wed, 31 May 2006 21:15:37 GMT</pubDate>
      <description>&lt;p&gt;
Today, 2 interesting programs were suggested to me by collegues on the project I'm
currently working on.
&lt;/p&gt;
&lt;p&gt;
Up first is Snippet Compiler. It's a "small IDE", that enables you to do some quick
tests on code. Instead of making a dummy project in VS, where you can test if for
example myDateTime.ToShortDateString() also includes the hours, minutes and seconds,
you just tap in the line(s) of code in Snippet Compiler. It then runs these lines
as a Console application.&lt;br&gt;
&lt;br&gt;
To get this free tool, go &lt;a href="http://www.sliver.com/dotnet/SnippetCompiler/"&gt;here&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The second interesting tool I discovered is "The Regulator". I had to a quite nasty
regular expression, but with this open-source tool, it is much easier than sitting
down and writing them by hand. 
&lt;br&gt;
&lt;br&gt;
The homepage mentions the following:&lt;br&gt;
&lt;em&gt;It allows you to build and verify a regular expression against any text input,
file or web, and displays matching, splitting or replacement results within an easy
to understand, hierarchical tree.&lt;br&gt;
&lt;/em&gt;
&lt;br&gt;
For this application, go &lt;a href="http://regex.osherove.com/"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
These two applications are gonna be in my toolbox for sure ;-)&lt;br&gt;
&lt;br&gt;
Oh and while I'm at it, did you know the VS 2005 version of Resharper, Resharper 2.0
was released. Go here: &lt;a href="http://www.jetbrains.com/resharper"&gt;www.jetbrains.com/resharper&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1a57b401-a7d1-4227-93bc-a8743e951e60" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,1a57b401-a7d1-4227-93bc-a8743e951e60.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.snowball.be/Trackback.aspx?guid=81b742e8-d926-4b03-ae26-5772e01cfd67</trackback:ping>
      <pingback:server>http://www.snowball.be/pingback.aspx</pingback:server>
      <pingback:target>http://www.snowball.be/PermaLink,guid,81b742e8-d926-4b03-ae26-5772e01cfd67.aspx</pingback:target>
      <dc:creator>Gill Cleeren</dc:creator>
      <wfw:comment>http://www.snowball.be/CommentView,guid,81b742e8-d926-4b03-ae26-5772e01cfd67.aspx</wfw:comment>
      <wfw:commentRss>http://www.snowball.be/SyndicationService.asmx/GetEntryCommentsRss?guid=81b742e8-d926-4b03-ae26-5772e01cfd67</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you weren't there (like me... Vegas is a little too far ;-) ), you can now download
or view all sessions of Mix06 online.<br /><br />
Go <a href="http://sessions.mix06.com/">here </a>to get them all! (There are some
very interesting ones on Atlas!)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=81b742e8-d926-4b03-ae26-5772e01cfd67" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</body>
      <title>Sessions Mix06 for download!</title>
      <guid isPermaLink="false">http://www.snowball.be/PermaLink,guid,81b742e8-d926-4b03-ae26-5772e01cfd67.aspx</guid>
      <link>http://www.snowball.be/2006/05/04/Sessions+Mix06+For+Download.aspx</link>
      <pubDate>Thu, 04 May 2006 21:49:27 GMT</pubDate>
      <description>&lt;p&gt;
If you weren't there (like me... Vegas is a little too far ;-) ), you can now download
or view all sessions of Mix06 online.&lt;br&gt;
&lt;br&gt;
Go &lt;a href="http://sessions.mix06.com/"&gt;here &lt;/a&gt;to get them all! (There are some
very interesting ones on Atlas!)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=81b742e8-d926-4b03-ae26-5772e01cfd67" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </description>
      <comments>http://www.snowball.be/CommentView,guid,81b742e8-d926-4b03-ae26-5772e01cfd67.aspx</comments>
      <category>.net</category>
      <category>ASP.net</category>
      <category>C#</category>
      <category>Programming</category>
      <category>Software/Microsoft</category>
    </item>
  </channel>
</rss>