<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnet.org.za/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rudi Grobler</title><link>http://dotnet.org.za/rudi/default.aspx</link><description>&amp;lt;Blog x:Name=&amp;quot;Rudi Grobler&amp;quot; Content=&amp;quot;WPF 933|&amp;lt;&amp;quot; /&amp;gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Low Hanging Fruit</title><link>http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx</link><pubDate>Wed, 13 Jan 2010 11:36:11 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1254073</guid><dc:creator>rudi</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1254073</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1254073</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx#comments</comments><description>&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“simple problem or target: a target that is easy to achieve, or a problem that is easy to solve”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/BrowserTraffic.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Here is a breakdown of the 3 most used browser to access my blog. IE7/8 has soooo many features that makes the browsing experience better (And thy are extremely easy to implement)&lt;/p&gt;  &lt;p&gt;Introducing Instant Search&lt;/p&gt;  &lt;p&gt;&lt;img src="http://i.msdn.microsoft.com/Cc848862.new8(en-us,VS.85).gif" alt="" /&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Starting with Internet Explorer 7, the &lt;strong&gt;Instant Search&lt;/strong&gt; box provides an AutoComplete feature so users can search for similar search terms used in previous searches. Internet Explorer 7 also enables users to add multiple search providers. Search improvements in Internet Explorer 8 focus on helping users search by significantly improving the &lt;strong&gt;Instant Search&lt;/strong&gt; box drop-down menu and supporting search suggestions.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here is the provider.xml &lt;/p&gt;  &lt;pre class="brush: xml;"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;OpenSearchDescription xmlns=&amp;quot;http://a9.com/-/spec/opensearch/1.1/&amp;quot; xmlns:ie=&amp;quot;http://schemas.microsoft.com/Search/2008/&amp;quot;&amp;gt;
    &amp;lt;ShortName&amp;gt;Rudi Grobler&amp;lt;/ShortName&amp;gt;
    &amp;lt;Url type=&amp;quot;text/html&amp;quot; template=&amp;quot;http://blogs.windowsclient.net/rudigrobler/search.aspx?q={searchTerms}&amp;quot;/&amp;gt;   
&amp;lt;/OpenSearchDescription&amp;gt;&lt;/pre&gt;

&lt;p&gt;After uploading the provider.xml file to my webserver, the next step is to make the search provider discoverable! By adding the following to my header, the instant search box will turn orange to indicate that a search provider can be installed!&lt;/p&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;link title=&amp;quot;Rudi Grobler&amp;quot; rel=&amp;quot;search&amp;quot;
   type=&amp;quot;application/opensearchdescription+xml&amp;quot;
   href=&amp;quot;http://dotnet.org.za/blogs/rudi/provider.xml&amp;quot;&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/SearchHint.PNG" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;When you click the orange drop-down arrow, a list of the search providers that are installed and other available options is displayed. When you click the &lt;strong&gt;Add Search Providers&lt;/strong&gt; option, a list of the available providers is displayed.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/AddSearch.png" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;Last step is to confirm the installation of the provider&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/ConfirmAdd.png" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;Now we can start using the search provider…&lt;/p&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/SearchForWPF.PNG" alt="" /&gt;&lt;/p&gt;

&lt;p&gt;Easy, isn’t it?&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div class="addthis_toolbox addthis_default_style"&gt;&lt;a class="addthis_button_facebook at300b" title="Send to Facebook"&gt;&lt;span class="at300bs at15t_facebook"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="addthis_button_email at300b" title="Email"&gt;&lt;span class="at300bs at15t_email"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="addthis_button_favorites at300b" title="Save to Favorites"&gt;&lt;span class="at300bs at15t_favorites"&gt;&lt;/span&gt;&lt;/a&gt;&lt;a class="addthis_button_print at300b" title="Print"&gt;&lt;span class="at300bs at15t_print"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="addthis_separator"&gt;|&lt;/span&gt; &lt;a class="addthis_button_expanded at300m" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;username=xa-4b2bc05e61a87869"&gt;&lt;span class="at300bs at15t_expanded"&gt;&lt;/span&gt;More&lt;/a&gt; 

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;

  &lt;div class="atclear"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b2bc05e61a87869"&gt;&lt;/script&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx&amp;amp;;subject=Low+Hanging+Fruit" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx&amp;amp;;title=Low+Hanging+Fruit" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx&amp;amp;title=Low+Hanging+Fruit" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx&amp;amp;;title=Low+Hanging+Fruit" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx&amp;amp;;title=Low+Hanging+Fruit&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2010/01/13/low-hanging-fruit.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1254073" width="1" height="1"&gt;</description></item><item><title>View-the-box</title><link>http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx</link><pubDate>Fri, 18 Dec 2009 18:37:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1252778</guid><dc:creator>rudi</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1252778</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1252778</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:0px;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:0px;" border="0" src="http://despertarydesarrollodeconciencia.com/siimt/images/stories/openbravo.jpg" width="240" height="109" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The last couple of days I’ve been searching and evaluating some point of sale systems for a friend… I found a excellent solution from &lt;a href="http://www.openbravo.com/product/pos/"&gt;openbravo&lt;/a&gt;! It has just one problem (that could easily be fixed using WPF). The software is designed to run on 1024 x 768! Their are some tweaks you can do to force it to run on 800 x 600 but some panels still do not render properly! I want to run this solution on a panel pc that can only do 800 x 600!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/CutOff.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Introducing the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.viewbox.aspx"&gt;ViewBox&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Defines a content decorator that can stretch and scale a single child to fill the available space.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Now I can place my content inside the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.viewbox.aspx"&gt;ViewBox&lt;/a&gt; and always assume I will be displayed at x resolution, if not… it will auto-magically resize it for me!!! &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;Window x:Class=&amp;quot;WpfApplication1.Window1&amp;quot;
    xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    Title=&amp;quot;Window1&amp;quot; Height=&amp;quot;300&amp;quot; Width=&amp;quot;300&amp;quot;&amp;gt;
    &amp;lt;Viewbox&amp;gt;            
        &amp;lt;Canvas Width=&amp;quot;1024&amp;quot; Height=&amp;quot;768&amp;quot;&amp;gt;
            &amp;lt;Rectangle Fill=&amp;quot;Gray&amp;quot; Width=&amp;quot;100&amp;quot; Height=&amp;quot;100&amp;quot; Canvas.Left=&amp;quot;120&amp;quot; Canvas.Top=&amp;quot;75&amp;quot; /&amp;gt;
            &amp;lt;Rectangle Fill=&amp;quot;Orange&amp;quot; Width=&amp;quot;100&amp;quot; Height=&amp;quot;100&amp;quot; Canvas.Left=&amp;quot;900&amp;quot; Canvas.Top=&amp;quot;600&amp;quot; /&amp;gt;
            &amp;lt;Rectangle Fill=&amp;quot;Red&amp;quot; Width=&amp;quot;100&amp;quot; Height=&amp;quot;100&amp;quot; Canvas.Left=&amp;quot;600&amp;quot; Canvas.Top=&amp;quot;400&amp;quot; /&amp;gt;
            &amp;lt;Rectangle Fill=&amp;quot;LightBlue&amp;quot; Width=&amp;quot;100&amp;quot; Height=&amp;quot;100&amp;quot; Canvas.Left=&amp;quot;450&amp;quot; Canvas.Top=&amp;quot;90&amp;quot; /&amp;gt;
        &amp;lt;/Canvas&amp;gt;
    &amp;lt;/Viewbox&amp;gt;
&amp;lt;/Window&amp;gt;&lt;/pre&gt;
&lt;p&gt;Easy? isn’t it!!! &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DISCLAIMER&lt;/strong&gt;: DO NOT USE THIS EVERYWHERE! The &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.viewbox.aspx"&gt;ViewBox&lt;/a&gt; is not for every single application! It works great in KIOSK type applications where the application will almost always run at a known resolution!&lt;/p&gt;
&lt;p&gt;
&lt;div class="addthis_toolbox addthis_default_style"&gt;&lt;a class="addthis_button_facebook"&gt;&lt;/a&gt;&lt;a class="addthis_button_email"&gt;&lt;/a&gt;&lt;a class="addthis_button_favorites"&gt;&lt;/a&gt;&lt;a class="addthis_button_print"&gt;&lt;/a&gt;&lt;span class="addthis_separator"&gt;|&lt;/span&gt; &lt;a class="addthis_button_expanded" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;username=xa-4b2bc05e61a87869"&gt;More&lt;/a&gt; &lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b2bc05e61a87869"&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx&amp;amp;;subject=View-the-box" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx&amp;amp;;title=View-the-box" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx&amp;amp;title=View-the-box" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx&amp;amp;;title=View-the-box" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx&amp;amp;;title=View-the-box&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/18/view-the-box.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1252778" width="1" height="1"&gt;</description></item><item><title>Open-Source WPF Reporting Engine</title><link>http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx</link><pubDate>Thu, 17 Dec 2009 15:29:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1252708</guid><dc:creator>rudi</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1252708</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1252708</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;Reporting is one of those things that we hate but can’t live without! &lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.scib.co.th/images/image_report.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;WPF is a awesome platform with so many powerful controls available! I have seen so many people use FlowDocuments to create reports! This is really cool but what if you need a more complex reporting engine! Can it handle it? Can it be abstracted and reused! Do you have to start from scatch each time?&lt;/p&gt;
&lt;p&gt;Introducing &lt;a title="Open-Source .NET WPF Reporting Engine" href="http://wpfreports.codeplex.com/"&gt;Open-Source .NET WPF Reporting Engine&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“This project allows you to create reports using WPF (Windows Presentation Foundation). Its supports headers and footers, DataTable binding, barcode generation, XPS creation and more.”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;First things, first… Create a ReportDocument. This is the “container&amp;quot; for our report&lt;/p&gt;&lt;pre class="brush: csharp"&gt;ReportDocument reportDocument = new ReportDocument();&lt;/pre&gt;
&lt;p&gt;Next, we need to supply a template for our report.&amp;nbsp; &lt;/p&gt;&lt;pre class="brush: csharp"&gt;StreamReader reader = new StreamReader(new FileStream(@&amp;quot;Templates\SimpleReport.xaml&amp;quot;, FileMode.Open, FileAccess.Read)); 
reportDocument.XamlData = reader.ReadToEnd(); 
reportDocument.XamlImagePath = Path.Combine(Environment.CurrentDirectory, @&amp;quot;Templates\&amp;quot;); 
reader.Close();&lt;/pre&gt;
&lt;p&gt;Here is how our template looks &lt;/p&gt;&lt;pre class="brush: xml"&gt;&amp;lt;FlowDocument xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
              xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
              xmlns:xrd=&amp;quot;clr-namespace:CodeReason.Reports.Document;assembly=CodeReason.Reports&amp;quot; 
              PageHeight=&amp;quot;29.7cm&amp;quot; PageWidth=&amp;quot;21cm&amp;quot; ColumnWidth=&amp;quot;21cm&amp;quot;&amp;gt;
    &amp;lt;xrd:ReportProperties&amp;gt;
        &amp;lt;xrd:ReportProperties.ReportName&amp;gt;SimpleReport&amp;lt;/xrd:ReportProperties.ReportName&amp;gt;
        &amp;lt;xrd:ReportProperties.ReportTitle&amp;gt;Simple Report&amp;lt;/xrd:ReportProperties.ReportTitle&amp;gt;
    &amp;lt;/xrd:ReportProperties&amp;gt;
    &amp;lt;Section Padding=&amp;quot;80,10,40,10&amp;quot; FontSize=&amp;quot;12&amp;quot;&amp;gt;
        &amp;lt;Paragraph FontSize=&amp;quot;24&amp;quot; FontWeight=&amp;quot;Bold&amp;quot;&amp;gt;
            &amp;lt;xrd:InlineContextValue PropertyName=&amp;quot;ReportTitle&amp;quot; /&amp;gt;
        &amp;lt;/Paragraph&amp;gt;
        &amp;lt;Paragraph&amp;gt;This is a simple report example that contains a table.
            The table is filled using a DataTable object.&amp;lt;/Paragraph&amp;gt;
        &amp;lt;xrd:SectionDataGroup DataGroupName=&amp;quot;ItemList&amp;quot;&amp;gt;
            &amp;lt;Paragraph FontSize=&amp;quot;20&amp;quot; FontWeight=&amp;quot;Bold&amp;quot;&amp;gt;Item List&amp;lt;/Paragraph&amp;gt;
            &amp;lt;Table CellSpacing=&amp;quot;0&amp;quot; BorderBrush=&amp;quot;Black&amp;quot; BorderThickness=&amp;quot;0.02cm&amp;quot;&amp;gt;
                &amp;lt;Table.Resources&amp;gt;
                    &amp;lt;!-- Style for header/footer rows. --&amp;gt;
                    &amp;lt;Style x:Key=&amp;quot;headerFooterRowStyle&amp;quot; TargetType=&amp;quot;{x:Type TableRowGroup}&amp;quot;&amp;gt;
                        &amp;lt;Setter Property=&amp;quot;FontWeight&amp;quot; Value=&amp;quot;DemiBold&amp;quot;/&amp;gt;
                        &amp;lt;Setter Property=&amp;quot;FontSize&amp;quot; Value=&amp;quot;16&amp;quot;/&amp;gt;
                        &amp;lt;Setter Property=&amp;quot;Background&amp;quot; Value=&amp;quot;LightGray&amp;quot;/&amp;gt;
                    &amp;lt;/Style&amp;gt;

                    &amp;lt;!-- Style for data rows. --&amp;gt;
                    &amp;lt;Style x:Key=&amp;quot;dataRowStyle&amp;quot; TargetType=&amp;quot;{x:Type TableRowGroup}&amp;quot;&amp;gt;
                        &amp;lt;Setter Property=&amp;quot;FontSize&amp;quot; Value=&amp;quot;12&amp;quot;/&amp;gt;
                    &amp;lt;/Style&amp;gt;

                    &amp;lt;!-- Style for data cells. --&amp;gt;
                    &amp;lt;Style TargetType=&amp;quot;{x:Type TableCell}&amp;quot;&amp;gt;
                        &amp;lt;Setter Property=&amp;quot;Padding&amp;quot; Value=&amp;quot;0.1cm&amp;quot;/&amp;gt;
                        &amp;lt;Setter Property=&amp;quot;BorderBrush&amp;quot; Value=&amp;quot;Black&amp;quot;/&amp;gt;
                        &amp;lt;Setter Property=&amp;quot;BorderThickness&amp;quot; Value=&amp;quot;0.01cm&amp;quot;/&amp;gt;
                    &amp;lt;/Style&amp;gt;
                &amp;lt;/Table.Resources&amp;gt;

                &amp;lt;Table.Columns&amp;gt;
                    &amp;lt;TableColumn Width=&amp;quot;0.5*&amp;quot; /&amp;gt;
                    &amp;lt;TableColumn Width=&amp;quot;2*&amp;quot; /&amp;gt;
                    &amp;lt;TableColumn Width=&amp;quot;*&amp;quot; /&amp;gt;
                    &amp;lt;TableColumn Width=&amp;quot;0.5*&amp;quot; /&amp;gt;
                &amp;lt;/Table.Columns&amp;gt;
                &amp;lt;TableRowGroup Style=&amp;#39;{StaticResource headerFooterRowStyle}&amp;#39;&amp;gt;
                    &amp;lt;TableRow&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph TextAlignment=&amp;#39;Center&amp;#39;&amp;gt;
                                &amp;lt;Bold&amp;gt;Pos.&amp;lt;/Bold&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph TextAlignment=&amp;#39;Center&amp;#39;&amp;gt;
                                &amp;lt;Bold&amp;gt;Item Name&amp;lt;/Bold&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph TextAlignment=&amp;#39;Center&amp;#39;&amp;gt;
                                &amp;lt;Bold&amp;gt;EAN&amp;lt;/Bold&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph TextAlignment=&amp;#39;Center&amp;#39;&amp;gt;
                                &amp;lt;Bold&amp;gt;Count&amp;lt;/Bold&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                    &amp;lt;/TableRow&amp;gt;
                &amp;lt;/TableRowGroup&amp;gt;
                &amp;lt;TableRowGroup Style=&amp;#39;{StaticResource dataRowStyle}&amp;#39;&amp;gt;
                    &amp;lt;xrd:TableRowForDataTable TableName=&amp;#39;Ean&amp;#39;&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph&amp;gt;
                                &amp;lt;xrd:InlineTableCellValue PropertyName=&amp;#39;Position&amp;#39; /&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph&amp;gt;
                                &amp;lt;xrd:InlineTableCellValue PropertyName=&amp;#39;Item&amp;#39; /&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph&amp;gt;
                                &amp;lt;xrd:InlineTableCellValue PropertyName=&amp;#39;EAN&amp;#39;/&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                        &amp;lt;TableCell&amp;gt;
                            &amp;lt;Paragraph TextAlignment=&amp;#39;Center&amp;#39;&amp;gt;
                                &amp;lt;xrd:InlineTableCellValue PropertyName=&amp;#39;Count&amp;#39; AggregateGroup=&amp;#39;ItemCount&amp;#39;/&amp;gt;
                            &amp;lt;/Paragraph&amp;gt;
                        &amp;lt;/TableCell&amp;gt;
                    &amp;lt;/xrd:TableRowForDataTable&amp;gt;
                &amp;lt;/TableRowGroup&amp;gt;
            &amp;lt;/Table&amp;gt;
            &amp;lt;Paragraph&amp;gt;
                There are
                &amp;lt;xrd:InlineAggregateValue AggregateGroup=&amp;#39;ItemCount&amp;#39; AggregateValueType=&amp;#39;Count&amp;#39; EmptyValue=&amp;#39;no&amp;#39; FontWeight=&amp;#39;Bold&amp;#39; /&amp;gt; item positions with a total of
                &amp;lt;xrd:InlineAggregateValue AggregateGroup=&amp;#39;ItemCount&amp;#39; AggregateValueType=&amp;#39;Sum&amp;#39; EmptyValue=&amp;#39;0&amp;#39; FontWeight=&amp;#39;Bold&amp;#39; /&amp;gt; items listed.
            &amp;lt;/Paragraph&amp;gt;
        &amp;lt;/xrd:SectionDataGroup&amp;gt;
    &amp;lt;/Section&amp;gt;
&amp;lt;/FlowDocument&amp;gt;&lt;/pre&gt;
&lt;p&gt;I will go into more detail on how to customize this template in future posts. Now the data… &lt;/p&gt;&lt;pre class="brush: csharp"&gt;ReportData data = new ReportData();&lt;/pre&gt;
&lt;p&gt;First add some “metadata” &lt;/p&gt;&lt;pre class="brush: csharp"&gt;data.ReportDocumentValues.Add(&amp;quot;PrintDate&amp;quot;, DateTime.Now);&lt;/pre&gt;
&lt;p&gt;And then the DataTables&lt;/p&gt;&lt;pre class="brush: csharp"&gt;data.DataTables.Add(table);&lt;/pre&gt;
&lt;p&gt;Here, table is of type DataTable.&lt;/p&gt;
&lt;p&gt;And that is it!&lt;/p&gt;
&lt;p&gt;Finally export it to Xps and show&lt;/p&gt;&lt;pre class="brush: csharp"&gt;XpsDocument xps = reportDocument.CreateXpsDocument(&lt;strong&gt;data&lt;/strong&gt;);&lt;/pre&gt;
&lt;p&gt;You can use the standard DocumentViewer to display the report&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Read more&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="WPF multipage reports - Part I" href="http://janrep.blog.codeplant.net/WPF-Multipage-Reports--Part-I.aspx"&gt;WPF multipage reports - Part I&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="WPF multipage reports - Part II - Data Grouping" href="http://janrep.blog.codeplant.net/WPF-Multipage-Reports--Part-II--Data-Grouping.aspx"&gt;WPF multipage reports - Part II - Data Grouping&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="WPF multipage reports - Part III - Rendering" href="http://janrep.blog.codeplant.net/WPF-Multipage-Reports--Part-III--Rendering.aspx"&gt;WPF multipage reports - Part III - Rendering&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="WPF multipage reports - Part IV - Pagination" href="http://janrep.blog.codeplant.net/WPF-Multipage-Reports--Part-IV--Pagination.aspx"&gt;WPF multipage reports - Part IV – Pagination&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
&lt;div class="addthis_toolbox addthis_default_style"&gt;&lt;a class="addthis_button_facebook"&gt;&lt;/a&gt;&lt;a class="addthis_button_email"&gt;&lt;/a&gt;&lt;a class="addthis_button_favorites"&gt;&lt;/a&gt;&lt;a class="addthis_button_print"&gt;&lt;/a&gt;&lt;span class="addthis_separator"&gt;|&lt;/span&gt; &lt;a class="addthis_button_expanded" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;username=xa-4b2bc05e61a87869"&gt;More&lt;/a&gt; &lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b2bc05e61a87869"&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx&amp;amp;;subject=Open-Source+WPF+Reporting+Engine" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx&amp;amp;;title=Open-Source+WPF+Reporting+Engine" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx&amp;amp;title=Open-Source+WPF+Reporting+Engine" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx&amp;amp;;title=Open-Source+WPF+Reporting+Engine" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx&amp;amp;;title=Open-Source+WPF+Reporting+Engine&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/17/open-source-wpf-reporting-engine.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1252708" width="1" height="1"&gt;</description></item><item><title>Blend 3 Tip: Filter resources by selected element</title><link>http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx</link><pubDate>Sun, 06 Dec 2009 07:18:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1252014</guid><dc:creator>rudi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1252014</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1252014</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx#comments</comments><description>&lt;p&gt;If you ever worked on a relatively large WPF project, you probable at some point wanted to know which resources are used by a specific element? The problem is even harder if these resources are in multiple resource dictionaries? Imagine if you have a base resource dictionary with some “default” color and then a separate resource dictionary with the actually style! This can very easily get out of hand! Luckily blend makes it “super easy” to determine which resources are used by a selected control!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/BlendResourceFilter.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Select the element on the design surface, open the Resources tab and click on the “Show resources used by selected element”. This will filter all the resources to only show the resources that are used by this element!&lt;/p&gt;
&lt;p&gt;
&lt;div class="addthis_toolbox addthis_default_style"&gt;&lt;a class="addthis_button_facebook"&gt;&lt;/a&gt;&lt;a class="addthis_button_email"&gt;&lt;/a&gt;&lt;a class="addthis_button_favorites"&gt;&lt;/a&gt;&lt;a class="addthis_button_print"&gt;&lt;/a&gt;&lt;span class="addthis_separator"&gt;|&lt;/span&gt; &lt;a class="addthis_button_expanded" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;username=xa-4b2bc05e61a87869"&gt;More&lt;/a&gt; &lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b2bc05e61a87869"&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx&amp;amp;;subject=Blend+3+Tip%3a+Filter+resources+by+selected+element" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx&amp;amp;;title=Blend+3+Tip%3a+Filter+resources+by+selected+element" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx&amp;amp;title=Blend+3+Tip%3a+Filter+resources+by+selected+element" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx&amp;amp;;title=Blend+3+Tip%3a+Filter+resources+by+selected+element" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx&amp;amp;;title=Blend+3+Tip%3a+Filter+resources+by+selected+element&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/12/06/blend-3-tip-filter-resources-by-selected-element.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1252014" width="1" height="1"&gt;</description></item><item><title>Devs4Devs “The Challenge”</title><link>http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx</link><pubDate>Sun, 29 Nov 2009 11:43:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1251557</guid><dc:creator>rudi</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1251557</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1251557</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx#comments</comments><description>&lt;p&gt;This weekend was Devs4Devs and we had a blast! Here is my slide deck &lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/Devs4Devs%20The%20Challenge"&gt;SketchFlow in 20 minutes or less&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="http://dotnet.org.za/blogs/rudi/Devs4DevsSketchFlow.png" href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/Devs4Devs%20The%20Challenge"&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/Devs4DevsSketchFlow.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you&lt;/strong&gt; to everyone who attended my session!&lt;/p&gt;
&lt;p&gt;Since &lt;a href="http://dotnet.org.za/rudi/archive/2009/09/30/a-new-beginning.aspx"&gt;joining BB&amp;amp;D&lt;/a&gt;, I also get a opportunity to present ASTRA or TR sessions, here is the slide decks of my recent presentations&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/BBD/ASTRA%20-%20Composite%20Application%20Library%20%5E5PRISM%5E6"&gt;Composite Application Library (PRISM)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="http://dotnet.org.za/blogs/rudi/AstraPrism.png" href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/BBD/ASTRA%20-%20Composite%20Application%20Library%20%5E5PRISM%5E6"&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/AstraPrism.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/BBD/TR%20-%20SketchFlow"&gt;SketchFlow&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="http://dotnet.org.za/blogs/rudi/TRSketchFlow.png" href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/BBD/TR%20-%20Introduction%20into%20Silverlight%203"&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/TRSketchFlow.png" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="TR - What&amp;#39;s new in Silverlight 2.0" href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/BBD/TR%20-%20Introduction%20into%20Silverlight%203"&gt;What’s new in Silverlight 3.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-8781d455bf61cd0d.skydrive.live.com/browse.aspx/Presentations/ImagineCup%202009" target="_blank"&gt;ImagineCup 2009 - Microsoft Robotics Studio 2008&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/MSRDS2008R2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I will also start slowly uploading older presentations from Tech-ed and Developer Days!&lt;/p&gt;
&lt;p&gt;
&lt;div class="addthis_toolbox addthis_default_style"&gt;&lt;a class="addthis_button_facebook"&gt;&lt;/a&gt;&lt;a class="addthis_button_email"&gt;&lt;/a&gt;&lt;a class="addthis_button_favorites"&gt;&lt;/a&gt;&lt;a class="addthis_button_print"&gt;&lt;/a&gt;&lt;span class="addthis_separator"&gt;|&lt;/span&gt; &lt;a class="addthis_button_expanded" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;username=xa-4b2bc05e61a87869"&gt;More&lt;/a&gt; &lt;/div&gt;
&lt;script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4b2bc05e61a87869"&gt;&lt;/script&gt;
&lt;br /&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx&amp;amp;;subject=Devs4Devs+%e2%80%9cThe+Challenge%e2%80%9d" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx&amp;amp;;title=Devs4Devs+%e2%80%9cThe+Challenge%e2%80%9d" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx&amp;amp;title=Devs4Devs+%e2%80%9cThe+Challenge%e2%80%9d" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx&amp;amp;;title=Devs4Devs+%e2%80%9cThe+Challenge%e2%80%9d" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx&amp;amp;;title=Devs4Devs+%e2%80%9cThe+Challenge%e2%80%9d&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/29/devs4devs-the-challenge.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1251557" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/rudi/archive/tags/Composite+Application+Guidance+for+WPF/default.aspx">Composite Application Guidance for WPF</category><category domain="http://dotnet.org.za/rudi/archive/tags/Prism/default.aspx">Prism</category><category domain="http://dotnet.org.za/rudi/archive/tags/BB_2600_amp_3B00_D/default.aspx">BB&amp;amp;D</category><category domain="http://dotnet.org.za/rudi/archive/tags/SketchFlow/default.aspx">SketchFlow</category><category domain="http://dotnet.org.za/rudi/archive/tags/Devs4Devs/default.aspx">Devs4Devs</category></item><item><title>Anatomy of the Windows 7 taskbar</title><link>http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx</link><pubDate>Sun, 22 Nov 2009 19:56:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1251183</guid><dc:creator>rudi</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1251183</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1251183</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://i.techrepublic.com.com/gallery/322622-384-480.jpg" width="192" height="240" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;I FINALLY managed to finish the series on all the COOL stuff in the new Windows 7 taskbar!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;Anatomy of the Windows 7 taskbar – Progress&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 2)&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;If you want to see a “real” application using some of these features, check out &lt;a href="http://www.fishbowlclient.com/"&gt;Fishbowl&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Experience your Facebook content in new ways with a &lt;a href="http://www.fishbowlclient.com/Support.htm"&gt;trial&lt;/a&gt; desktop client application that lets you personalize how you read your newsfeed, update status, comment, like, browse and upload photos.”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="http://www.fishbowlclient.com/images/readyfor.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Also download the source from codeplex: &lt;a href="http://fishbowl.codeplex.com/"&gt;http://fishbowl.codeplex.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Other&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Light it Up- List of Applications that use new Windows 7 Features" href="http://www.hanselman.com/blog/LightItUpListOfApplicationsThatUseNewWindows7Features.aspx"&gt;Light it Up- List of Applications that use new Windows 7 Features&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="The Weekly Source Code 46 - Jeff Key rocks Taskbar Meters that Monitor your Windows 7 CPU and Me" href="http://www.hanselman.com/blog/TheWeeklySourceCode46JeffKeyRocksTaskbarMetersThatMonitorYourWindows7CPUAndMemoryAndDiskInTheTaskbar.aspx"&gt;The Weekly Source Code 46 - Jeff Key rocks Taskbar Meters that Monitor your Windows 7 CPU and Me&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx;buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1251183" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/rudi/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://dotnet.org.za/rudi/archive/tags/Jump+List/default.aspx">Jump List</category><category domain="http://dotnet.org.za/rudi/archive/tags/Taskbar/default.aspx">Taskbar</category><category domain="http://dotnet.org.za/rudi/archive/tags/TaskbarManager/default.aspx">TaskbarManager</category><category domain="http://dotnet.org.za/rudi/archive/tags/Windows+API+Code+Pack/default.aspx">Windows API Code Pack</category></item><item><title>Anatomy of the Windows 7 taskbar – Jumplist (Part 2)</title><link>http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx</link><pubDate>Sun, 22 Nov 2009 18:59:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1251164</guid><dc:creator>rudi</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1251164</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1251164</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/Win7JumpListRecent.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you application is associated with a specific file extension, then you get the last part for free! The taskbar also list files opened by your application in the Recent category!&lt;/p&gt;  &lt;p&gt;To check if your file extension is associated with your application, open your registry editor and navigate too HKEY_CLASSES_ROOT and search for your extension!&lt;/p&gt;  &lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/AssociateExtReg.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Here is a code snippet to check&lt;/p&gt;  &lt;pre class="brush: csharp"&gt;RegistryKey openWithKey = Registry.ClassesRoot.OpenSubKey(Path.Combine(&amp;quot;.wpost&amp;quot;, &amp;quot;OpenWithProgIds&amp;quot;)); 
string value = openWithKey.GetValue(progId, null) as string; 

if (value == null) 
{ 
   // No extension registered 
} 
else 
{ 
   // File extension is registered 
}&lt;/pre&gt;

&lt;p&gt;Registering a file extension is extremely easy using the RegistrationHelper&lt;/p&gt;

&lt;pre class="brush: csharp"&gt;string executablePath = Assembly.GetEntryAssembly().Location; 

RegistrationHelper.RegisterFileAssociations( 
   &amp;quot;LiveWriter&amp;quot;, 
   false, 
   &amp;quot;LiveWriter&amp;quot;, 
   executablePath + &amp;quot; /doc %1&amp;quot;, 
   &amp;quot;.wpost&amp;quot;);&lt;/pre&gt;

&lt;p&gt;To manually report file usage to shell, call the AddToRecent&lt;/p&gt;

&lt;pre class="brush: csharp"&gt;jumpList.AddToRecent(fileName);&lt;/pre&gt;

&lt;p&gt;Note: The dialog box automatically reports usage to shell, but it&amp;#39;s still recommended that the user explicitly calls AddToRecent. Shell will automatically handle duplicate additions.&lt;/p&gt;

&lt;p&gt;And that’s it…&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+2)&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-2.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1251164" width="1" height="1"&gt;</description></item><item><title>Anatomy of the Windows 7 taskbar – Jumplist (Part 1)</title><link>http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx</link><pubDate>Sun, 22 Nov 2009 07:16:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1251079</guid><dc:creator>rudi</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1251079</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1251079</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/Win7Taskbar.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The last topic I want to cover about the Windows 7 taskbar is the Jumplist!!! &lt;/p&gt;
&lt;p&gt;To create a new JumpList, call CreateJumpList()&lt;/p&gt;&lt;pre class="brush: csharp"&gt;JumpList jumplist = JumpList.CreateJumpList();
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;We should now choose if we are only creating user tasks or custom categories? I decided to create user tasks&lt;/p&gt;&lt;pre class="brush: csharp"&gt;jumplist.AddUserTasks(new JumpListLink(Path.Combine(Environment.CurrentDirectory, &amp;quot;MiMail.exe&amp;quot;), &amp;quot;Mail&amp;quot;) { Arguments = &amp;quot;mail&amp;quot; });
jumplist.AddUserTasks(new JumpListLink(Path.Combine(Environment.CurrentDirectory, &amp;quot;MiMail.exe&amp;quot;), &amp;quot;Contacts&amp;quot;) { Arguments = &amp;quot;contacts&amp;quot; });
jumplist.AddUserTasks(new JumpListLink(Path.Combine(Environment.CurrentDirectory, &amp;quot;MiMail.exe&amp;quot;), &amp;quot;Calendar&amp;quot;) { Arguments = &amp;quot;calendar&amp;quot; });
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;We could also use custom categories to group our tasks&lt;/p&gt;&lt;pre class="brush: csharp"&gt;JumpListCustomCategory category = new JumpListCustomCategory(&amp;quot;Mail&amp;quot;);
category.AddJumpListItems(new JumpListLink(Path.Combine(Environment.CurrentDirectory, &amp;quot;MiMail.exe&amp;quot;), &amp;quot;Inbox&amp;quot;) { Arguments = &amp;quot;inbox&amp;quot; });
category.AddJumpListItems(new JumpListLink(Path.Combine(Environment.CurrentDirectory, &amp;quot;MiMail.exe&amp;quot;), &amp;quot;New Message&amp;quot;) { Arguments = &amp;quot;newMessage&amp;quot; });
jumplist.AddCustomCategories(category);
&lt;/pre&gt;
&lt;p&gt;Don’t forget to call Refresh()&lt;/p&gt;&lt;pre class="brush: csharp"&gt;jumplist.Refresh();
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Now, if you read my &lt;a title="previous blog post" href="http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx"&gt;previous blog post&lt;/a&gt; and had no clue why you would want to use it? JumpList allows you to specify a application (and its arguments) to be executed if you click on a user task!!!&lt;/p&gt;
&lt;p&gt;Cool, isn’t it?&lt;/p&gt;
&lt;p&gt;To remove all the user tasks&lt;/p&gt;&lt;pre class="brush: csharp"&gt;jumplist.ClearAllUserTasks();&lt;/pre&gt;
&lt;p&gt;User tasks is also available if the application is pinned to the taskbar (If not removed)!&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=[Put_URL_Here];buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Jumplist+(Part+1)&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1251079" width="1" height="1"&gt;</description></item><item><title>Inter-process Mediator</title><link>http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx</link><pubDate>Sun, 22 Nov 2009 06:43:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1251076</guid><dc:creator>rudi</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1251076</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1251076</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;Imagine for a second that you are writing a application like outlook… lets call it MiMail.exe! This application is very basic and has 3 views that are relevant to me! i want to be able to see my mail, contacts and calendar! There is also 3 specific tasks that I want to be able to execute: new mail, new contact and new appointment!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.gpaconsultoresasociados.com/images/cuadro_mail.jpg" width="154" height="157" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;At any given time, I only want one instance of this application running but I want to be able to execute these task by using the command line arguments, ie:&lt;/p&gt;
&lt;p&gt;MiMail.exe /mail&lt;/p&gt;
&lt;p&gt;MiMail.exe /newContact&lt;/p&gt;
&lt;p&gt;I am going to use a variation of the mediator pattern to facilitate the inter process communication via named pipes!&lt;/p&gt;
&lt;p&gt;Mediator Pattern&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;b&gt;mediator pattern&lt;/b&gt;, one of the 23 &lt;a href="http://en.wikipedia.org/wiki/Software_design_pattern"&gt;design patterns&lt;/a&gt; described in &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns_(book)"&gt;Design Patterns: Elements of Reusable Object-Oriented Software&lt;/a&gt;, provides a unified &lt;a href="http://en.wikipedia.org/wiki/Interface_(computer_science)"&gt;interface&lt;/a&gt; to a set of interfaces in a &lt;a href="http://en.wikipedia.org/wiki/Subsystem"&gt;subsystem&lt;/a&gt;. This pattern is considered to be a behavioral pattern due to the way it can alter the program&amp;#39;s running behavior.&lt;/p&gt;
&lt;p&gt;Usually a program is made up of a (sometimes large) number of &lt;a href="http://en.wikipedia.org/wiki/Class_(computer_science)"&gt;classes&lt;/a&gt;. So the &lt;a href="http://en.wikipedia.org/wiki/Logic"&gt;logic&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Computation"&gt;computation&lt;/a&gt; is distributed among these classes. However, as more classes are developed in a program, especially during &lt;a href="http://en.wikipedia.org/wiki/Software_maintenance"&gt;maintenance&lt;/a&gt; and/or &lt;a href="http://en.wikipedia.org/wiki/Refactoring"&gt;refactoring&lt;/a&gt;, the problem of &lt;a href="http://en.wikipedia.org/wiki/Communication"&gt;communication&lt;/a&gt; between these classes may become more complex. This makes the program harder to read and &lt;a href="http://en.wikipedia.org/wiki/Software_maintenance"&gt;maintain&lt;/a&gt;. Furthermore, it can become difficult to change the program, since any change may affect code in several other classes.&lt;/p&gt;
&lt;p&gt;With the &lt;b&gt;mediator pattern&lt;/b&gt; communication between objects is encapsulated with a &lt;b&gt;mediator&lt;/b&gt; object. Objects no longer communicate directly with each other, but instead communicate through the mediator. This reduces the dependencies between communicating objects, thereby lowering the &lt;a href="http://en.wikipedia.org/wiki/Coupling_(computer_science)"&gt;coupling&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ok, so variation is maybe a under statement… more like abuse the mediator pattern!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/pipes.jpg" width="142" height="212" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Named Pipes&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In &lt;a href="http://en.wikipedia.org/wiki/Computing"&gt;computing&lt;/a&gt;, a &lt;b&gt;named pipe&lt;/b&gt; (also known as a &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/FIFO"&gt;FIFO&lt;/a&gt;&lt;/b&gt; for its behavior) is an extension to the traditional &lt;a href="http://en.wikipedia.org/wiki/Pipeline_(Unix)"&gt;pipe&lt;/a&gt; concept on &lt;a href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix-like&lt;/a&gt; systems, and is one of the methods of &lt;a href="http://en.wikipedia.org/wiki/Inter-process_communication"&gt;inter-process communication&lt;/a&gt;. &lt;a href="http://en.wikipedia.org/wiki/MacOS"&gt;MacOS&lt;/a&gt; calls it a &lt;b&gt;socket&lt;/b&gt;, which should not be confused with a &lt;a href="http://en.wikipedia.org/wiki/Internet_socket"&gt;TCP socket&lt;/a&gt;. The concept is also found in &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt;, although the semantics differ substantially. A traditional pipe is &amp;quot;unnamed&amp;quot; because it exists anonymously and persists only for as long as the process is running. A named pipe is system-persistent and exists beyond the life of the process and must be deleted once it is no longer being used. Processes generally attach to the named pipe (usually appearing as a file) to perform &lt;a href="http://en.wikipedia.org/wiki/Inter-process_communication"&gt;inter-process communication&lt;/a&gt; (IPC).&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;A good friend and fellow MVP, Mario Lionello, helped me out getting the asynchronous named pipes to work! I included his MaLio.AsyncPipes library!!!&lt;/p&gt;
&lt;p&gt;Here is my updated App.xaml.cs&lt;/p&gt;&lt;pre class="brush: csharp"&gt;public partial class App : Application
{
   const string appName = &amp;quot;MiMail&amp;quot;;

   private void OnStartup(object sender, StartupEventArgs e)
   {
      if (SingleInstanceManager.IsApplicationRunning())
      {
         foreach (var arg in e.Args)
         {
            Mediator.Notify(appName, arg);
         }

         App.Current.Shutdown();
         return;
      }

      Views.MainView view = new Views.MainView();
      view.DataContext = new ViewModels.MainViewModel();
      view.Show();
   }
}
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;MiMail is using a very simple mutex to detect if their is a instance of this application running. If the application is already running, use the Mediator to notify the listeners that a new instance was started and pass the command line arguments as messages!&lt;/p&gt;
&lt;p&gt;Now I can just wait for new messages!&lt;/p&gt;&lt;pre class="brush: csharp"&gt;mediator = new Mediator(appName);

mediator.Register(&amp;quot;contacts&amp;quot;, ShowContacts);
mediator.Register(&amp;quot;calendar&amp;quot;, ShowCalendar);
mediator.Register(&amp;quot;mail&amp;quot;, ShowMail);
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Here is a example of the Action&amp;lt;&amp;gt;&lt;/p&gt;&lt;pre class="brush: csharp"&gt;void ShowContacts(object message)
{
    this.Dispatcher.Invoke(
        DispatcherPriority.Normal,
        new Action(() =&amp;gt; 
        {
            viewHost.Children.Clear();
            viewHost.Children.Add(new ContactsView());
        }));
}&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;And that is it!!!&lt;/p&gt;
&lt;p&gt;Launching “MiMail.exe contacts” will call the ShowContacts action!!!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-8781d455bf61cd0d.skydrive.live.com/self.aspx/BlogDemos/MiMail.zip"&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx;buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx&amp;amp;;subject=Inter-process+Mediator" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx&amp;amp;;title=Inter-process+Mediator" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx&amp;amp;title=Inter-process+Mediator" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx&amp;amp;;title=Inter-process+Mediator" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx&amp;amp;;title=Inter-process+Mediator&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/22/inter-process-mediator.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1251076" width="1" height="1"&gt;</description></item><item><title>Anatomy of the Windows 7 taskbar - Progress</title><link>http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx</link><pubDate>Wed, 04 Nov 2009 08:06:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1250271</guid><dc:creator>rudi</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1250271</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1250271</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/ProgressOverlay.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Ever noticed the subtle progress overlay while downloading something from the internet? With Windows 7’s new taskbar, applications can visually display their progress on the taskbar! &lt;/p&gt;
&lt;p&gt;We first need to set the mode&lt;/p&gt;&lt;pre class="brush: csharp"&gt;TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The Windows 7 taskbar has 5 possible states&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NoProgress &lt;/strong&gt;- No progress is displayed. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indeterminate &lt;/strong&gt;- The progress is indeterminate (marquee). &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Normal &lt;/strong&gt;- Normal progress is displayed. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error &lt;/strong&gt;- An error occurred (red). &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Paused &lt;/strong&gt;- The operation is paused (yellow). &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;If the state is changed to Normal, the you can also set the value&lt;/p&gt;&lt;pre class="brush: csharp"&gt;TaskbarManager.Instance.SetProgressValue(50, 100);&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Easy? Isn’t it?&lt;/p&gt;
&lt;p&gt;What would a post be without trying to make it just a little easier for the WPF developers? I also created a attached property that auto-magically links a WPF ProgressBar to the Windows 7 taskbar…&lt;/p&gt;
&lt;p&gt;Here is my very simple demo&lt;/p&gt;&lt;pre class="brush: xml"&gt;&amp;lt;Window x:Class=&amp;quot;ProgressDemo.Window1&amp;quot;
    xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    xmlns:=&amp;quot;clr-namespace:ProgressDemo&amp;quot;
    Title=&amp;quot;ProgressDemo&amp;quot; Height=&amp;quot;100&amp;quot; Width=&amp;quot;300&amp;quot;&amp;gt;
    &amp;lt;Grid&amp;gt;
        &amp;lt;Grid.RowDefinitions&amp;gt;
            &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot; /&amp;gt;
            &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot; /&amp;gt;
        &amp;lt;/Grid.RowDefinitions&amp;gt;
        &amp;lt;Slider Minimum=&amp;quot;0&amp;quot; Maximum=&amp;quot;100&amp;quot; x:Name=&amp;quot;source&amp;quot; Grid.Row=&amp;quot;0&amp;quot; /&amp;gt;
        &amp;lt;ProgressBar Minimum=&amp;quot;0&amp;quot; Maximum=&amp;quot;100&amp;quot; Grid.Row=&amp;quot;1&amp;quot; Height=&amp;quot;20&amp;quot;
             Value=&amp;quot;{Binding ElementName=source, Path=Value}&amp;quot; 
             local:Win7.ShowProgressInTaskbar=&amp;quot;True&amp;quot; /&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/Window&amp;gt;
&lt;/pre&gt;
&lt;p&gt;As you can see from this XAML, I created a Slider and bound it to the ProgressBar. To make the ProgressBar auto-magically update the Windows 7 taskbar, all we need to do is set the ShowProgressInTaskbar=”True”!!!&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=[Put_URL_Here];buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-8781d455bf61cd0d.skydrive.live.com/self.aspx/BlogDemos/ProgressDemo.zip"&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar+-+Progress" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+-+Progress" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar+-+Progress" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+-+Progress" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+-+Progress&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1250271" width="1" height="1"&gt;</description></item><item><title>Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)</title><link>http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx</link><pubDate>Wed, 04 Nov 2009 08:04:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1250268</guid><dc:creator>rudi</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1250268</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1250268</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/TabbedThumbnails.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;In my “quest” to create thumbnails similar to the once used in IE8, I hit a couple of snags! In &lt;a href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;part 1&lt;/a&gt; we looked at the basics of creating a TabbedThumbnail. This is still a very manual process so I decided to make it more WPF-like!&lt;/p&gt;
&lt;p&gt;Introducing TabbedThumbnailContentControl&lt;/p&gt;
&lt;p&gt;Maybe I should take a step back and first recap what a ContentControl is in WPF?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Represents a control with a single piece of content.&lt;/p&gt;
&lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.aspx" href="http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.aspx&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ok, so that isn’t the greatest MSDN article every but the ContentControl is a fundamental building block of WPF… As you might have guest by now, the TabbedThumbnailContentControl is a UI element that can host a single piece of content! The magic thou is that it will auto-magically create the TabbedThumbnail for you and show as its preview what-ever you placed inside the content control!!!&lt;/p&gt;
&lt;p&gt;And to make it a little more useful, its also fully MVVM-able! The TabbedThumbnailControl exposes 2 commands that can be bound too by the VM:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ActivateView - The event that occurs when a tab is activated (clicked) on the taskbar thumbnail preview. &lt;/li&gt;
&lt;li&gt;CloseView - The event that occurs when a tab is closed on the taskbar thumbnail preview. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;And to use the TabbedThumbnailContentControl? Very easy… Here is my view&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ListBox &lt;/span&gt;&lt;span style="COLOR:red;"&gt;ItemsSource&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Binding&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;}&amp;quot;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;local&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;:&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;TabbedThumbnailContentControl &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Title&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Title&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;ActivateView&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="COLOR:red;"&gt;ActivatedCommand&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;CloseView&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="COLOR:red;"&gt;CloseCommand&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;}&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Image &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Path&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Width&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;200&amp;quot; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Height&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;200&amp;quot; /&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;local&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;:&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;TabbedThumbnailContentControl&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Style &lt;/span&gt;&lt;span style="COLOR:red;"&gt;TargetType&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;x&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;:&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Type &lt;/span&gt;&lt;span style="COLOR:red;"&gt;ListBoxItem&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;}&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Setter &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Property&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;IsSelected&amp;quot; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="COLOR:red;"&gt;IsSelected&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;, &lt;/span&gt;&lt;span style="COLOR:red;"&gt;Mode&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=TwoWay}&amp;quot; /&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;Style&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;ListBox&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;My ViewModel&lt;/p&gt;&lt;pre class="brush: csharp"&gt;public class PhotoViewModel : WorkspaceViewModel
{
    public string Title { get; set; }
    public string Path { get; set; }

    private bool isSelected = false;
    public bool IsSelected
    {
        get { return isSelected; }
        set
        {
            if (isSelected != value)
            {
                isSelected = value;
                OnPropertyChanged(&amp;quot;IsSelected&amp;quot;);
            }
        }
    }

    ICommand activatedCommand;
    public ICommand ActivatedCommand
    {
        get
        {
            if (activatedCommand == null)
                activatedCommand = new DelegateCommand(Activated);

            return activatedCommand;
        }
    }

    private void Activated()
    {
        IsSelected = true;
    }
}&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;My VM borrowed Josh’s WorkspaceViewModel base class (To support a VM closing itself)!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/PreviewPhotos.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;And that is it! Now I can add photos to my ListBox and it would be showed in the taskbar! Their is also FULL integration! If you close a thumbnail in the taskbar it will be removed from the ListBox&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=[Put_URL_Here];buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cid-8781d455bf61cd0d.skydrive.live.com/self.aspx/BlogDemos/SimplePictureViewer.zip"&gt;Source&lt;/a&gt;&lt;/p&gt;&lt;strong&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;&lt;/strong&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+2)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+2)&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1250268" width="1" height="1"&gt;</description></item><item><title>Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)</title><link>http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx</link><pubDate>Wed, 14 Oct 2009 12:27:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1237102</guid><dc:creator>rudi</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1237102</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1237102</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/TabbedThumbnails.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;One of the “features” of the new taskbar that excites me is the TabbedThumbnail interface! This allows me to quickly see which applications are open and what their status is! From the screen capture above you can easily see that I have my favourite google group (&lt;a href="http://groups.google.com/group/wpf-disciples"&gt;The WPF Disciples&lt;/a&gt;) open and also my own website (Shameless plug). Even these buttons are customizable… and it’s VERY easy to do!!!&lt;/p&gt;
&lt;p&gt;To create a new TabbedThumbnail&lt;/p&gt;&lt;pre class="brush: csharp"&gt;preview = new TabbedThumbnail(this, this, VisualTreeHelper.GetOffset(this));
preview.Tooltip = &amp;quot;This is a awesome new tooltip&amp;quot;;
preview.Title = &amp;quot;Customer XYZ&amp;quot;;
preview.DisplayFrameAroundBitmap = true;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;And to use it&lt;/p&gt;&lt;pre class="brush: csharp"&gt;TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(preview);
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Although I am using the TabbedThumbnail at its most basic form here, it’s got loads of options, here are some examples&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TabbedThumbnailClosed - The event that occurs when a tab is closed on the taskbar thumbnail preview. &lt;/li&gt;
&lt;li&gt;TabbedThumbnailMaximized - The event that occurs when a tab is maximized via the taskbar thumbnail preview (context menu). &lt;/li&gt;
&lt;li&gt;TabbedThumbnailMinimized - The event that occurs when a tab is minimized via the taskbar thumbnail preview (context menu). &lt;/li&gt;
&lt;li&gt;TabbedThumbnailActivated - The event that occurs when a tab is activated (clicked) on the taskbar thumbnail preview. &lt;/li&gt;
&lt;li&gt;TabbedThumbnailBitmapRequested - The event that occurs when a thumbnail or peek bitmap is requested by the user. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;If you have content that constantly changes (Think media player), you can also call InvalidatePreview!&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/MyCoolApplication.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;And that’s it for part 1, in part 2 we will cover custom peek areas and multi-tab interface (Like IE8)&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=[Put_URL_Here];buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;strong&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;&lt;/strong&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+1)" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+TabbedThumbnail+(Part+1)&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1237102" width="1" height="1"&gt;</description></item><item><title>Make your WPF buttons color hot-track!</title><link>http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx</link><pubDate>Wed, 14 Oct 2009 07:16:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1236808</guid><dc:creator>rudi</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1236808</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1236808</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/e7/WindowsLiveWriter/HappyAnniversaryWindowsontheEvolutionoft_1365F/clip_image018_thumb.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;One of the cool new features of the Windows 7 taskbar is that all running applications gives you this nice feedback that its running using the color hot-track “feature”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Color hot-track is a small touch that typifies the new taskbar’s personality. When a person moves her mouse over a running program on the taskbar, she will be pleasantly surprised to find that a light source tracks her mouse and the color of the light is actually based on the icon itself. We calculate the most dominant RGB of the icon and dynamically paint the button with this color. Color hot-track provides a delight factor, it offers feedback that a program is running and it showcases a program’s icon. We’ve always believed that programs light up the Windows platform and now, we’re returning the favor.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Engineering Windows 7" href="http://blogs.msdn.com/e7/default.aspx"&gt;Engineering Windows 7&lt;/a&gt;&lt;em&gt; - &lt;a href="http://blogs.msdn.com/e7/archive/2008/11/20/happy-anniversary-windows-on-the-evolution-of-the-taskbar.aspx"&gt;The Windows 7 Taskbar&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;A while back I read a article from &lt;a title="Grant Hinkson Blog" href="http://www.granthinkson.com/"&gt;Grant Hinkson&lt;/a&gt; called &lt;a href="http://www.granthinkson.com/2008/02/22/mcguffin-enabling-image-converter/"&gt;“McGuffin”-Enabling Image Converter&lt;/a&gt;!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“This converter is bound to an Image’s Source property and then returns an “averaged” Color”&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I “borrowed” his idea and created my own value converter that takes a icon (BitmapFrame), calculates the average color and the create a linear gradient brush using this color!&lt;/p&gt;&lt;pre class="brush: csharp"&gt;public class IconToAvgColorBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null)
        {
            return new SolidColorBrush(Colors.Transparent);
        }

        MemoryStream stream = new MemoryStream();
        if (value is BitmapFrame)
        {
            BitmapFrame frame = (BitmapFrame)value;
            System.Windows.Media.Imaging.BmpBitmapEncoder e = new BmpBitmapEncoder();
            e.Frames.Add(frame);
            e.Save(stream);
        }

        try
        {
            Bitmap bitmap = new Bitmap(stream);

            int tr = 0;
            int tg = 0;
            int tb = 0;

            for (int x = 0; x &amp;lt; bitmap.Width; x++)
            {
                for (int y = 0; y &amp;lt; bitmap.Height; y++)
                {
                    System.Drawing.Color pixel = bitmap.GetPixel(x, y);
                    tr += pixel.R;
                    tg += pixel.G;
                    tb += pixel.B;
                }
            }

            byte r = (byte)Math.Floor((double)(tr / (bitmap.Height * bitmap.Width)));
            byte g = (byte)Math.Floor((double)(tg / (bitmap.Height * bitmap.Width)));
            byte b = (byte)Math.Floor((double)(tb / (bitmap.Height * bitmap.Width)));

            LinearGradientBrush brush = new LinearGradientBrush();
            brush.EndPoint = new System.Windows.Point(0.5, 1.0);
            brush.StartPoint = new System.Windows.Point(0.5, 0.0);
            brush.GradientStops.Add(new GradientStop(System.Windows.Media.Color.FromArgb(0xFF, r, g, b), 0.00));
            brush.GradientStops.Add(new GradientStop(System.Windows.Media.Color.FromArgb(0x00, r, g, b), 1.00));
            return brush;
        }
        catch (Exception)
        {
            return new SolidColorBrush(Colors.Transparent);
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new Exception(&amp;quot;The method or operation is not implemented.&amp;quot;);
    }
}
&lt;/pre&gt;
&lt;p&gt;[DISCLAIMER] This code still needs some error checking…&lt;/p&gt;
&lt;p&gt;The next part could be re-factored into a control but I just wanted to show the basics! I create a style that changes the background color from transparent to the average color using triggers!&lt;/p&gt;&lt;pre class="brush: xml"&gt;&amp;lt;local:IconToAvgColorBrushConverter x:Key=&amp;quot;iconToAvgColorBrushConverter&amp;quot;/&amp;gt;

&amp;lt;Style x:Key=&amp;quot;ColorHotTrackButton&amp;quot; TargetType=&amp;quot;{x:Type Button}&amp;quot; BasedOn=&amp;quot;{x:Null}&amp;quot;&amp;gt;
    &amp;lt;!-- Removed for brevity --&amp;gt;
&amp;lt;/Style&amp;gt;
&lt;/pre&gt;
&lt;p&gt;And to use it is very simple!&lt;/p&gt;&lt;pre class="brush: xml"&gt;&amp;lt;Button Margin=&amp;quot;2.5,0,2.5,0&amp;quot; Style=&amp;quot;{DynamicResource ColorHotTrackButton}&amp;quot; Background={Binding Path=Source, Converter={StaticResource iconToAvgColorBrushConverter}, ElementName=explorerIcon, Mode=Default}&amp;quot;&amp;gt;
    &amp;lt;Image Source=&amp;quot;Assets/IE.ico&amp;quot; Width=&amp;quot;32&amp;quot; Height=&amp;quot;32&amp;quot; Margin=&amp;quot;12.5,0,12.5,0&amp;quot; x:Name=&amp;quot;ieIcon&amp;quot; /&amp;gt;        
&amp;lt;/Button&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Here is the end result…&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/ColorHotTrackButtons.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=[Put_URL_Here];buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a title="Source" href="http://cid-8781d455bf61cd0d.skydrive.live.com/self.aspx/BlogDemos/ColorHotTrackButton.zip"&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;strong&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;&lt;/strong&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx&amp;amp;;subject=Make+your+WPF+buttons+color+hot-track!" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx&amp;amp;;title=Make+your+WPF+buttons+color+hot-track!" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx&amp;amp;title=Make+your+WPF+buttons+color+hot-track!" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx&amp;amp;;title=Make+your+WPF+buttons+color+hot-track!" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx&amp;amp;;title=Make+your+WPF+buttons+color+hot-track!&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/14/make-your-wpf-buttons-color-hot-track.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1236808" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/rudi/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://dotnet.org.za/rudi/archive/tags/Color+Hot-track/default.aspx">Color Hot-track</category><category domain="http://dotnet.org.za/rudi/archive/tags/Taskbar/default.aspx">Taskbar</category><category domain="http://dotnet.org.za/rudi/archive/tags/IValueConverter/default.aspx">IValueConverter</category><category domain="http://dotnet.org.za/rudi/archive/tags/BITMAP/default.aspx">BITMAP</category><category domain="http://dotnet.org.za/rudi/archive/tags/BitmapFrame/default.aspx">BitmapFrame</category></item><item><title>Anatomy of the Windows 7 taskbar – Overlays</title><link>http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx</link><pubDate>Tue, 13 Oct 2009 10:20:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1236024</guid><dc:creator>rudi</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1236024</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1236024</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;As you would expect from Microsoft, Office integrates very nicely with Windows 7 taskbar! Have a look at the following 2 taskbar icons:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/MailNormal.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;And if I have unread mail&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/IveGotMail.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;These “visual clues” makes status changes look natural! And the best of all? It’s sooooo easy to do!&lt;/p&gt;&lt;pre class="brush: csharp"&gt;TaskbarManager.Instance.SetOverlayIcon(this.Handle, TaskbarDemo.Properties.Resources.IveGotMail, &amp;quot;IveGotMail&amp;quot;);&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;and to remove the visual clues&lt;/p&gt;&lt;pre class="brush: csharp"&gt;TaskbarManager.Instance.SetOverlayIcon(this.Handle, null, null);
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Easy? Isn’t it… To make your application play nice with Windows 7 isn’t very difficult!!!&lt;/p&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=[Put_URL_Here];buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;strong&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;&lt;/strong&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Overlays" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Overlays" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Overlays" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Overlays" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+%e2%80%93+Overlays&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1236024" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/rudi/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://dotnet.org.za/rudi/archive/tags/TaskbarManager/default.aspx">TaskbarManager</category><category domain="http://dotnet.org.za/rudi/archive/tags/Office/default.aspx">Office</category><category domain="http://dotnet.org.za/rudi/archive/tags/Overlays/default.aspx">Overlays</category></item><item><title>Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton</title><link>http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx</link><pubDate>Tue, 13 Oct 2009 09:14:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:1236014</guid><dc:creator>rudi</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/rsscomments.aspx?PostID=1236014</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/rudi/commentapi.aspx?PostID=1236014</wfw:comment><comments>http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx#comments</comments><description>
&lt;script type="text/javascript"&gt;  
   SyntaxHighlighter.all()  
&lt;/script&gt;

&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/Naked.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;With Windows 7’s public release less than 2 weeks away (22 October 2009) I decided to dig into how the taskbar works! I will specifically be looking at it from a developers point of view! Before we start, download the &lt;a title="Windows® API Code Pack for Microsoft® .NET Framework" href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;Windows® API Code Pack for Microsoft® .NET Framework&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The Windows® API Code Pack for Microsoft® .NET Framework provides a source code library that can be used to access some new Windows 7 features (and some existing features of older versions of Windows operating system) from managed code. These Windows features are not available to developers today in the .NET Framework. &lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The first part we will be dissecting is the ThumbnailToolbarButton&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.org.za/blogs/rudi/OnlyTheToolbarButtons.jpg" alt="" /&gt;&lt;/p&gt;&lt;pre class="brush: csharp"&gt;buttonPrevious = new ThumbnailToolbarButton(Properties.Resources.prevArrow, &amp;quot;Previous&amp;quot;);
buttonPrevious.Enabled = false;
buttonPrevious.Click += new EventHandler(buttonPrevious_Click);

buttonNext = new ThumbnailToolbarButton(Properties.Resources.nextArrow, &amp;quot;Next&amp;quot;);
buttonNext.Enabled = false;
buttonNext.Click += new EventHandler(buttonNext_Click);

buttonPlay = new ThumbnailToolbarButton(Properties.Resources.play, &amp;quot;Play&amp;quot;);
buttonPlay.Click += new EventHandler(buttonPlay_Click);
&lt;/pre&gt;
&lt;p&gt;And to actually add it to the TabbedThumbnail?&lt;/p&gt;&lt;pre class="brush: csharp"&gt;TaskbarManager.Instance.ThumbnailToolbars.AddButtons(new WindowInteropHelper(this).Handle, buttonPrevious, buttonPlay, buttonNext);&lt;/pre&gt;
&lt;p&gt;Other properties of note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;IsInteractive&lt;/strong&gt; - Non-interactive buttons don&amp;#39;t display any hover behavior nor do they raise click events. They are intended to be used as status icons. This is mostly similar to being not Enabled, but the image is not desaturated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DismissOnClick&lt;/strong&gt; - If set to true, the taskbar button&amp;#39;s flyout will close immediately. Default is true.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enabled&lt;/strong&gt; - If the button is disabled, it is present, but has a visual state that indicates that it will not respond to user action. Default is true.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;We will be seeing more and more of this kind of integration in the future! Web browsers forward/back navigation integration, Media player play/next/previous, etc!&lt;/p&gt;
&lt;p&gt;PS. Don’t forget to check if your OS supports this before just using it!!!&lt;/p&gt;&lt;pre class="brush: csharp"&gt;if (TaskbarManager.IsPlatformSupported)
{
    // ...
}
&lt;/pre&gt;
&lt;p&gt;
&lt;script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=36802d58-9b2f-407e-84f8-4f2cc163d319&amp;amp;type=website&amp;amp;popup=false;url=[Put_URL_Here];buttonText=If%20you%20found%20this%20USEFUL%20or%20INTERESTING,%20please%20share%20this!"&gt;&lt;/script&gt;
&lt;/p&gt;&lt;strong&gt;
&lt;p&gt;&lt;strong&gt;Related Posts – Anatomy of the Windows 7 taskbar series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar - ThumbnailToolbarButton&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Overlays" href="http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-overlays.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Overlays&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/10/14/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-tabbedthumbnail-part-2.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – TabbedThumbnail (Part 2)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar - Progress" href="http://dotnet.org.za/rudi/archive/2009/11/04/anatomy-of-the-windows-7-taskbar-progress.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Progress&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Anatomy of the Windows 7 taskbar – Jumplist (Part 1)" href="http://dotnet.org.za/rudi/archive/2009/11/22/anatomy-of-the-windows-7-taskbar-jumplist-part-1.aspx"&gt;&lt;font color="#669966"&gt;Anatomy of the Windows 7 taskbar – Jumplist (Part 1)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anatomy of the Windows 7 taskbar&amp;nbsp;– Jumplist (Part 2)&lt;/li&gt;&lt;/ul&gt;&lt;/strong&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx&amp;amp;;subject=Anatomy+of+the+Windows+7+taskbar+-+ThumbnailToolbarButton" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+-+ThumbnailToolbarButton" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx&amp;amp;title=Anatomy+of+the+Windows+7+taskbar+-+ThumbnailToolbarButton" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+-+ThumbnailToolbarButton" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx&amp;amp;;title=Anatomy+of+the+Windows+7+taskbar+-+ThumbnailToolbarButton&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/rudi/archive/2009/10/13/anatomy-of-the-windows-7-taskbar-thumbnailtoolbarbutton.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=1236014" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/rudi/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://dotnet.org.za/rudi/archive/tags/Taskbar/default.aspx">Taskbar</category><category domain="http://dotnet.org.za/rudi/archive/tags/TaskbarManager/default.aspx">TaskbarManager</category><category domain="http://dotnet.org.za/rudi/archive/tags/ThumbnailToolbarButton/default.aspx">ThumbnailToolbarButton</category><category domain="http://dotnet.org.za/rudi/archive/tags/Windows+API+Code+Pack/default.aspx">Windows API Code Pack</category></item></channel></rss>