<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.renevo.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">.Net Articles</title><subtitle type="html" /><id>http://www.renevo.com/blogs/dotnet/atom.aspx</id><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/default.aspx" /><link rel="self" type="application/atom+xml" href="http://www.renevo.com/blogs/dotnet/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-05-29T19:08:00Z</updated><entry><title>Your first WPF Ribbon Application</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2009/02/10/your-first-wpf-ribbon-application.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2009/02/10/your-first-wpf-ribbon-application.aspx</id><published>2009-02-10T20:11:02Z</published><updated>2009-02-10T20:11:02Z</updated><content type="html">&lt;p&gt;Well, in the spirit of those “great” first programs, I thought that I would post this one up as a &lt;a href="http://www.renevo.com/blogs/community_blogs/archive/2009/01/18/windows-7-style-wpf-ribbon.aspx" target="_blank"&gt;follow up to my last news post about how I found this little gem in the WPF Futures&lt;/a&gt; site.&lt;/p&gt;  &lt;p&gt;So, without further ado, lets get started.&lt;/p&gt;  &lt;p&gt;First things first, you need to head over to &lt;a href="http://www.codeplex.com" target="_blank"&gt;codeplex&lt;/a&gt; and &lt;a href="http://www.codeplex.com/wpf/Wiki/View.aspx?title=WPF%20Ribbon%20Preview" target="_blank"&gt;download the WPF Ribbon Preview&lt;/a&gt;, this will require you to fill out an Office 2007 licensing agreement, it is free, and basically says that you aren’t going to compete with Microsoft if you use this UI, and that you will adhere to the Ribbon Standards, which the control does a really good job of enforcing for you.&lt;/p&gt;  &lt;p&gt;In the download, the file you are going to be most worried about is the “RibbonControlsLibrary.dll”, this is the assembly that contains all the Ribbon goodness. Extract that to a location where you can easily find it, and startup Visual Studio 2008.&lt;/p&gt;  &lt;p&gt;We want to create a new WPF Application, the language you choose at this point is totally irrelevant, as most of this article is going to be in XAML. I named mine “RibbonSample”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_11B0717B.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="174" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_178DA5C5.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;First things first, add a reference to the RibbonControlsLibrary.dll. You will need to browse to the file, the place you extracted it above. Also be sure that the “Copy Local” property for the reference is set to True.&lt;/p&gt;  &lt;p&gt;Now lets dig into some XAML, I prefer in Visual Studio to just remove the preview pane all together when starting my XAML work.&lt;/p&gt;  &lt;p&gt;We are going to have to add a few new schema references to the XAML, specifically for the Ribbon Control.&amp;#160; Lets prefix this with an “r” to keep our XAML sane. If you have never added any XAML references, it is done by simply declaring a new CLR schema reference. The code below has the added code italic and bolded.&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;Window &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
&lt;strong&gt;&lt;em&gt;    &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;span style="color:blue;"&gt;&lt;strong&gt;&lt;em&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;&lt;/em&gt;&lt;/strong&gt;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Window&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Now some major changes, we are going to change the main window class to a ribbon window, modify the size, startup location, resize mode, min height, and min width. For easier layout, I am going to also change the Grid to a DockPanel. Inside the DockPanel, we also need to add an actual Ribbon, or else our app will just show up as a big black mass. This is done by simply placing a Ribbon control inside of the DockPanel. And finally, to fill up the area that we don’t need with the ribbon, lets just dump in a RichTextBox control.&lt;/p&gt;

&lt;p&gt;After doing all of the above, the XAML to get a Ribbon on a Form up and running is only this amount of XAML.&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;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_409844C1.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="184" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_296CCA43.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Pretty simple eh?&lt;/p&gt;

&lt;p&gt;It doesn’t really do much at this point, as we haven’t added anything to it, but that will come in the next step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding some images 
    &lt;br /&gt;&lt;/strong&gt;Ribbon controls are very graphical, so in order to fill this thing up, lets add some images to our projects, create an images directory and find some nice png files, or use the ones &lt;a href="http://www.renevo.com/files/folders/articles_vbnet/entry2155.aspx" target="_blank"&gt;provided in the download below&lt;/a&gt;. I used 48x48 PNG files with transparency.&lt;/p&gt;

&lt;p&gt;Starting at the top, we are going to want to start placing some images on our form. Just like regular forms, you can add the form icon in the root window declaration.&lt;/p&gt;

&lt;p&gt;Next we want to add a button to the QAT (Quick Access Toolbar) that is located on the form’s title bar. This is done by simply adding to the QuickAccessToolBar element for the Ribbon. For this one, we will simply add a command button that has an icon and is clickable. This part is a bit new to me, but we need to create some static resources in the form (or you can link them) for the Ribbon Commands, this makes them very re-usable, and easier to work with.&amp;#160; Below is the XAML for the new QAT button and its placement. You will however have to implement the “CanExecute” event in order for the button to be clickable, simply return True for this function.&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;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\app.png&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QATButton&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button, it doesn't do anything&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;QATButton&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_68CA7DD3.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="184" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_3FC26F88.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now that we have implemented a QAT button, lets add an image to our “Start Button” for the Ribbon, this is pretty straightforward. For this image I used a 24x24 as it doesn’t streatch into the area.&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;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\app.png&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QATButton&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button, it doesn't do anything&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;QATButton&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;The next step will be to add a few menu item commands, and the first one we will add a few sub-items to so you can see how the rollout menus work. As part of a work around, we will need to also add a sized rectangle to the RecentItemList of the application menu so that it will draw large enough for us to have sub items without scrolling (similar to how office works).&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;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\app.png&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QATButton&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button, it doesn't do anything&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; /&amp;gt;
            
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;QATButton&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 1 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 2 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 3 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 4 in the list&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem4&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_7B15D546.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="197" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_015CABD5.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now we can move along to the fun parts, and add a few ribbon tabs, and a few groups of buttons on those tabs.&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;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\app.png&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QATButton&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button, it doesn't do anything&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; /&amp;gt;
            
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calc This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Used to do math and stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule and remind yourself of stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Format This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Where you store your naked pictures&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; /&amp;gt;
            
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaEject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Open the cup holder&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaBackward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaPlay&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaStop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop the music&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaForward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; /&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;QATButton&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 1 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 2 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 3 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 4 in the list&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem4&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Home&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Media&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaEject&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaBackward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaPlay&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaStop&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaForward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink &lt;/span&gt;&lt;span style="color:red;"&gt;NavigateUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://www.renevo.com&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RenEvo Software &amp;amp;amp; Designs&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&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;And the Preview:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_5C5EEB5B.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="145" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_17B2511A.png" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://www.renevo.com/blogs/dotnet/image_79D3CD18.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="143" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_6E3E0FD9.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now, lets work on those groups a bit, lets add a title to both groups, and make the icons for the media in a group.&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;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\app.png&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QATButton&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button, it doesn't do anything&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; /&amp;gt;

            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calc This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Used to do math and stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule and remind yourself of stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Format This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Where you store your naked pictures&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; /&amp;gt;

            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaEject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Open the cup holder&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaBackward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaPlay&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaStop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop the music&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaForward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; /&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;QATButton&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 1 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 2 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 3 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 4 in the list&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem4&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Home&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Programs&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.GroupSizeDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinitionCollection&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinitionCollection&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.GroupSizeDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Media&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Media Controls&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaEject&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaBackward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaPlay&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaStop&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaForward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink &lt;/span&gt;&lt;span style="color:red;"&gt;NavigateUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://www.renevo.com&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RenEvo Software &amp;amp;amp; Designs&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_505F8BD8.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="155" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_39A0444F.png" width="213" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.renevo.com/blogs/dotnet/image_06D03DDB.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="155" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_741B4423.png" width="209" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And now lets add a single extra item to the QAT Drop down.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_042A12DB.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="138" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_587948DE.png" width="244" border="0" /&gt;&lt;/a&gt; &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;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\app.png&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QATButton&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button, it doesn't do anything&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; /&amp;gt;

            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calc This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Used to do math and stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule and remind yourself of stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Format This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Where you store your naked pictures&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; /&amp;gt;

            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaEject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Open the cup holder&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaBackward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaPlay&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaStop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop the music&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaForward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; /&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;QATButton&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaEject&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;RibbonQuickAccessToolBar.Placement&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;InCustomizeMenu&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 1 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 2 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 3 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 4 in the list&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem4&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Home&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Programs&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.GroupSizeDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinitionCollection&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinitionCollection&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.GroupSizeDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Media&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Media Controls&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaEject&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaBackward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaPlay&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaStop&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaForward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink &lt;/span&gt;&lt;span style="color:red;"&gt;NavigateUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://www.renevo.com&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RenEvo Software &amp;amp;amp; Designs&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&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;&lt;/p&gt;

&lt;p&gt;Finally, if you want to switch to the Office 2007 look &amp;amp; feel, instead of the Windows 7 look &amp;amp; feel, simply change the Resource Dictionary (you can also create customized ones). you will want to remove the form’s icon if you use the office 2007 theme though.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:green;"&gt;&amp;lt;!-- Remove the Icon Property if you are going to use the Office 2007 themes--&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Window1&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ResizeMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CanResizeWithGrip&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;WindowStartupLocation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;CenterScreen&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Icon&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\app.png&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;600&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;800&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinHeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MinWidth&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;400&amp;quot;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QATButton&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;QAT Button&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample QAT Button, it doesn't do anything&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\files.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\save.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\print.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Menu Item 4&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;This is a sample menu item&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\diagnostic.png&amp;quot; /&amp;gt;

            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calc This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calculator&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Used to do math and stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calculator.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Calendar&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Schedule and remind yourself of stuff&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\calendar.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;HomeButton3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Format This!&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Computer&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Where you store your naked pictures&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\computer.png&amp;quot; /&amp;gt;

            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaEject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Eject&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Open the cup holder&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_eject.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaBackward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Previous Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_backward.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaPlay&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Play Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_play.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaStop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Stop the music&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_stop.png&amp;quot; /&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Key&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MediaForward&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;CanExecute&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;RibbonCommand_CanExecute&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LabelDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ToolTipDescription&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Next Tune&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\bt_skip_forward.png&amp;quot; /&amp;gt;

            &lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;!-- Uncomment below for Office 2007 Blue --&amp;gt;
            &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary &lt;/span&gt;&lt;span style="color:red;"&gt;Source&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;/RibbonControlsLibrary;component/Themes/Office2007Blue.xaml&amp;quot; /&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary.MergedDictionaries&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;!-- Uncomment below for Office 2007 Silver --&amp;gt;
            &amp;lt;!--&amp;lt;ResourceDictionary.MergedDictionaries&amp;gt;
                &amp;lt;ResourceDictionary Source=&amp;quot;/RibbonControlsLibrary;component/Themes/Office2007Silver.xaml&amp;quot; /&amp;gt;
            &amp;lt;/ResourceDictionary.MergedDictionaries&amp;gt;--&amp;gt;
            &amp;lt;!-- Uncomment below for Office 2007 Black --&amp;gt;
            &amp;lt;!--&amp;lt;ResourceDictionary.MergedDictionaries&amp;gt;
                &amp;lt;ResourceDictionary Source=&amp;quot;/RibbonControlsLibrary;component/Themes/Office2007Black.xaml&amp;quot; /&amp;gt;
            &amp;lt;/ResourceDictionary.MergedDictionaries&amp;gt;--&amp;gt;
        &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ResourceDictionary&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon &lt;/span&gt;&lt;span style="color:red;"&gt;DockPanel.Dock&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Title&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;My First Ribbon Form&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;mainRibbon&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;QATButton&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaEject&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;RibbonQuickAccessToolBar.Placement&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;InCustomizeMenu&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonQuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.QuickAccessToolBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;SmallImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;LargeImageSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Images\box.png&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 1 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 2 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 3 in the list&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Item 4 in the list&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MenuItem4&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;300&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu.RecentItemList&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon.ApplicationMenu&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Home&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Programs&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.GroupSizeDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinitionCollection&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlSizeDefinition &lt;/span&gt;&lt;span style="color:red;"&gt;ImageSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Large&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsLabelVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; /&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinition&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroupSizeDefinitionCollection&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.GroupSizeDefinitions&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton1&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton2&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;HomeButton3&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab &lt;/span&gt;&lt;span style="color:red;"&gt;Label&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Media&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonCommand &lt;/span&gt;&lt;span style="color:red;"&gt;LabelTitle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Media Controls&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup.Command&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaEject&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaBackward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaPlay&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaStop&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonButton &lt;/span&gt;&lt;span style="color:red;"&gt;Command&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;MediaForward&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; /&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonControlGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonGroup&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonTab&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Ribbon&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;auto&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink &lt;/span&gt;&lt;span style="color:red;"&gt;NavigateUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://www.renevo.com&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RenEvo Software &amp;amp;amp; Designs&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Hyperlink&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Paragraph&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;FlowDocument&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RichTextBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DockPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;r&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;RibbonWindow&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_486D0AD8.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="184" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_3141905A.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And that is it, a very simple look into creating and using the new WPF Ribbon Control.&amp;#160; There are a lot more features, but this is just a taste.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/files/folders/articles_vbnet/entry2155.aspx" target="_blank"&gt;You can download the code used in this article&lt;/a&gt; if you like which includes a whole host of images to play with.&amp;#160; You will however need to get the Ribbon Control and re-adjust the reference to your location before compiling (licensing and all).&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Also, Microsoft has &lt;a href="http://windowsclient.net/wpf/wpf35/wpf-35sp1-ribbon-walkthrough.aspx" target="_blank"&gt;posted an introduction&lt;/a&gt; to this which I kind of learned from on &lt;a href="http://windowsclient.net" target="_blank"&gt;windowsclient.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.renevo.com%2fblogs%2fdotnet%2farchive%2f2009%2f02%2f10%2fyour-first-wpf-ribbon-application.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.renevo.com%2fblogs%2fdotnet%2farchive%2f2009%2f02%2f10%2fyour-first-wpf-ribbon-application.aspx" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2156" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>Removing My Namespace from VB.Net</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2009/01/16/removing-my-namespace-from-vb-net.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2009/01/16/removing-my-namespace-from-vb-net.aspx</id><published>2009-01-16T18:45:49Z</published><updated>2009-01-16T18:45:49Z</updated><content type="html">&lt;p&gt;Recently a question arose on &lt;a href="http://stackoverflow.com" target="_blank"&gt;Stackoverflow&lt;/a&gt; that asked &lt;a href="http://stackoverflow.com/questions/451273/why-does-my-vb-net-class-library-show-my-and-my-resources-namespaces-in-reflecto" target="_blank"&gt;if you could remove the My namespace from vb.net&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So, before I get going with this article, I want to state that the &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163972.aspx" target="_blank"&gt;My Namespace does have a few uses&lt;/a&gt;, it provides instant access to resources, settings, and quick environment settings.&lt;/p&gt;  &lt;p&gt;I also want to state that &lt;strong&gt;THIS IS NOT A REQUIRED FEATURE IN VB.NET&lt;/strong&gt;. Did I stress that yet? It is however a default feature in VB.Net.&lt;/p&gt;  &lt;p&gt;Anyway, lets get on with it.&lt;/p&gt;  &lt;p&gt;First things first, backup your project directory, I don’t want to be responsible for you deleting any of your settings or resources because you want to remove something you are using.&lt;/p&gt;  &lt;p&gt;Now that you did that (right?) lets move to the solution explorer and click on the option to “Show all files”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_4DC27AFE.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="100" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_3CE067BF.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Expand the “My Project” Node and select the “Application.myapp”, “Resources.resx”, and “Settings.settings” nodes. When I say nodes, that means items below “My Project”, this is a treeview.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_25B4ED41.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="163" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_67BB5C82.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, hit delete. This will remove any of the “My” code that has automatically already been added to your project. Go ahead and click on the “Show all files” button again to get back to a clean view.&lt;/p&gt;  &lt;p&gt;Next, double click on “My Project” and navigate to the Compile tab, and click on the “Advanced Compile Options”. This dialog has all kinds of fun stuff in it, but we are only worried about one particular setting. Go ahead and click on “Enable Optimizations”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_70AAEEC1.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="194" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_583FFCC6.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click “OK” and we are about 50% done.&lt;/p&gt;  &lt;p&gt;Now, in the solution explorer, right click on your project and select “Unload Project”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_6E95A20B.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="244" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_1014D19B.png" width="158" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This will unload your project from the IDE, but retain the reference to it, another great thing about it is it allows us to edit the .vbproj file directly instead of through the UI, which is what is required for us to do the next step.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_54C3FC8D.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="153" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_16CA6BCF.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Look for the &amp;lt;MyType&amp;gt; xml tag, we need to set this to “Empty”, not Empty, but with the value of “Empty”. You may also need to change the &amp;lt;StartupObject&amp;gt; tag to reflect your main form if it is currently set to “My.Application”.&lt;/p&gt;  &lt;p&gt;Below is the XML from the first PropertyGroup after modifying it.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PropertyGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Configuration&lt;/span&gt; &lt;span class="attr"&gt;Condition&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot; '$(Configuration)' == '' &amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Debug&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Platform&lt;/span&gt; &lt;span class="attr"&gt;Condition&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot; '$(Platform)' == '' &amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;AnyCPU&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Platform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ProductVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;9.0.30729&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProductVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SchemaVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SchemaVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ProjectGuid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;{99D23E3F-D6D5-467F-AB1D-A594E40F4378}&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProjectGuid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OutputType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;WinExe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OutputType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StartupObject&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;RemoveMyNamespace.Form1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StartupObject&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RootNamespace&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;RemoveMyNamespace&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;RootNamespace&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;AssemblyName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;RemoveMyNamespace&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;AssemblyName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FileAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;512&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FileAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;strong&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;MyType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Empty&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;MyType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TargetFrameworkVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;v3.5&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TargetFrameworkVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OptionExplicit&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;On&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OptionExplicit&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OptionCompare&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Binary&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OptionCompare&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OptionStrict&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Off&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OptionStrict&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;OptionInfer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;On&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OptionInfer&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;PropertyGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;I bolded the change.&lt;/p&gt;

&lt;p&gt;Save the file and close it, now right click on the project in the solution explorer and reload the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_189AC196.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="153" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_4CCEEADC.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Compile it, and you can now view it in &lt;a href="http://www.red-gate.com/products/reflector/" target="_blank"&gt;Reflector&lt;/a&gt; to see that the “My” namespace is completely removed.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_75D989D8.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="109" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_63249021.png" width="231" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;We have now successfully remove the “My” namespace.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_7E5CE922.png"&gt;&lt;img title="image" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="58" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_3539CE1A.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The keyword still exists, but it is now removed completely from your project.&lt;/p&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.renevo.com%2fblogs%2fdotnet%2farchive%2f2009%2f01%2f16%2fremoving-my-namespace-from-vb-net.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.renevo.com%2fblogs%2fdotnet%2farchive%2f2009%2f01%2f16%2fremoving-my-namespace-from-vb-net.aspx" border="0" /&gt;&lt;/a&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2138" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>Custom Configuration Sections in Application Config files</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2009/01/08/custom-configuration-sections-in-application-config-files.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2009/01/08/custom-configuration-sections-in-application-config-files.aspx</id><published>2009-01-08T19:18:03Z</published><updated>2009-01-08T19:18:03Z</updated><content type="html">&lt;p&gt;A colleague of mine approached me the other day on how to build custom configuration section handlers in .Net.&amp;#160; As I have said &lt;a href="http://www.renevo.com/blogs/dotnet/archive/2008/01/31/loading-config-files-from-non-default-locations.aspx" target="_blank"&gt;in previous articles, I have been using “real” .config files now instead of pseudo .config, .cfg, or .xml files for complex application settings&lt;/a&gt;, and this has proven very portable for the configurations.&lt;/p&gt;  &lt;p&gt;When creating custom configuration sections, there are essentially three steps.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Provide a way to load the configuration section &lt;/li&gt;    &lt;li&gt;Define properties for the section &lt;/li&gt;    &lt;li&gt;Read/Write to the base object’s collection &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;A bit of knowledge here.&amp;#160; ConfigurationSection and ConfigurationElement are essentially property bags, you will be directing all of your properties in your classes to read and write to the Item collection where your property name is the key, and the value is, you guessed it, the value.&lt;/p&gt;  &lt;p&gt;So lets start off easy, lets create the configuration section first and lets make it something simple, like a configuration section for our application windows.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Configuration&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ConfigurationSection&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Basic class, yes, now we want to define some primary properties for the section, lets add “applicationKey” so this is re-usable.&lt;/p&gt;

&lt;p&gt;Above I mentioned that we are simply creating wrappers for the internal property bag, we also need to add an attribute to the property specifying the name of the attribute in the actual config file.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;applicationKey&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; ApplicationKey() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;applicationKey&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;applicationKey&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Property&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Pretty simply so far?&lt;/p&gt;

&lt;p&gt;Now is an optional step that I like to use for testing, it really helps me work with these sections, below are some helper methods (both static and instanced) that I build for any custom section handlers, a base class is also recommended if you are going to be doing a lot of these.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="preproc"&gt;#Region&lt;/span&gt; &lt;span class="str"&gt;&amp;quot; Base Implementation For Load/Save &amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="rem"&gt;'only initialized internally&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Internal placeholder for configuration file&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; m_BaseConfiguration &lt;span class="kwrd"&gt;As&lt;/span&gt; Configuration = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Gets the custom configuration by path specifying a custom section name&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;Path to the configuration file&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;section&amp;quot;&amp;gt;Section in configuration file to load&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; LoadConfigSection(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; path &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                                             &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; section &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; retVal &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSettings(), config &lt;span class="kwrd"&gt;As&lt;/span&gt; Configuration = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; configFileMap &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; ExeConfigurationFileMap()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        configFileMap.ExeConfigFilename = path&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        config = ConfigurationManager.OpenMappedExeConfiguration( _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                                                            configFileMap, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                                                            ConfigurationUserLevel.None)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; config.Sections(section) &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            config.Sections.Add(section, &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSettings)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        retVal = &lt;span class="kwrd"&gt;TryCast&lt;/span&gt;(config.GetSection(section), WindowSettings)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        retVal.m_BaseConfiguration = config&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; retVal&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Gets the custom configuration by path&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; LoadConfigSection(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; path &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; LoadConfigSection(path, &lt;span class="str"&gt;&amp;quot;WindowSettings&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Gets the custom configuration&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; LoadConfigSection() &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; LoadConfigSection(Application.ExecutablePath &amp;amp; &lt;span class="str"&gt;&amp;quot;.config&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Saves the current configuration&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Save()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        m_BaseConfiguration.Save(ConfigurationSaveMode.Minimal)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&lt;span class="preproc"&gt;#End Region&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This is the big bread and butter code that makes these easy to work with. First it makes the class construtor protected which prevents the class from accidentally being created, adds three overloaded methods for loading the config section, and then provides a save routine.&lt;/p&gt;

&lt;p&gt;I am sure somewhere down the road I will be creating a generic implementation of this class so you can simply inherit from ConfigurationSection(of T).&lt;/p&gt;

&lt;p&gt;So currently we have implemented all three steps required to create a basic configuration section in a standard .config file.&lt;/p&gt;

&lt;p&gt;To load, set, and save simply do the following line of code.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; config &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings= WindowSettings.LoadConfigSection()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        config.ApplicationKey = Application.ProductName&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        config.Save()&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;To retrieve the value, simply use the following one liner.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        MessageBox.Show(WindowSettings.LoadConfigSection().ApplicationKey)&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Well, all that is fine and dandy, but what if we need to do some collections in our settings, like saving each forms top, left, width, and height values?&lt;/p&gt;

&lt;p&gt;Then we will create a ConfigurationElement and ConfigurationElementCollection.&amp;#160; First with the ConfigurationElement, it is almost identical to the ConfigurationSection as far as wrapping the property bags.&amp;#160; Although since we are setting form settings, lets add some default values to these properties so our forms are 0,0 location and 0,0 sizes.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ConfigurationElement&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; ID() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;, DefaultValue:=100)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Top() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;left&amp;quot;&lt;/span&gt;, DefaultValue:=100)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Left() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;left&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;left&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;, DefaultValue:=600)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Height() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;, DefaultValue:=800)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Width() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;This class is about as straight forward as they come, define properties, route to property bag, define attribute name, set default value.&amp;#160; We also added an ID property which will act as our key for our collection.&lt;/p&gt;

&lt;p&gt;Which brings us to our Collection. ConfigurationElementCollections have two must overrides, CreateNewElement() and GetElementKey()&amp;#160; both of these methods are pretty easy to implement, and below is the most basic ConfigurationElementCollection implementation you can get by with. You must also specify an attribute to the class in order to name the element in the config file.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &amp;lt;ConfigurationCollection(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(WindowSetting), AddItemName:=&lt;span class="str"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WindowSettingCollection&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ConfigurationElementCollection&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CreateNewElement() _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetElementKey( _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; element &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement) _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(element, WindowSetting).ID&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;That is it, but how much fun would it be if I just showed you that bit of code, and said deal with figuring out the rest on your own?&amp;#160; Personally, I like to add &lt;strong&gt;lots&lt;/strong&gt; of helper methods to this class, again, this is another huge candidate for a generic.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;ConfigurationCollection(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(WindowSetting), AddItemName:=&lt;span class="str"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WindowSettingCollection&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ConfigurationElementCollection&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Creates a new element with default properties&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CreateNewElement() _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSetting()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Creates a new element with the id specified&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the new element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CreateNewElement(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSetting() &lt;span class="kwrd"&gt;With&lt;/span&gt; {.ID = id}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Gets an element's key&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;element&amp;quot;&amp;gt;element to test&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetElementKey( _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; element &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement) _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(element, WindowSetting).ID&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Adds a new element to the collection&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;element&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Add(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; element &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseAdd(element)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Adds a new element to the collection by id&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the new element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; AddNew(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; newElement &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.CreateNewElement(id)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            Add(newElement)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; newElement&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Adds a new element to the collection by form&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;form&amp;quot;&amp;gt;form for the new element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; AddNew(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; form &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Windows.Forms.Form) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; newElement &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.CreateNewElement(form.Name)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;            newElement.Top = form.Top&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            newElement.Left = form.Left&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            newElement.Height = form.Height&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;            newElement.Width = form.Width&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            Add(newElement)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; newElement&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Removes an element by id&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the element to remove&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Remove(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseRemove(id)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Clears all elements from the collection&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Clear()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseClear()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Retrieves an item from the collection by index&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;index&amp;quot;&amp;gt;index of the element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Default&lt;/span&gt; &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;ReadOnly&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Item(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseGet(index)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Retrieves an item from the collection by id&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Default&lt;/span&gt; &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;ReadOnly&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Item(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;                &lt;span class="rem"&gt;'auto-add if not exists&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;                &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseGet(id) &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;Me&lt;/span&gt;.AddNew(id)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;                &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.BaseGet(id)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;All of those additional methods will give you all the tools you need to create a CRUD interface to the collection. I also added in an AddNew that simply takes a form object.&lt;/p&gt;

&lt;p&gt;Finally to add the collection to the section, simply add a property for it.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;ReadOnly&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Windows() &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettingCollection&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Property&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I also added IDisposable support to the WindowSettings class for ease of use as well as two helper methods for loading and saving form settings.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Helper method to load form settings&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;form&amp;quot;&amp;gt;form to load&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; LoadFormSettings(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; form &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Windows.Forms.Form)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;With&lt;/span&gt; form&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            .Top = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Top&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            .Left = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Left&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            .Height = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Height&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            .Width = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Width&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;With&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Helper method to save form settings&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;form&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;saveConfig&amp;quot;&amp;gt;Optional parameter, when true will save the configuration file&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; SaveFormSettings(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; form &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Windows.Forms.Form, &lt;span class="kwrd"&gt;Optional&lt;/span&gt; &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; saveConfig &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;False&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="kwrd"&gt;With&lt;/span&gt; form&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Top = .Top&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Left = .Left&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Height = .Height&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Width = .Width&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;With&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; saveConfig &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Save()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now to use it!&amp;#160; In our forms Load event handler, add the following code:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        Using config &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings = WindowSettings.LoadConfigSection()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            config.ApplicationKey = Application.ProductName&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            config.LoadFormSettings(&lt;span class="kwrd"&gt;Me&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; Using&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In our forms closing event handler, add the following code:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        Using config &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings = WindowSettings.LoadConfigSection()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            config.ApplicationKey = Application.ProductName&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            config.SaveFormSettings(&lt;span class="kwrd"&gt;Me&lt;/span&gt;, &lt;span class="kwrd"&gt;True&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; Using&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;And for the curious, here is the resulting app.config.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configSections&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;section&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WindowSettings&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SandBoxVB.WindowSettings, SandBoxVB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configSections&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WindowSettings&lt;/span&gt; &lt;span class="attr"&gt;applicationKey&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;SandBoxVB&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;windows&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;windows&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Form1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;top&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;215&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;left&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;313&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;334&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;479&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;windows&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WindowSettings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Below is the full code for the WindowSettings Section Handler.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Configuration&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ConfigurationSection&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Implements&lt;/span&gt; IDisposable&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="preproc"&gt;#Region&lt;/span&gt; &lt;span class="str"&gt;&amp;quot; Base Implementation For Load/Save &amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="rem"&gt;'only initialized internally&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Internal placeholder for configuration file&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; m_BaseConfiguration &lt;span class="kwrd"&gt;As&lt;/span&gt; Configuration = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Gets the custom configuration by path specifying a custom section name&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;Path to the configuration file&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;section&amp;quot;&amp;gt;Section in configuration file to load&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; LoadConfigSection(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; path &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                                             &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; section &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; retVal &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSettings(), config &lt;span class="kwrd"&gt;As&lt;/span&gt; Configuration = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; configFileMap &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; ExeConfigurationFileMap()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        configFileMap.ExeConfigFilename = path&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        config = ConfigurationManager.OpenMappedExeConfiguration( _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                                                            configFileMap, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                                                            ConfigurationUserLevel.None)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; config.Sections(section) &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            config.Sections.Add(section, &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSettings)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        retVal = &lt;span class="kwrd"&gt;TryCast&lt;/span&gt;(config.GetSection(section), WindowSettings)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        retVal.m_BaseConfiguration = config&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; retVal&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Gets the custom configuration by path&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; LoadConfigSection(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; path &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; LoadConfigSection(path, &lt;span class="str"&gt;&amp;quot;WindowSettings&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Gets the custom configuration&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; LoadConfigSection() &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettings&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; LoadConfigSection(Application.ExecutablePath &amp;amp; &lt;span class="str"&gt;&amp;quot;.config&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Saves the current configuration&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Save()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;        m_BaseConfiguration.Save(ConfigurationSaveMode.Minimal)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;&lt;span class="preproc"&gt;#End Region&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Application key for the project, &lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Useful when loading multiples from the save file.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;    &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;applicationKey&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; ApplicationKey() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;applicationKey&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;applicationKey&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Retrieves a collection of windows in the application&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;    &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;ReadOnly&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Windows() &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSettingCollection&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Helper method to load form settings&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;form&amp;quot;&amp;gt;form to load&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; LoadFormSettings(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; form &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Windows.Forms.Form)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;        &lt;span class="kwrd"&gt;With&lt;/span&gt; form&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;            .Top = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Top&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;            .Left = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Left&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;            .Height = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Height&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;            .Width = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Width&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;With&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Helper method to save form settings&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;form&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;saveConfig&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Optional parameter, when true will save the configuration file&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; SaveFormSettings(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; form &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Windows.Forms.Form, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;Optional&lt;/span&gt; &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; saveConfig &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;False&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;        &lt;span class="kwrd"&gt;With&lt;/span&gt; form&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 121:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Top = .Top&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 122:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Left = .Left&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 123:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Height = .Height&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 124:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Windows(form.Name).Width = .Width&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 125:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;With&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 126:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 127:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; saveConfig &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 128:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Me&lt;/span&gt;.Save()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 129:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 130:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 131:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 132:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 133:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ConfigurationElement&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 134:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 135:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 136:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; ID() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 137:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 138:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 139:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 140:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 141:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 142:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 143:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 144:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 145:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;, DefaultValue:=100)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 146:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Top() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 147:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 148:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 149:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 150:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 151:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;top&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 152:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 153:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 154:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 155:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;left&amp;quot;&lt;/span&gt;, DefaultValue:=100)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 156:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Left() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 157:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 158:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;left&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 159:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 160:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 161:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;left&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 162:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 163:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 164:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 165:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;, DefaultValue:=600)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 166:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Height() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 167:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 168:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 169:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 170:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 171:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 172:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 173:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 174:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 175:  &lt;/span&gt;        &amp;lt;ConfigurationProperty(&lt;span class="str"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;, DefaultValue:=800)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 176:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Width() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 177:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 178:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 179:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 180:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 181:  &lt;/span&gt;                &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.Item(&lt;span class="str"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;) = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 182:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 183:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 184:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 185:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 186:  &lt;/span&gt;    &amp;lt;ConfigurationCollection(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(WindowSetting), AddItemName:=&lt;span class="str"&gt;&amp;quot;windows&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 187:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WindowSettingCollection&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 188:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ConfigurationElementCollection&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 189:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 190:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 191:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Creates a new element with default properties&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 192:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 193:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CreateNewElement() _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 194:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 195:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSetting()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 196:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 197:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 198:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 199:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Creates a new element with the id specified&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 200:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 201:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the new element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 202:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CreateNewElement(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 203:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 204:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; WindowSetting() &lt;span class="kwrd"&gt;With&lt;/span&gt; {.ID = id}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 205:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 206:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 207:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 208:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Gets an element's key&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 209:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 210:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;element&amp;quot;&amp;gt;element to test&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 211:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; GetElementKey( _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 212:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; element &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Configuration.ConfigurationElement) _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 213:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 214:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(element, WindowSetting).ID&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 215:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 216:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 217:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 218:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Adds a new element to the collection&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 219:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 220:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;element&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 221:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;remarks&amp;gt;&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 222:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Add(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; element &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 223:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseAdd(element)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 224:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 225:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 226:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 227:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Adds a new element to the collection by id&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 228:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 229:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the new element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 230:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; AddNew(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 231:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; newElement &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.CreateNewElement(id)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 232:  &lt;/span&gt;            Add(newElement)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 233:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; newElement&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 234:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 235:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 236:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 237:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Adds a new element to the collection by form&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 238:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 239:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;form&amp;quot;&amp;gt;form for the new element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 240:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; AddNew(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; form &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Windows.Forms.Form) _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 241:  &lt;/span&gt;                                                                &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 242:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; newElement &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.CreateNewElement(form.Name)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 243:  &lt;/span&gt;            newElement.Top = form.Top&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 244:  &lt;/span&gt;            newElement.Left = form.Left&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 245:  &lt;/span&gt;            newElement.Height = form.Height&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 246:  &lt;/span&gt;            newElement.Width = form.Width&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 247:  &lt;/span&gt;            Add(newElement)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 248:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; newElement&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 249:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 250:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 251:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 252:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Removes an element by id&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 253:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 254:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the element to remove&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 255:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Remove(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 256:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseRemove(id)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 257:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 258:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 259:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 260:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Clears all elements from the collection&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 261:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 262:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Clear()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 263:  &lt;/span&gt;            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseClear()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 264:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 265:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 266:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 267:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Retrieves an item from the collection by index&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 268:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 269:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;index&amp;quot;&amp;gt;index of the element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 270:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Default&lt;/span&gt; &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;ReadOnly&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Item(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; index &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;) _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 271:  &lt;/span&gt;                                                                    &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 272:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 273:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseGet(index)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 274:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 275:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 276:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 277:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 278:  &lt;/span&gt;        &lt;span class="rem"&gt;''' Retrieves an item from the collection by id&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 279:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 280:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;param name=&amp;quot;id&amp;quot;&amp;gt;id of the element&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 281:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Default&lt;/span&gt; &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overloads&lt;/span&gt; &lt;span class="kwrd"&gt;ReadOnly&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Item(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; id &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 282:  &lt;/span&gt;                                                                    &lt;span class="kwrd"&gt;As&lt;/span&gt; WindowSetting&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 283:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 284:  &lt;/span&gt;                &lt;span class="rem"&gt;'auto-add if not exists&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 285:  &lt;/span&gt;                &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.BaseGet(id) &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 286:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;Me&lt;/span&gt;.AddNew(id)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 287:  &lt;/span&gt;                &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 288:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 289:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.BaseGet(id)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 290:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 291:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 292:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 293:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 294:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 295:  &lt;/span&gt;&lt;span class="preproc"&gt;#Region&lt;/span&gt; &lt;span class="str"&gt;&amp;quot; IDisposable Support &amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 296:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 297:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; disposedValue &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt; = &lt;span class="kwrd"&gt;False&lt;/span&gt;        &lt;span class="rem"&gt;' To detect redundant calls&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 298:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 299:  &lt;/span&gt;    &lt;span class="rem"&gt;' IDisposable&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 300:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overridable&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Dispose(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; disposing &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 301:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.disposedValue &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 302:  &lt;/span&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; disposing &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 303:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 304:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 305:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 306:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 307:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Me&lt;/span&gt;.disposedValue = &lt;span class="kwrd"&gt;True&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 308:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 309:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 310:  &lt;/span&gt;    &lt;span class="rem"&gt;' This code added by Visual Basic to correctly implement the disposable pattern.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 311:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Dispose() &lt;span class="kwrd"&gt;Implements&lt;/span&gt; IDisposable.Dispose&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 312:  &lt;/span&gt;        &lt;span class="rem"&gt;' Do not change this code.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 313:  &lt;/span&gt;        Dispose(&lt;span class="kwrd"&gt;True&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 314:  &lt;/span&gt;        GC.SuppressFinalize(&lt;span class="kwrd"&gt;Me&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 315:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 316:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 317:  &lt;/span&gt;&lt;span class="preproc"&gt;#End Region&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 318:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 319:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 320:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 321:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;C# Version provided by request.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;*Sorry about formatting, I don’t normally use underscores to break lines other than for attributes, but the page is skinny and I didn’t want any overrun.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2128" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>Creating Compilable User Files in Visual Studio 2008</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2009/01/05/creating-compilable-user-files-in-visual-studio-2008.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2009/01/05/creating-compilable-user-files-in-visual-studio-2008.aspx</id><published>2009-01-05T23:30:00Z</published><updated>2009-01-05T23:30:00Z</updated><content type="html">&lt;p&gt;Back in my c++ days when working on projects with other people in source control etc… I would do all kinds of weird things, things like include files for coding only for me.&lt;/p&gt;  &lt;p&gt;Example:&lt;/p&gt;  &lt;p&gt;#ifdef (TOM)    &lt;br /&gt;include “Tom.h”;     &lt;br /&gt;#endif&lt;/p&gt;  &lt;p&gt;This allowed me to call code that I didn’t quite want out of my grasp yet, but I wanted in source control.&amp;#160; Naturally the “Tom.h” and its associated files where not in source control, or even included in the project. I kind of missed that feature, and investigated today how to get the same functionality.&lt;/p&gt;  &lt;p&gt;Behold the *.proj.user files in Visual Studio 2008 (might work in 2005, who knows, I didn’t try).&lt;/p&gt;  &lt;p&gt;Normal source control will keep the .user files out of source control, as these are generally used to store debug information, local configurations, etc… There is nothing in the rulebook that stated I couldn’t use this file to also compile “user” code. You can create a .user file simply by adding it in the same directory as your *.csproj file with the &amp;lt;Project&amp;gt; tags.&amp;#160; The *.csproj files (and *.vbproj files) are simply msbuild file format, so you can check up on the &lt;a href="http://msdn.microsoft.com/en-us/library/wea2sca5.aspx" target="_blank"&gt;MSDN documentation&lt;/a&gt; on how to work with it.&lt;/p&gt;  &lt;p&gt;My “Sandbox.csproj.user” file:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Project&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;PropertyGroup&lt;/span&gt; &lt;span class="attr"&gt;Condition&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot; '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' &amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;UserConfig&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Tom&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;UserConfig&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DefineConstants&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;DEBUG;TRACE;TOM&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DefineConstants&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;PropertyGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemGroup&lt;/span&gt; &lt;span class="attr"&gt;Condition&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot; '$(UserConfig)' == 'Tom'&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Compile&lt;/span&gt; &lt;span class="attr"&gt;Include&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Tom.cs&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Project&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So, basically what is going on here is that I added a new property in the Debug configuration for “UserConfig”, this is used later for a conditional, and thats about it.&amp;#160; I then added “TOM” to the defined constants.&lt;/p&gt;

&lt;p&gt;I then added an ItemGroup with the condition of the UserConfig being “Tom”, clever eh?&amp;#160; Inside this ItemGroup I simply added a Compile for Tom.cs.&amp;#160; This file is pretty barebones, and does nothing, but here it is anyway.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Sandbox&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Tom&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Then in my main application, I simply do an #if on the TOM constant and insert my code in that block.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="preproc"&gt;#if&lt;/span&gt; (TOM)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            Tom t = &lt;span class="kwrd"&gt;new&lt;/span&gt; Tom();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="preproc"&gt;#endif&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Pretty nifty eh?&lt;/p&gt;

&lt;p&gt;What is even better, if I switch to release mode Line 2 above grays out (letting me know it isn’t compiled) and my “Tom” class isn’t included in the compile either (verified with Reflector).&lt;/p&gt;

&lt;p&gt;The only issue is that it doesn’t show up in the solution explorer, but neither did the c++ counter parts, this also has the nice beauty of not adding the file to source control, so now I can do all that “tom machine” specific coding I need to to bang out that gong feature.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/image_7EEC341B.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;display:inline;border-left:0px;border-bottom:0px;" height="227" alt="image" src="http://www.renevo.com/blogs/dotnet/image_thumb_634A38D6.png" width="297" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;So, if you want to do some code and keep it checked in without screwing everyone else up, or have your own set of tools you want to be stingy with, this method might work great for you!&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;*&lt;strong&gt;Warning&lt;/strong&gt;: Code in the #if (TOM) blocks will be visible in source control, no one will have the compiled version of it, and unless they declare the constant, their code will be safe as code in conditional blocks that don’t meet the condition don’t get compiled.&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2125" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>Proper Thread Work with WF</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/12/22/proper-thread-work-with-wf.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="52801" href="http://www.renevo.com/blogs/dotnet/attachment/2115.ashx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/12/22/proper-thread-work-with-wf.aspx</id><published>2008-12-22T22:34:00Z</published><updated>2008-12-22T22:34:00Z</updated><content type="html">&lt;P&gt;Most inexperienced developers tend to put workload heavy operations on the same thread that the UI runs on. While you can call ‘Application.DoEvents()’ to keep the windows messages flowing, this is not the proper way to keep your UI painted. In this article I will be explaining how to put your workload heavy operations on a separate thread, and how to properly update your form with information you want the user to see.&lt;/P&gt;
&lt;P&gt;Let’s start with a simple snippet.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;FileInfo&lt;/SPAN&gt;[] files = &lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;DirectoryInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;@"C:\Windows"&lt;/SPAN&gt;).GetFiles();&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Depending on the the size of the directory, this operation could potentially take several minutes or more. During this period, your UI cannot paint itself or receive windows messages. This means, your user thinks the application has locked up, or crashed. This is where threads come into play.&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;        private void &lt;/SPAN&gt;MainForm_Shown(&lt;SPAN style="COLOR:blue;"&gt;object &lt;/SPAN&gt;sender, &lt;SPAN style="COLOR:#2b91af;"&gt;EventArgs &lt;/SPAN&gt;e) {
            &lt;SPAN style="COLOR:#2b91af;"&gt;Thread &lt;/SPAN&gt;thread = &lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Thread&lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;ThreadStart&lt;/SPAN&gt;(ThreadProc));
            thread.IsBackground = &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;;
            thread.Start();
        }&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;The code above simply starts a new thread that runs on the ‘ThreadProc’ method. This will allow our form to run its own code, while the thread is running. Essentially with the result that we can run our workload heavy operations, without hindering the form. Below is the ‘ThreadProc’ method, which contains our workload heavy operation to simply read a directory and its files.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:gray;"&gt;        /// &amp;lt;summary&amp;gt;
        /// &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Method to process our workload
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private void &lt;/SPAN&gt;ThreadProc() {
            &lt;SPAN style="COLOR:#2b91af;"&gt;FileInfo&lt;/SPAN&gt;[] files = &lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;DirectoryInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;@"C:\Windows"&lt;/SPAN&gt;).GetFiles();
            &lt;SPAN style="COLOR:#2b91af;"&gt;UpdateActionDelegate &lt;/SPAN&gt;uxad = &lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;UpdateActionDelegate&lt;/SPAN&gt;(UpdateAction);

            &lt;SPAN style="COLOR:blue;"&gt;for &lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;int &lt;/SPAN&gt;i = 0; i &amp;lt; files.Length; i++) {
                &lt;SPAN style="COLOR:#2b91af;"&gt;DateTime &lt;/SPAN&gt;time = &lt;SPAN style="COLOR:#2b91af;"&gt;DateTime&lt;/SPAN&gt;.Now;

                &lt;SPAN style="COLOR:blue;"&gt;if &lt;/SPAN&gt;((time - m_Time).Milliseconds &amp;gt;= 50) {
                    m_Time = time;

                    &lt;SPAN style="COLOR:green;"&gt;// Now we can update the thread since
                    // we waited the 50ms
                    &lt;/SPAN&gt;uxAction.Invoke(uxad, files[ i ].Name);

                    &lt;SPAN style="COLOR:green;"&gt;// We could also invoke the mainform directly
                    // and have access to all of the controls
                    //this.Invoke(uxad, item.Name);

                    // Just an example since we are not really processing
                    // anything, so we want to see whats happening
                    &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Thread&lt;/SPAN&gt;.Sleep(250);
                }
            }
        }&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;There are two key points to this method body. &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;1.&lt;EM&gt; We use a delegate called UpdateActionDelegate, which we use to properly invoke a label named ‘uxAction’ on the form, to safely update its text.&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;2. &lt;EM&gt;We use a private member named ‘m_DateTime’ of type DateTime, which we use to check if 50ms of time has passed between each iteration in the for-loop.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The 50ms is simply a delay. If you have no delay, the systems CPU will show it cycling at 100%, and depending on the clients system, they may have intense flickering on the form. This occurs because the operation would normally try to update the text of the label faster than the form can paint itself. This is why we implemented a 50ms delay before updating the label again. Below is the full code of the MainForm class, which demonstrates this in action. I have also attached the project files in a ZIP.&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:green;"&gt;// *********************************************************************
// [RenEvo Software &amp;amp; Designs]
// [RenEvo], [Proper thread work with WF]
//
//   THIS FILE IS PROVIDED "AS-IS" WITHOUT ANY WARRANTY OF ANY KIND. ANY
//   MODIFICATIONS TO THIS FILE IN ANY WAY ARE YOUR SOLE RESPONSIBILITY.
//
// [Copyright (C) RenEvo Software &amp;amp; Designs  All rights reserved.]
// *********************************************************************

&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;namespace &lt;/SPAN&gt;ThreadUIExample {
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Collections.Generic;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.ComponentModel;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Data;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Drawing;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Linq;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Text;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Windows.Forms;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Collections;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.IO;
    &lt;SPAN style="COLOR:blue;"&gt;using &lt;/SPAN&gt;System.Threading;

    &lt;SPAN style="COLOR:blue;"&gt;public partial class &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;MainForm &lt;/SPAN&gt;: &lt;SPAN style="COLOR:#2b91af;"&gt;Form &lt;/SPAN&gt;{
        &lt;SPAN style="COLOR:blue;"&gt;public &lt;/SPAN&gt;MainForm() {
            InitializeComponent();
        }

        &lt;SPAN style="COLOR:blue;"&gt;private void &lt;/SPAN&gt;MainForm_Shown(&lt;SPAN style="COLOR:blue;"&gt;object &lt;/SPAN&gt;sender, &lt;SPAN style="COLOR:#2b91af;"&gt;EventArgs &lt;/SPAN&gt;e) {
            &lt;SPAN style="COLOR:#2b91af;"&gt;Thread &lt;/SPAN&gt;thread = &lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Thread&lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;ThreadStart&lt;/SPAN&gt;(ThreadProc));
            thread.IsBackground = &lt;SPAN style="COLOR:blue;"&gt;true&lt;/SPAN&gt;;
            thread.Start();
        }

        &lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Used to check if 50ms of time has passed since the last file was read
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;DateTime &lt;/SPAN&gt;m_Time = &lt;SPAN style="COLOR:#2b91af;"&gt;DateTime&lt;/SPAN&gt;.Now;

        &lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Delegate used to safely invoke the action label
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="action"&amp;gt;&amp;lt;/param&amp;gt;
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private delegate void &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;UpdateActionDelegate&lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;string &lt;/SPAN&gt;action);

        &lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Callback used to safely update the text of the action label
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;/// &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;when the label is properly invoked
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;public void &lt;/SPAN&gt;UpdateAction(&lt;SPAN style="COLOR:blue;"&gt;string &lt;/SPAN&gt;action) {
            uxAction.Text = &lt;SPAN style="COLOR:blue;"&gt;string&lt;/SPAN&gt;.Format(&lt;SPAN style="COLOR:#a31515;"&gt;"Action: {0}"&lt;/SPAN&gt;, action);
        }

        &lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;summary&amp;gt;
        /// &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;Method to process our workload
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;/// &amp;lt;/summary&amp;gt;
        &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;private void &lt;/SPAN&gt;ThreadProc() {
            &lt;SPAN style="COLOR:#2b91af;"&gt;FileInfo&lt;/SPAN&gt;[] files = &lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;DirectoryInfo&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#a31515;"&gt;@"C:\Windows"&lt;/SPAN&gt;).GetFiles();
            &lt;SPAN style="COLOR:#2b91af;"&gt;UpdateActionDelegate &lt;/SPAN&gt;uxad = &lt;SPAN style="COLOR:blue;"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;UpdateActionDelegate&lt;/SPAN&gt;(UpdateAction);

            &lt;SPAN style="COLOR:blue;"&gt;for &lt;/SPAN&gt;(&lt;SPAN style="COLOR:blue;"&gt;int &lt;/SPAN&gt;i = 0; i &amp;lt; files.Length; i++) {
                &lt;SPAN style="COLOR:#2b91af;"&gt;DateTime &lt;/SPAN&gt;time = &lt;SPAN style="COLOR:#2b91af;"&gt;DateTime&lt;/SPAN&gt;.Now;

                &lt;SPAN style="COLOR:blue;"&gt;if &lt;/SPAN&gt;((time - m_Time).Milliseconds &amp;gt;= 50) {
                    m_Time = time;

                    &lt;SPAN style="COLOR:green;"&gt;// Now we can update the thread since
                    // we waited the 50ms
                    &lt;/SPAN&gt;uxAction.Invoke(uxad, files[ i ].Name);

                    &lt;SPAN style="COLOR:green;"&gt;// We could also invoke the mainform directly
                    // and have access to all of the controls
                    //this.Invoke(uxad, item.Name);

                    // Just an example since we are not really processing
                    // anything, so we want to see whats happening
                    &lt;/SPAN&gt;&lt;SPAN style="COLOR:#2b91af;"&gt;Thread&lt;/SPAN&gt;.Sleep(250);
                }
            }
        }
    }
}&lt;/PRE&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2115" width="1" height="1"&gt;</content><author><name>Dave Anderson</name><uri>http://www.renevo.com/members/Dave+Anderson.aspx</uri></author></entry><entry><title>New code snippet plugin for Live Writer</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/12/04/new-code-snippet-plugin-for-live-writer.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/12/04/new-code-snippet-plugin-for-live-writer.aspx</id><published>2008-12-04T21:38:50Z</published><updated>2008-12-04T21:38:50Z</updated><content type="html">&lt;p&gt;I am trying out a new &lt;a href="http://gallery.live.com/liveItemDetail.aspx?li=d8835a5e-28da-4242-82eb-e1a006b083b9&amp;amp;bt=9&amp;amp;pl=8" target="_blank"&gt;code snippet plug-in&lt;/a&gt; for &lt;a href="http://windowslivewriter.spaces.live.com/" target="_blank"&gt;Live Writer&lt;/a&gt;.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;Public Class &lt;/span&gt;CommitDB
    &lt;span style="color:blue;"&gt;Public Function &lt;/span&gt;GetCommitStatusAll() &lt;span style="color:blue;"&gt;As &lt;/span&gt;DataSet
        &lt;span style="color:green;"&gt;' Create Instance of Connection and Command Object
        &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim &lt;/span&gt;myConnection &lt;span style="color:blue;"&gt;As New &lt;/span&gt;SqlConnection(ConfigurationManager.AppSettings(&lt;span style="color:#a31515;"&gt;&amp;quot;NorthstarConnectionString&amp;quot;&lt;/span&gt;))
        &lt;span style="color:blue;"&gt;Dim &lt;/span&gt;myCommand &lt;span style="color:blue;"&gt;As New &lt;/span&gt;SqlDataAdapter(&lt;span style="color:#a31515;"&gt;&amp;quot;GetCommitStatusAll&amp;quot;&lt;/span&gt;, myConnection)

        &lt;span style="color:green;"&gt;' Mark the Command as a SPROC
        &lt;/span&gt;myCommand.SelectCommand.CommandType = CommandType.StoredProcedure

        &lt;span style="color:green;"&gt;' Create and Fill the DataSet
        &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim &lt;/span&gt;myDataSet &lt;span style="color:blue;"&gt;As New &lt;/span&gt;DataSet
        myCommand.Fill(myDataSet)

        &lt;span style="color:green;"&gt;' Return the DataSet
        &lt;/span&gt;&lt;span style="color:blue;"&gt;Return &lt;/span&gt;myDataSet
    &lt;span style="color:blue;"&gt;End Function
End Class&lt;/span&gt;&lt;/pre&gt;
Lets see how it looks on the blogs!&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2100" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>Sharing configuration files</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/12/04/sharing-configuration-files.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/12/04/sharing-configuration-files.aspx</id><published>2008-12-04T21:35:05Z</published><updated>2008-12-04T21:35:05Z</updated><content type="html">&lt;p&gt;&lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2008/04/15/how-to-share-configuration-files-between-projects.aspx" target="_blank"&gt;Derik Whittaker&lt;/a&gt; has posted a blog post that I found recently via &lt;a href="http://stackoverflow.com/" target="_blank"&gt;stackoverflow.com&lt;/a&gt; that demonstrates a very unknown feature in the Add Existing Dialog in visual studio. Adding as a link.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://devlicio.us/blogs/derik_whittaker/WindowsLiveWriter/Howtoshareconfigurationfilesbetweenproje_6CA8/AddAsLink.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;This is… super useful.&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2099" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>CAB – Part 5 Simple Module</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/09/29/cab-part-5-simple-module.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/09/29/cab-part-5-simple-module.aspx</id><published>2008-09-29T06:56:00Z</published><updated>2008-09-29T06:56:00Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;In the &lt;a href="http://www.renevo.com/blogs/dotnet/archive/tags/CAB/default.aspx" target="_blank"&gt;previous articles on CAB&lt;/a&gt;, we have gone over some of the basics of getting our shell application ready to load up some modules.&lt;/p&gt;  &lt;p&gt;In this article, we will actually create a simplistic Module to display a “SmartPart” in our primary workspace.&lt;/p&gt;  &lt;p&gt;The first thing we need to do, is to add a new “Class Library” project to our current solution. Name the new project “RenEvo.Blogs.Cab.SimpleModule” and hit ok. Rename the “Class1.vb” to “SimpleModuleInit.vb”.&amp;#160; This class will be our entry point into the actual module.&lt;/p&gt;  &lt;p&gt;At this point, we are going to make a few modifications to our current projects, as the build directories are kind of all over the place, and since we have a defined structure we need to adhere to (example: ./Modules/ for any modules loaded into the Shell).&lt;/p&gt;  &lt;p&gt;In the RenEvo.Blogs.Cab project, set the Build output Path in the Compile tab of the project properties to “..\bin\Debug\” for Debug configuration, and “..\bin\Release\” for the Release configuration.&amp;#160; Do the same thing to the RenEvo.Blogs.Cab.Interfaces project.&lt;/p&gt;  &lt;p&gt;For the new RenEvo.Blogs.Cab.SimpleModule, set the output paths to “..\bin\Debug\Modules\” and “..\bin\Release\Modules\” respectively.&lt;/p&gt;  &lt;p&gt;Build the entire solution, and verify that there is a bin directory in the Solution folder that contains all of the projects output assemblies in the per-configuration folder.&lt;/p&gt;  &lt;p&gt;Back to our Simple Module project, we need to add some key references. Add the following references, and be sure to set the “Copy Local” property to False for each reference.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft.Practices.CompositeUI&lt;/li&gt;    &lt;li&gt;Microsoft.Practices.CompositeUI.WinForms&lt;/li&gt;    &lt;li&gt;Microsoft.Practices.ObjectBuilder&lt;/li&gt;    &lt;li&gt;System.Windows.Forms&lt;/li&gt;    &lt;li&gt;System.Drawing&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And then finally add a project reference to the RenEvo.Blogs.Cab.Interfaces, also settings the “Copy Local” property to false.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart5SimpleModule_14E26/image_2.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="154" alt="image" src="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart5SimpleModule_14E26/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next, create a few new folders inside of the Simple Module project.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Services&lt;/li&gt;    &lt;li&gt;SmartParts&lt;/li&gt;    &lt;li&gt;WorkItems&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The first thing we need to do is to setup the SimpleModuleInit class so that the shell will load it up. The first thing we will do is to import a few namespaces, then add an assembly attribute “Module” which will be the attribute that the Shell will look for when &lt;a target="_blank"&gt;loading modules via reflection&lt;/a&gt;. Next we will inherit ModuleInit in our class.&amp;#160; At this point, your code will look like this:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; Microsoft.Practices.CompositeUI&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; Microsoft.Practices.CompositeUI.Services&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;lt;&lt;span class="kwrd"&gt;Assembly&lt;/span&gt;: [&lt;span class="kwrd"&gt;Module&lt;/span&gt;](&lt;span class="str"&gt;&amp;quot;Simple Module&amp;quot;&lt;/span&gt;)&amp;gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; SimpleModuleInit&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; ModuleInit&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;We will have to setup our Dependency Injection property in order to integrate into the Shell Application. If you are not familiar with &lt;a href="http://www.martinfowler.com/articles/injection.html" target="_blank"&gt;Dependency Injection&lt;/a&gt;, I suggest you read up on it before continuing.&amp;#160; Essentially for this implementation of Injection, we will use Property Attributes to notify the base framework that we have a service dependency, and then the property declared type will provide the service type we are accessing, in this case “WorkItem” type.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="preproc"&gt;#Region&lt;/span&gt; &lt;span class="str"&gt;&amp;quot; Root Work Item Dependency Injection &amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; m_WorkItem &lt;span class="kwrd"&gt;As&lt;/span&gt; WorkItem = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &amp;lt;ServiceDependency()&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; RootWorkItem() &lt;span class="kwrd"&gt;As&lt;/span&gt; WorkItem&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; m_WorkItem&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; WorkItem)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            m_WorkItem = value&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="preproc"&gt;#End Region&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;This is basically setting this property by doing the following line of code (not used in our code, but deep behind the scenes).&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;SimpleModuleInit.RootWorkItem = Services.&lt;span class="kwrd"&gt;Get&lt;/span&gt;(Of WorkItem)()&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;By using Dependency Injection, we don’t need to know what is going on behind the scenes, and in some later examples of implementing our own services, it is quite useful to just have what we need automatically populated, rather than trying to find it manually.&lt;/p&gt;

&lt;p&gt;Moving along, the next step we will need to do, is to override the ModuleInit.Load() sub in our SimpleModuleInit. Within this Method, lets just simple do the MessageBox.Show(“SimpleModule Loaded”) to verify that our module is being loaded.&lt;/p&gt;

&lt;p&gt;Be sure that the RenEvo.Blogs.Cab project is set as the Startup Project, and run the application.&amp;#160; While the Splash Screen is displayed, you should see a message box stating that your SimpleModule Loaded.&lt;/p&gt;

&lt;p&gt;Ok, moving along quickly here, lets remove that message box line. Now in the SmartParts folder, add a new UserControl named &amp;quot;SimpleSmartPart.vb” and in the WorkItems folder, add a new Class named “SimpleWorkItem.vb”&lt;/p&gt;

&lt;p&gt;Code for SimpleSmartPart.vb&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; Microsoft.Practices.CompositeUI.SmartParts&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;lt;SmartPart()&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; SimpleSmartPart&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;What we are doing in the class above is just tagging this user control as a SmartPart, this allows the WorkSpace objects to communicate with them properly, which we will go over in a later article.&lt;/p&gt;

&lt;p&gt;For the sake of being able to see the smart part easier, drop a label control in the design view on the SimpleSmartPart, name it “uxSmartPartName” and set its Text property to “Simple Smart Part Loaded”. Where you put the label is irrelevant, mine looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart5SimpleModule_14E26/image_4.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="132" alt="image" src="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart5SimpleModule_14E26/image_thumb_1.png" width="240" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;

&lt;p&gt;Now, the code for the SimpleWorkItem.vb is as follows:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; Microsoft.Practices.CompositeUI&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; Microsoft.Practices.CompositeUI.Commands&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; RenEvo.Blogs.Cab.Interfaces.Common&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Windows.Forms&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; SimpleWorkItem&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; WorkItem&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; OnRunStarted()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.OnRunStarted()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Me&lt;/span&gt;.RootWorkItem.Workspaces(Constants.WorkSpaces.PrimaryWorkSpace).Show(&lt;span class="kwrd"&gt;New&lt;/span&gt; SimpleSmartPart)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The code above inherits from WorkItem and overrides the OnRunStarted method, we then Show a new SimpleSmartPart in our PrimaryWorkSpace.&lt;/p&gt;

&lt;p&gt;Finally, to get the work item to actually “run” we need to modify the SimpleModuleInit.vb by adding a workitem to the RootWorkItem property, and calling the “Run” method.&amp;#160; The code below goes in the Load() method in SimpleModuleInit.vb&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Me&lt;/span&gt;.RootWorkItem.WorkItems.AddNew(Of SimpleWorkItem).Run()&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In the above code we are using the “AddNew” method with a generic typing of SimpleWorkitem and then calling the method “Run” on the newly created WorkItem.&lt;/p&gt;

&lt;p&gt;Save everything, and run the application.&amp;#160; When the Shell interface displays after the splash screen, you will see the label with the text “Simple Smart Part Loaded” in our interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart5SimpleModule_14E26/image_6.png"&gt;&lt;img title="image" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="465" alt="image" src="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart5SimpleModule_14E26/image_thumb_2.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And there you have it, we have loaded up a module into the Shell, and displayed our First Smart Part.&lt;/p&gt;

&lt;p&gt;In the next article, we will be adding a Controller to the SmartPart for the MVC (Model View Controller) design pattern, and implementing a few commands within that Controller.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/files/folders/articles_vbnet/entry2027.aspx" target="_blank"&gt;Download the Solution&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=2028" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author><category term="CAB" scheme="http://www.renevo.com/blogs/dotnet/archive/tags/CAB/default.aspx" /></entry><entry><title>SQL Server 2008 Express Now Available</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/08/13/sql-server-2008-express-now-available.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/08/13/sql-server-2008-express-now-available.aspx</id><published>2008-08-13T18:44:36Z</published><updated>2008-08-13T18:44:36Z</updated><content type="html">&lt;p&gt;&lt;img alt="" src="http://www.microsoft.com/express/images/SQL_Header_grid_2008.png" width="950" /&gt;&lt;/p&gt;  &lt;p&gt;SQL Server Express 2008, which released on Monday, is &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=58ce885d-508b-45c8-9fd3-118edd8e6fff&amp;amp;DisplayLang=en" target="_blank"&gt;now available from Microsoft&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;New Features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Support for LINQ, Entity Data Model and ADO.NET Entity Framework make it easy to create next generation data-enabled applications&lt;/li&gt;    &lt;li&gt;New Date and Time data types with time zone support and .NET compatibility provides full control over temporal data&lt;/li&gt;    &lt;li&gt;New T-SQL IntelliSense support in SQL Server Management Studio makes it easy to write accurate T-SQL code&lt;/li&gt;    &lt;li&gt;Access a vast community of other SQL Server enthusiasts from beginners to experts via the SQL Server Express forum&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Overview:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tight integration with Visual Studio 2008 with SP1&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/?linkid=7763495"&gt;SQL Server 2008 Express&lt;/a&gt; provides high-end database features&lt;/li&gt;    &lt;li&gt;Support for new data types and features like spatial data, HierarchyID, and FileStream makes it easier to model complex data&lt;/li&gt;    &lt;li&gt;Support for MERGE, GROUPING SETS, sparse columns and table-valued parameters makes it easier to write T-SQL code&lt;/li&gt;    &lt;li&gt;New Import/Export wizard makes it easy to migrate data&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=1997" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>CAB - Part 4 Adding a WorkSpace</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/08/08/cab-part-4-adding-a-workspace.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/08/08/cab-part-4-adding-a-workspace.aspx</id><published>2008-08-08T22:15:29Z</published><updated>2008-08-08T22:15:29Z</updated><content type="html">&lt;p&gt;In the &lt;a href="http://www.renevo.com/blogs/dotnet/archive/tags/CAB/default.aspx" target="_blank"&gt;previous articles on CAB&lt;/a&gt; we have gone over creating the basics with a CAB, right now our application really has no &amp;quot;Composite&amp;quot; to it, just &amp;quot;Application Block&amp;quot;.&amp;#160; In this article we will go over creating our first WorkSpace for modules to dock into, which will lead us to our next article on creating a basic module with a single workspace.&lt;/p&gt;  &lt;p&gt;The first thing we need to do, in order to work with the CAB WinForms controls, is to create a new Tab on our Forms Toolbox, and load up the Microsoft.Practices.CompositeUI.WinForms.dll controls to it.&amp;#160; If you need help on this, you can see many articles on the web on how to add items to your toolbox, like &lt;a href="http://msdn.microsoft.com/en-us/library/ms165355(VS.80).aspx" target="_blank"&gt;this one&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You should now have 7 new controls, the one we are going to concentrate on for this article is the DeckWorkspace.&amp;#160; Simply drag it onto our form, set the Dock to Fill, name it uxPrimaryWorkspace, then clear the Text property.&lt;/p&gt;  &lt;p&gt;Your form in designer should look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart3AddingaWorkSpace_C821/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="173" alt="image" src="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/CABPart3AddingaWorkSpace_C821/image_thumb.png" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The size of the form is un-important, later we will go about saving the forms settings, etc... but for now, lets leave it as is.&lt;/p&gt;  &lt;p&gt;Now that we have our form setup, we need to add some ways to access this workspace, as well as register the WorkSpace with the CAB framework.&amp;#160; This is usually done via id strings, but since we want our users to properly access this workspace, we will want to create constants for access.&amp;#160; Instead of the modules accessing and referencing the main executable, we will add another project with the name &amp;quot;.Interfaces&amp;quot; that will contain all the constants for extension sites, workspaces, as well as internal services.&lt;/p&gt;  &lt;p&gt;Add a Class Library project to the solution named &amp;quot;RenEvo.Blogs.Cab.Interfaces&amp;quot; with the default directory specified.&amp;#160; Next delete the Class1.vb that is automaticaly created.&lt;/p&gt;  &lt;p&gt;Create a new folder called Common, then a new class file inside of that folder called WorkSpaces.&amp;#160; In the class file you need to implement a namespace, as well as a few constants inside of the class.&amp;#160; The namespace is only for better organization, and separation of objects.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Namespace&lt;/span&gt; Common.Constants&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="rem"&gt;''' Class to store all of the workspace names&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; WorkSpaces&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;''' The Primary Workspace for the CAB application&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="rem"&gt;''' &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Const&lt;/span&gt; PrimaryWorkSpace &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;&amp;quot;PrimaryWorkSpace&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Namespace&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;For now our class really doesn't cover a lot of constants, but in a larger application this could get quite huge.&amp;#160; Plus we no longer will have casing or mis-spelling issues with the other developers.&lt;/p&gt;

&lt;p&gt;Now add a reference to the new project to the main Shell project, setting the copy to True.&lt;/p&gt;

&lt;p&gt;Next, back in our form, we need to access the Constructor, and after the InitializeComponent, we want to reset the name of the uxPrimaryWorkspace in runtime to the name of the string in the preceding class.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="rem"&gt;' This call is required by the Windows Form Designer.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        InitializeComponent()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="rem"&gt;' Add any initialization after the InitializeComponent() call.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxPrimaryWorkspace.Name = Interfaces.Common.Constants.WorkSpaces.PrimaryWorkSpace&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;This is a really easy implementation, probably the easiest in the entire application.&amp;#160; To test it, we can do the following in our Startup.vb class.&lt;/p&gt;

&lt;p&gt;In the ShellShown event handlers, add the following lines of code to the bottom of the method.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; ShellShown(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sender &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; e &lt;span class="kwrd"&gt;As&lt;/span&gt; EventArgs)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="rem"&gt;'remove the handler&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;RemoveHandler&lt;/span&gt; Shell.Shown, &lt;span class="kwrd"&gt;AddressOf&lt;/span&gt; ShellShown&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="rem"&gt;'set the cursor back to normal&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        m_Splash.Cursor = Cursors.&lt;span class="kwrd"&gt;Default&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;'hide, dispose, and kill the splash &lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        m_Splash.Hide()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        m_Splash.Dispose()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        m_Splash = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="rem"&gt;'test to see if we have a workspace&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;strong&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        MessageBox.Show(&lt;span class="str"&gt;&amp;quot;Workspace Initialized: &amp;quot;&lt;/span&gt; &amp;amp; &lt;span class="kwrd"&gt;Boolean&lt;/span&gt;.Parse(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.RootWorkItem.Workspaces(Interfaces.Common.Constants.WorkSpaces.PrimaryWorkSpace) IsNot &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;))&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;When ran, the application will display &amp;quot;Workspace Initialized: True&amp;quot; in a message box just after the splash screen closes.&lt;/p&gt;

&lt;p&gt;Now remove that line of code, as we don't want that message box to continue displaying.&lt;/p&gt;

&lt;p&gt;As stated before, in the next article I will be covering the creation of a very simplistic module that will load into this newly created workspace.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/files/folders/articles_vbnet/entry1992.aspx" target="_blank"&gt;Download the Solution&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=1993" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author><category term="CAB" scheme="http://www.renevo.com/blogs/dotnet/archive/tags/CAB/default.aspx" /></entry><entry><title>CAB - Part 3 Splash Screen</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/08/08/cab-part-3-splash-screen.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/08/08/cab-part-3-splash-screen.aspx</id><published>2008-08-08T20:38:51Z</published><updated>2008-08-08T20:38:51Z</updated><content type="html">&lt;p&gt;In the &lt;a href="http://www.renevo.com/blogs/dotnet/archive/tags/CAB/default.aspx" target="_blank"&gt;previous articles for CAB&lt;/a&gt; we have gone over creating our base form, as well as implementing a new way to load our modules (once we create some), in this article we are going to go over another simple implementation (that is specifically not covered in the documentation) to make our application much more user friendly.&lt;/p&gt;  &lt;p&gt;Splash Screens.&amp;#160; As you know, in Visual Studio 2005 and 2008 you have the ability to enable the Application Framework, and simply select a Splash Screen from the project properties, in a CAB shell, you must run through the Sub Main() instead of simply using a Form for startup.&amp;#160; We will add one real fast that displays while the CAB is loading its assemblies and modules.&lt;/p&gt;  &lt;p&gt;First, add a new form to our project (under Forms-&amp;gt;Dialogs in our directory structure), select the Splash Screen form template, and name it CabSplashScreen.&amp;#160; For now we aren't going to modify the Splash Screen, just use the default template.&lt;/p&gt;  &lt;p&gt;Just close the Splash Screen, and forget about it for now.&lt;/p&gt;  &lt;p&gt;In our Startup class, we need to create a new private field for the splash screen, add creation to it in the sub new (non-shared instance), override the AfterShellCreated, as well as create an event handler for ShellShown.&lt;/p&gt;  &lt;p&gt;Below is the code to do just that:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; m_Splash &lt;span class="kwrd"&gt;As&lt;/span&gt; CabSplashScreen = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="rem"&gt;'create the splash&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        m_Splash = &lt;span class="kwrd"&gt;New&lt;/span&gt; CabSplashScreen&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="rem"&gt;'show and update the splash&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        m_Splash.Show()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        m_Splash.Update()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="rem"&gt;'set the cursor to the hourglass&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        m_Splash.Cursor = Cursors.WaitCursor&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="rem"&gt;'let splash screen events process&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        Application.DoEvents()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; AfterShellCreated()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.AfterShellCreated()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="rem"&gt;'add an event handler for the ShellForm.Show event (this is when we will kill our splash)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="kwrd"&gt;AddHandler&lt;/span&gt; Shell.Shown, &lt;span class="kwrd"&gt;AddressOf&lt;/span&gt; ShellShown&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; ShellShown(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sender &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; e &lt;span class="kwrd"&gt;As&lt;/span&gt; EventArgs)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="rem"&gt;'remove the handler&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="kwrd"&gt;RemoveHandler&lt;/span&gt; Shell.Shown, &lt;span class="kwrd"&gt;AddressOf&lt;/span&gt; ShellShown&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="rem"&gt;'set the cursor back to normal&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        m_Splash.Cursor = Cursors.&lt;span class="kwrd"&gt;Default&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="rem"&gt;'hide, dispose, and kill the splash &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        m_Splash.Hide()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        m_Splash.Dispose()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        m_Splash = &lt;span class="kwrd"&gt;Nothing&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The code is pretty straight forward, and I will leave you to the Comments to figure out what it is doing (I am sure that if you are venturing into creating a CAB shell then this is nothing new to you)&lt;/p&gt;

&lt;p&gt;In our next article, we will go over creating our first WorkSpace.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/files/folders/articles_vbnet/entry1988.aspx" target="_blank"&gt;Download the Solution&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=1989" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author><category term="CAB" scheme="http://www.renevo.com/blogs/dotnet/archive/tags/CAB/default.aspx" /></entry><entry><title>CAB - Part 2 Loading Modules from a directory</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/08/08/cab-part-2-loading-modules-from-a-directory.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/08/08/cab-part-2-loading-modules-from-a-directory.aspx</id><published>2008-08-08T20:22:59Z</published><updated>2008-08-08T20:22:59Z</updated><content type="html">&lt;p&gt;In the &lt;a href="http://www.renevo.com/blogs/dotnet/archive/2007/11/05/cab-getting-started.aspx" target="_blank"&gt;first part of the CAB articles&lt;/a&gt;, I explained a bit about getting the CAB working in a generic shell, and simply initiating the framework, in this article I will explain a little known ability with the CAB to dynamically load all modules in a directory, instead of the &amp;quot;ProductCatalog.xml&amp;quot; that is used in the CAB samples.&amp;#160; This is something that I do personally in all 3 of our CAB shells, and have found it to be much easier to deploy new modules to customers.&lt;/p&gt;  &lt;p&gt;In our Startup class, we simply need to override one of the base WorkItem methods for adding services &amp;quot;AddServices&amp;quot;, remove teh IModuleEnumerator that is currently loaded (that productcatalog.xml loader) and replace it with a new ReflectionModuleEnumerator instead.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Protected&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; AddServices()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="rem"&gt;'setup base services&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.AddServices()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="rem"&gt;'remove the FileModule for ProductCatalog.xml&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.RootWorkItem.Services.Remove(Of IModuleEnumerator)()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;'create a new reflection enumerator&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; reflectionEnumerator &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; ReflectionModuleEnumerator()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="rem"&gt;'make sure our path exists for modules&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        Directory.CreateDirectory(Path.GetDirectoryName(Application.ExecutablePath) &amp;amp; &lt;span class="str"&gt;&amp;quot;\Modules\&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="rem"&gt;'set the working path to ./Modules/&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        reflectionEnumerator.BasePath = Path.GetDirectoryName(Application.ExecutablePath) &amp;amp; &lt;span class="str"&gt;&amp;quot;\Modules\&amp;quot;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="rem"&gt;'add it back to the services&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.RootWorkItem.Services.Add(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(IModuleEnumerator), reflectionEnumerator)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In the next article, I will go over how to add a Splash Screen to the main form, since we have not enabled the &amp;quot;Application Framework&amp;quot;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/files/folders/articles_vbnet/entry1985.aspx" target="_blank"&gt;Download Solution&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=1986" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author><category term="CAB" scheme="http://www.renevo.com/blogs/dotnet/archive/tags/CAB/default.aspx" /></entry><entry><title>Combo Box Enumerations with Titles</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/08/06/combo-box-enumerations-with-titles.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/08/06/combo-box-enumerations-with-titles.aspx</id><published>2008-08-06T21:08:38Z</published><updated>2008-08-06T21:08:38Z</updated><content type="html">&lt;p&gt;Have you ever just wanted to populate a combo box with values from an enumeration, but hated the fact that it dealt with the name of the item in the enumeration, instead of some snazzy string? Take the following Enum as an example:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt; TitledValues&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    FirstName&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    LastName&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    Address1&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    Address2&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    City&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    State&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    ZipCode&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    PhoneNumber&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    EmailAddress&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;For some of those properties displaying &amp;quot;City&amp;quot; would be fine, but who wants to show a user &amp;quot;FirstName&amp;quot; ?&lt;/p&gt;

&lt;p&gt;I have figured out a little technique using a custom type converter and attributes to be able at code time set the titles from the Enum instead of having to do huge select cases when handling the drop down events.&lt;/p&gt;

&lt;p&gt;The first thing to do is to create a new attribute called &amp;quot;EnumTitleAttribute&amp;quot;, this attribute is pretty straight forward, it simply contains a Title property.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;AttributeUsage(AttributeTargets.Field)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; EnumTitleAttribute&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; Attribute&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; m_Title &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="kwrd"&gt;String&lt;/span&gt;.Empty&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Title() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; m_Title&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            m_Title = value&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The AttributeUsage attribute is restricting usage of this attribute to fields, which is what enum values are stored as in the object.&lt;/p&gt;

&lt;p&gt;The next step was to create a type converter to work with these new custom attributes, since we want this to be a global type of enum, we are going to implement it as a generic.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; EnumTitleTypeConverter(Of T)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; TypeConverter&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; ConvertTo(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; context &lt;span class="kwrd"&gt;As&lt;/span&gt; ITypeDescriptorContext, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; culture &lt;span class="kwrd"&gt;As&lt;/span&gt; CultureInfo, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; destinationType &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Type) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; value.&lt;span class="kwrd"&gt;GetType&lt;/span&gt; &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;GetType&lt;/span&gt;(T) &lt;span class="kwrd"&gt;AndAlso&lt;/span&gt; destinationType &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; value.&lt;span class="kwrd"&gt;GetType&lt;/span&gt;.GetField(value.ToString).GetCustomAttributes(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(EnumTitleAttribute), &lt;span class="kwrd"&gt;True&lt;/span&gt;).Length &amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(value.&lt;span class="kwrd"&gt;GetType&lt;/span&gt;.GetField(value.ToString).GetCustomAttributes(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(EnumTitleAttribute), &lt;span class="kwrd"&gt;True&lt;/span&gt;)(0), EnumTitleAttribute).Title&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; value.ToString&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.ConvertTo(context, culture, value, destinationType)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The only functionality we really care about in this class is the &amp;quot;ConvertTo&amp;quot; method.&amp;#160; We want to check to see if the value being converted is the type of our generic (of T) and that the destination type is string.&lt;/p&gt;

&lt;p&gt;The basics of this method are check the input parameters for the proper conversion types, if they match, see if the field in the type has the EnumTitleAttribute assigned to it, and if so, we are going to get the first one only and return the Title property, otherwise, we are simply going to return the default ToString on the value object.&amp;#160; If none of these match, we will simply let the standard type converter try to deal with it, where it generally just returns the ToString of the object.&lt;/p&gt;

&lt;p&gt;Now, to apply the title's to an enumeration, we simply add the attributes to the enum fields and set the TypeConverter.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;TypeConverter(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(EnumTitleTypeConverter(Of TitledValues)))&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt; TitledValues&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;First Name&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    FirstName&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Last Name&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    LastName&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Address 1&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    Address1&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Address 2&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    Address2&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    City&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    State&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Zip Code&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    ZipCode&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Phone Number&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    PhoneNumber&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Email Address&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    EmailAddress&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Enum&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;So the first blaring question is, how do you use it?&amp;#160; Create a form (or use an existing one), add a combo box (for this example, name it uxFieldNames) and set the DropDownStyle to DropDownList, then in the form load, do the following code.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxFieldNames.DataSource = [&lt;span class="kwrd"&gt;Enum&lt;/span&gt;].GetValues(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(TitledValues))&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;And then in the SelectedIndexChanged event for the ComboBox, you can find out the selected item with the following code&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.uxFieldNames.SelectedIndex &amp;gt; -1 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Select&lt;/span&gt; &lt;span class="kwrd"&gt;Case&lt;/span&gt; &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(uxFieldNames.SelectedItem, TitledValues)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TitledValues.FirstName&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;                    &lt;span class="rem"&gt;'do something with the first name&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Case&lt;/span&gt; TitledValues.LastName&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                    &lt;span class="rem"&gt;'do something with the last name&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Select&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; If&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Without hardly any additional effort, especially from your UI coding, you end up with this result:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/ComboBoxEnumerationswithTitles_C75C/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="302" alt="image" src="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/ComboBoxEnumerationswithTitles_C75C/image_thumb.png" width="303" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;instead of this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/ComboBoxEnumerationswithTitles_C75C/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="299" alt="image" src="http://www.renevo.com/blogs/dotnet/WindowsLiveWriter/ComboBoxEnumerationswithTitles_C75C/image_thumb_1.png" width="300" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Good luck, and happy coding!&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Full Source Code:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.ComponentModel&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Globalization&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;lt;TypeConverter(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(EnumTitleTypeConverter(Of TitledValues)))&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt; TitledValues&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;First Name&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    FirstName&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Last Name&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    LastName&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Address 1&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    Address1&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Address 2&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    Address2&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    City&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    State&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Zip Code&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    ZipCode&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Phone Number&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    PhoneNumber&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &amp;lt;EnumTitle(Title:=&lt;span class="str"&gt;&amp;quot;Email Address&amp;quot;&lt;/span&gt;)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    EmailAddress&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Enum&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;lt;AttributeUsage(AttributeTargets.Field)&amp;gt; _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; EnumTitleAttribute&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; Attribute&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; m_Title &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="kwrd"&gt;String&lt;/span&gt;.Empty&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Title() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; m_Title&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            m_Title = value&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; EnumTitleTypeConverter(Of T)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; TypeConverter&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; ConvertTo(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; context &lt;span class="kwrd"&gt;As&lt;/span&gt; ITypeDescriptorContext, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; culture &lt;span class="kwrd"&gt;As&lt;/span&gt; CultureInfo, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; destinationType &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Type) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; value.&lt;span class="kwrd"&gt;GetType&lt;/span&gt; &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;GetType&lt;/span&gt;(T) &lt;span class="kwrd"&gt;AndAlso&lt;/span&gt; destinationType &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            &lt;span class="kwrd"&gt;If&lt;/span&gt; value.&lt;span class="kwrd"&gt;GetType&lt;/span&gt;.GetField(value.ToString).GetCustomAttributes(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(EnumTitleAttribute), &lt;span class="kwrd"&gt;True&lt;/span&gt;).Length &amp;gt; 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;DirectCast&lt;/span&gt;(value.&lt;span class="kwrd"&gt;GetType&lt;/span&gt;.GetField(value.ToString).GetCustomAttributes(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(EnumTitleAttribute), &lt;span class="kwrd"&gt;True&lt;/span&gt;)(0), EnumTitleAttribute).Title&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                &lt;span class="kwrd"&gt;Return&lt;/span&gt; value.ToString&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.ConvertTo(context, culture, value, destinationType)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;*&lt;strong&gt;Edit:&lt;/strong&gt; Added C# Code below&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.ComponentModel;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Globalization;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;[TypeConverter(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(EnumTitleTypeConverter&amp;lt;TitledValues&amp;gt;))]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;enum&lt;/span&gt; TitledValues&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    [EnumTitle(Title=&lt;span class="str"&gt;&amp;quot;First Name&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    FirstName,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    [EnumTitle(Title = &lt;span class="str"&gt;&amp;quot;Last Name&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    LastName,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    [EnumTitle(Title = &lt;span class="str"&gt;&amp;quot;Address 1&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    Address1,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    [EnumTitle(Title = &lt;span class="str"&gt;&amp;quot;Address 2&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    Address2,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    City,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    State,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    [EnumTitle(Title = &lt;span class="str"&gt;&amp;quot;Zip Code&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    ZipCode,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    [EnumTitle(Title = &lt;span class="str"&gt;&amp;quot;Phone Number&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    PhoneNumber,&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    [EnumTitle(Title = &lt;span class="str"&gt;&amp;quot;Email Address&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    EmailAddress&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;[AttributeUsage(AttributeTargets.Field)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; EnumTitleAttribute : Attribute&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; m_Title = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Title&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        get { &lt;span class="kwrd"&gt;return&lt;/span&gt; m_Title; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        set { m_Title = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; EnumTitleTypeConverter&amp;lt;T&amp;gt; : TypeConverter&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ConvertTo(ITypeDescriptorContext context, CultureInfo culture, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;, Type destinationType)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; ((&lt;span class="kwrd"&gt;value&lt;/span&gt;.GetType() == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(T)) &amp;amp;&amp;amp; (destinationType == &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(String)))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt;.GetType().GetField(&lt;span class="kwrd"&gt;value&lt;/span&gt;.ToString()).GetCustomAttributes(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(EnumTitleAttribute), &lt;span class="kwrd"&gt;true&lt;/span&gt;).Length &amp;gt; 0)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt;.GetType().GetField(&lt;span class="kwrd"&gt;value&lt;/span&gt;.ToString()).GetCustomAttributes(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(EnumTitleAttribute),&lt;span class="kwrd"&gt;true&lt;/span&gt;)[0] &lt;span class="kwrd"&gt;as&lt;/span&gt; EnumTitleAttribute).Title;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;.ToString();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        } &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;base&lt;/span&gt;.ConvertTo(context, culture, &lt;span class="kwrd"&gt;value&lt;/span&gt;, destinationType);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=1980" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>Correction for Vertigo Software post about debugging</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/06/10/correction-for-vertigo-software-post-about-debugging.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/06/10/correction-for-vertigo-software-post-about-debugging.aspx</id><published>2008-06-10T19:01:00Z</published><updated>2008-06-10T19:01:00Z</updated><content type="html">&lt;P&gt;Recently I read the article by &lt;A href="http://blogs.vertigo.com/personal/chris/Blog/Lists/Categories/Category.aspx?Name=Work" target=_blank&gt;Chris Idzerda&lt;/A&gt; over at &lt;A href="http://www.vertigo.com/" target=_blank&gt;Vertigo software&lt;/A&gt; that described how to &lt;A href="http://blogs.vertigo.com/personal/chris/Blog/Lists/Posts/Post.aspx?ID=22"&gt;Detect Visual Studio Debugging&lt;/A&gt;.&amp;nbsp; While the method he used was a bit of a "hacky workaround", below is a more sound way to detect it using built in .Net libraries, rather than a string lookup on the running executable.&lt;/P&gt;
&lt;P&gt;VB.Net Version&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   1:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;If&lt;/SPAN&gt; System.Diagnostics.Debugger.IsAttached &lt;SPAN class=kwrd&gt;Then&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   2:  &lt;/SPAN&gt;            &lt;SPAN class=rem&gt;' do code here for debugging with visual studio&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   3:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   4:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; If&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;C# Version&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   1:  &lt;/SPAN&gt;            &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (System.Diagnostics.Debugger.IsAttached)&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   2:  &lt;/SPAN&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   3:  &lt;/SPAN&gt;                &lt;SPAN class=rem&gt;// do code here for debugging with visual studio&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   4:  &lt;/SPAN&gt;            }&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;I hope this helps clear up any confusion.&lt;/P&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=1937" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry><entry><title>SWGEmu - .Net Stuffz</title><link rel="alternate" type="text/html" href="http://www.renevo.com/blogs/dotnet/archive/2008/05/29/swgemu-net-stuffz.aspx" /><id>http://www.renevo.com/blogs/dotnet/archive/2008/05/29/swgemu-net-stuffz.aspx</id><published>2008-05-30T00:08:00Z</published><updated>2008-05-30T00:08:00Z</updated><content type="html">&lt;p&gt;So a while back some of you may know that I was writing a pure .Net emulator.&amp;#160; That went &amp;quot;ok&amp;quot; and I had made zone in both pre-cu and nge based clients.&amp;#160; But after a while, the time constraints just couldn't be dealt with, and the project was, how do I say, huge?&lt;/p&gt;  &lt;p&gt;&lt;img height="387" src="http://www.renevo.com/photos/swgemudotnetscreenshots/images/169/original.aspx" width="640" /&gt;&lt;/p&gt;  &lt;p&gt;One of the big issues that I had when writing the emulator in .Net was the encryption, decryption, and the crc calculations.&amp;#160; Originally I had just used a c++ api to pull it off.&amp;#160; This bothered me literally for some time as I just wanted a pure .Net solution.&lt;/p&gt;  &lt;p&gt;So today, I spent a bit of time looking at the great documentation on the encryption/decryption algorigthm that the SWGEmu team has put up (if you recall, I used to be a part of that team for a very short lived time).&lt;/p&gt;  &lt;p&gt;Below is the test app that I created and played around with to get these things working in pure (you got it) VB.Net.&amp;#160; I know the C# port would have been WAY easier using unsafe or even almost just duplicating the code, but I wanted a direct port that was spot on.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; Program&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Main(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; args() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; rawArray() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; = &lt;span class="kwrd"&gt;New&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;() {0, 9, 0, 1, 0, 2, &amp;amp;HAB, &amp;amp;H43, &amp;amp;HE3, &amp;amp;HD5, 0, &amp;amp;HFF, 0, &amp;amp;H11, &amp;amp;H45, &amp;amp;H32, &amp;amp;H76, &amp;amp;H43, &amp;amp;HD4, &amp;amp;HF1, 0, &amp;amp;HAB, &amp;amp;HCD}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; encryptedArray() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; decryptedArray() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; crcSeed &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = &amp;amp;H1D4E3287&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Raw Bytes:&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; bt &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; &lt;span class="kwrd"&gt;In&lt;/span&gt; rawArray&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            Console.Write(&lt;span class="str"&gt;&amp;quot;{0:X2} &amp;quot;&lt;/span&gt;, bt)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        Console.WriteLine()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        Console.WriteLine()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        encryptedArray = Encrypt(Strip(rawArray), crcSeed)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Encrypted Bytes:&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; bt &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; &lt;span class="kwrd"&gt;In&lt;/span&gt; encryptedArray&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            Console.Write(&lt;span class="str"&gt;&amp;quot;{0:X2} &amp;quot;&lt;/span&gt;, bt)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        Console.WriteLine()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        Console.WriteLine()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        decryptedArray = Decrypt(encryptedArray, crcSeed)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Decrypted Bytes:&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; bt &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; &lt;span class="kwrd"&gt;In&lt;/span&gt; decryptedArray&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            Console.Write(&lt;span class="str"&gt;&amp;quot;{0:X2} &amp;quot;&lt;/span&gt;, bt)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        Console.WriteLine()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        Console.WriteLine()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;CRC Test&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; crc &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = CRC32(&lt;span class="kwrd"&gt;New&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;() {&amp;amp;H0, &amp;amp;H5, &amp;amp;HAA, &amp;amp;HBB, &amp;amp;HCC, &amp;amp;HDD, &amp;amp;H0, &amp;amp;H6, &amp;amp;H0}, 9, crcSeed)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;My CRC32:  {0:X4}&amp;quot;&lt;/span&gt;, crc)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        crc = API.GenerateCrc(&lt;span class="kwrd"&gt;New&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;() {&amp;amp;H0, &amp;amp;H5, &amp;amp;HAA, &amp;amp;HBB, &amp;amp;HCC, &amp;amp;HDD, &amp;amp;H0, &amp;amp;H6, &amp;amp;H0}, crcSeed)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        Console.WriteLine(&lt;span class="str"&gt;&amp;quot;C++ CRC32: {0:X4}&amp;quot;&lt;/span&gt;, crc)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        Console.ReadLine()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; Strip(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; inData() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; retVal &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; List(Of &lt;span class="kwrd"&gt;Byte&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        retVal.AddRange(inData)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        &lt;span class="rem"&gt;'strip channel and op code&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; retVal(0) = 0 &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;            retVal.RemoveAt(0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            retVal.RemoveAt(0)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="rem"&gt;'strip crc&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        retVal.RemoveAt(retVal.Count - 1)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        retVal.RemoveAt(retVal.Count - 1)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; retVal.ToArray&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; Encrypt(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; inData() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; seed &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; count &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = Math.Floor(&lt;span class="kwrd"&gt;Decimal&lt;/span&gt;.Parse(inData.Length) / 4D)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; remainder &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = inData.Length - (count * 4)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; seedBytes() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; = BitConverter.GetBytes(seed)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;        Array.Reverse(seedBytes)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; i &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; count - 1&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;            &lt;span class="kwrd"&gt;For&lt;/span&gt; b &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 3&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                inData((i * 4) + b) = inData((i * 4) + b) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; seedBytes(b)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;            &lt;span class="kwrd"&gt;For&lt;/span&gt; b &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 3&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;                seedBytes(b) = inData((i * 4) + b)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; i &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; remainder - 1&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;            inData((count * 4) + i) = inData((count * 4) + i) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; seedBytes(0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; inData&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; Decrypt(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; inData() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; seed &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;()&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; count &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = Math.Floor(&lt;span class="kwrd"&gt;Decimal&lt;/span&gt;.Parse(inData.Length) / 4D)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; remainder &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = inData.Length - (count * 4)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; seedBytes() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt; = BitConverter.GetBytes(seed)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;        Array.Reverse(seedBytes)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; i &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; count - 1&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; newSeed(3) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;            &lt;span class="kwrd"&gt;For&lt;/span&gt; b &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 3&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;                newSeed(b) = inData((i * 4) + b)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;            &lt;span class="kwrd"&gt;For&lt;/span&gt; b &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 3&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;                inData((i * 4) + b) = inData((i * 4) + b) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; seedBytes(b)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;            &lt;span class="kwrd"&gt;For&lt;/span&gt; b &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; 3&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;                seedBytes(b) = newSeed(b)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;            &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; i &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; remainder - 1&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;            inData((count * 4) + i) = inData((count * 4) + i) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; seedBytes(0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; inData&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; CRC32(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; inData() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Byte&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; length &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; nCrcSeed &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;        &lt;span class="rem"&gt;'unsigned int nCrc = g_nCrcTable[(~nCrcSeed) &amp;amp; 0xFF];&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; nCrc &lt;span class="kwrd"&gt;As&lt;/span&gt; UInt32 = m_CRCTable(&lt;span class="kwrd"&gt;Not&lt;/span&gt; nCrcSeed &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFF)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;        &lt;span class="rem"&gt;'nCrc ^= 0x00FFFFFF;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;        nCrc = nCrc &lt;span class="kwrd"&gt;Xor&lt;/span&gt; &amp;amp;HFFFFFF&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;        &lt;span class="rem"&gt;'unsigned int nIndex = (nCrcSeed &amp;gt;&amp;gt; 8) ^ nCrc;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; nIndex &lt;span class="kwrd"&gt;As&lt;/span&gt; UInt32 = (nCrcSeed &amp;gt;&amp;gt; 8) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; nCrc&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;        &lt;span class="rem"&gt;'nCrc = (nCrc &amp;gt;&amp;gt; 8) &amp;amp; 0x00FFFFFF;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 121:  &lt;/span&gt;        nCrc = (nCrc &amp;gt;&amp;gt; 8) &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFFFFFF&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 122:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 123:  &lt;/span&gt;        &lt;span class="rem"&gt;'nCrc ^= g_nCrcTable[nIndex &amp;amp; 0xFF];&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 124:  &lt;/span&gt;        nCrc = nCrc &lt;span class="kwrd"&gt;Xor&lt;/span&gt; m_CRCTable(nIndex &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFF)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 125:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 126:  &lt;/span&gt;        &lt;span class="rem"&gt;'nIndex = (nCrcSeed &amp;gt;&amp;gt; 16) ^ nCrc;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 127:  &lt;/span&gt;        nIndex = (nCrcSeed &amp;gt;&amp;gt; 16) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; nCrc&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 128:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 129:  &lt;/span&gt;        &lt;span class="rem"&gt;'nCrc = (nCrc &amp;gt;&amp;gt; 8) &amp;amp; 0x00FFFFFF;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 130:  &lt;/span&gt;        nCrc = (nCrc &amp;gt;&amp;gt; 8) &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFFFFFF&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 131:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 132:  &lt;/span&gt;        &lt;span class="rem"&gt;'nCrc ^= g_nCrcTable[nIndex &amp;amp; 0xFF];&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 133:  &lt;/span&gt;        nCrc = nCrc &lt;span class="kwrd"&gt;Xor&lt;/span&gt; m_CRCTable(nIndex &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFF)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 134:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 135:  &lt;/span&gt;        &lt;span class="rem"&gt;'nIndex = (nCrcSeed &amp;gt;&amp;gt; 24) ^ nCrc;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 136:  &lt;/span&gt;        nIndex = (nCrcSeed &amp;gt;&amp;gt; 24) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; nCrc&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 137:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 138:  &lt;/span&gt;        &lt;span class="rem"&gt;'nCrc = (nCrc &amp;gt;&amp;gt; 8) &amp;amp;0x00FFFFFF;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 139:  &lt;/span&gt;        nCrc = (nCrc &amp;gt;&amp;gt; 8) &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFFFFFF&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 140:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 141:  &lt;/span&gt;        &lt;span class="rem"&gt;'nCrc ^= g_nCrcTable[nIndex &amp;amp; 0xFF];&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 142:  &lt;/span&gt;        nCrc = nCrc &lt;span class="kwrd"&gt;Xor&lt;/span&gt; m_CRCTable(nIndex &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFF)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 143:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 144:  &lt;/span&gt;        &lt;span class="rem"&gt;'for( short i = 0; i &amp;lt; nLength; i++ ) {&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 145:  &lt;/span&gt;        &lt;span class="kwrd"&gt;For&lt;/span&gt; i &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Integer&lt;/span&gt; = 0 &lt;span class="kwrd"&gt;To&lt;/span&gt; length - 1&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 146:  &lt;/span&gt;            &lt;span class="rem"&gt;'nIndex = (pData[ i]) ^ nCrc;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 147:  &lt;/span&gt;            nIndex = inData(i) &lt;span class="kwrd"&gt;Xor&lt;/span&gt; nCrc&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 148:  &lt;/span&gt;            &lt;span class="rem"&gt;'nCrc = (nCrc &amp;gt;&amp;gt; 8) &amp;amp; 0x00FFFFFF;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 149:  &lt;/span&gt;            nCrc = (nCrc &amp;gt;&amp;gt; 8) &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFFFFFF&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 150:  &lt;/span&gt;            &lt;span class="rem"&gt;'nCrc ^= g_nCrcTable[nIndex &amp;amp; 0xFF];&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 151:  &lt;/span&gt;            nCrc = nCrc &lt;span class="kwrd"&gt;Xor&lt;/span&gt; m_CRCTable(nIndex &lt;span class="kwrd"&gt;And&lt;/span&gt; &amp;amp;HFF)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 152:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 153:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 154:  &lt;/span&gt;        &lt;span class="rem"&gt;'}&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 155:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 156:  &lt;/span&gt;        &lt;span class="rem"&gt;'return ~nCrc;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 157:  &lt;/span&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; nCrc&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 158:  &lt;/span&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 159:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 160:  &lt;/span&gt;    &lt;span class="rem"&gt;'   void CRC_(unsigned char *data, int size, unsigned long &amp;amp;crc){&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 161:  &lt;/span&gt;    &lt;span class="rem"&gt;'        if (!size) return;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 162:  &lt;/span&gt;    &lt;span class="rem"&gt;'        for (int i = 0; i &amp;lt; size; i++)&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 163:  &lt;/span&gt;    &lt;span class="rem"&gt;'            crc = (crc &amp;gt;&amp;gt; 8) ^ crc_table[(crc &amp;amp; 0xff) ^ data[ i]];&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 164:  &lt;/span&gt;    &lt;span class="rem"&gt;'   }&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 165:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 166:  &lt;/span&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Shared&lt;/span&gt; m_CRCTable() &lt;span class="kwrd"&gt;As&lt;/span&gt; UInt32 = &lt;span class="kwrd"&gt;New&lt;/span&gt; UInt32() { _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 167:  &lt;/span&gt;                                                    &amp;amp;H0UL, &amp;amp;H77073096UL, &amp;amp;HEE0E612CUL, &amp;amp;H990951BAUL, &amp;amp;H76DC419UL, &amp;amp;H706AF48FUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 168:  &lt;/span&gt;                                                    &amp;amp;HE963A535UL, &amp;amp;H9E6495A3UL, &amp;amp;HEDB8832UL, &amp;amp;H79DCB8A4UL, &amp;amp;HE0D5E91EUL, &amp;amp;H97D2D988UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 169:  &lt;/span&gt;                                                    &amp;amp;H9B64C2BUL, &amp;amp;H7EB17CBDUL, &amp;amp;HE7B82D07UL, &amp;amp;H90BF1D91UL, &amp;amp;H1DB71064UL, &amp;amp;H6AB020F2UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 170:  &lt;/span&gt;                                                    &amp;amp;HF3B97148UL, &amp;amp;H84BE41DEUL, &amp;amp;H1ADAD47DUL, &amp;amp;H6DDDE4EBUL, &amp;amp;HF4D4B551UL, &amp;amp;H83D385C7UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 171:  &lt;/span&gt;                                                    &amp;amp;H136C9856UL, &amp;amp;H646BA8C0UL, &amp;amp;HFD62F97AUL, &amp;amp;H8A65C9ECUL, &amp;amp;H14015C4FUL, &amp;amp;H63066CD9UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 172:  &lt;/span&gt;                                                    &amp;amp;HFA0F3D63UL, &amp;amp;H8D080DF5UL, &amp;amp;H3B6E20C8UL, &amp;amp;H4C69105EUL, &amp;amp;HD56041E4UL, &amp;amp;HA2677172UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 173:  &lt;/span&gt;                                                    &amp;amp;H3C03E4D1UL, &amp;amp;H4B04D447UL, &amp;amp;HD20D85FDUL, &amp;amp;HA50AB56BUL, &amp;amp;H35B5A8FAUL, &amp;amp;H42B2986CUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 174:  &lt;/span&gt;                                                    &amp;amp;HDBBBC9D6UL, &amp;amp;HACBCF940UL, &amp;amp;H32D86CE3UL, &amp;amp;H45DF5C75UL, &amp;amp;HDCD60DCFUL, &amp;amp;HABD13D59UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 175:  &lt;/span&gt;                                                    &amp;amp;H26D930ACUL, &amp;amp;H51DE003AUL, &amp;amp;HC8D75180UL, &amp;amp;HBFD06116UL, &amp;amp;H21B4F4B5UL, &amp;amp;H56B3C423UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 176:  &lt;/span&gt;                                                    &amp;amp;HCFBA9599UL, &amp;amp;HB8BDA50FUL, &amp;amp;H2802B89EUL, &amp;amp;H5F058808UL, &amp;amp;HC60CD9B2UL, &amp;amp;HB10BE924UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 177:  &lt;/span&gt;                                                    &amp;amp;H2F6F7C87UL, &amp;amp;H58684C11UL, &amp;amp;HC1611DABUL, &amp;amp;HB6662D3DUL, &amp;amp;H76DC4190UL, &amp;amp;H1DB7106UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 178:  &lt;/span&gt;                                                    &amp;amp;H98D220BCUL, &amp;amp;HEFD5102AUL, &amp;amp;H71B18589UL, &amp;amp;H6B6B51FUL, &amp;amp;H9FBFE4A5UL, &amp;amp;HE8B8D433UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 179:  &lt;/span&gt;                                                    &amp;amp;H7807C9A2UL, &amp;amp;HF00F934UL, &amp;amp;H9609A88EUL, &amp;amp;HE10E9818UL, &amp;amp;H7F6A0DBBUL, &amp;amp;H86D3D2DUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 180:  &lt;/span&gt;                                                    &amp;amp;H91646C97UL, &amp;amp;HE6635C01UL, &amp;amp;H6B6B51F4UL, &amp;amp;H1C6C6162UL, &amp;amp;H856530D8UL, &amp;amp;HF262004EUL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 181:  &lt;/span&gt;                                                    &amp;amp;H6C0695EDUL, &amp;amp;H1B01A57BUL, &amp;amp;H8208F4C1UL, &amp;amp;HF50FC457UL, &amp;amp;H65B0D9C6UL, &amp;amp;H12B7E950UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 182:  &lt;/span&gt;                                                    &amp;amp;H8BBEB8EAUL, &amp;amp;HFCB9887CUL, &amp;amp;H62DD1DDFUL, &amp;amp;H15DA2D49UL, &amp;amp;H8CD37CF3UL, &amp;amp;HFBD44C65UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 183:  &lt;/span&gt;                                                    &amp;amp;H4DB26158UL, &amp;amp;H3AB551CEUL, &amp;amp;HA3BC0074UL, &amp;amp;HD4BB30E2UL, &amp;amp;H4ADFA541UL, &amp;amp;H3DD895D7UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 184:  &lt;/span&gt;                                                    &amp;amp;HA4D1C46DUL, &amp;amp;HD3D6F4FBUL, &amp;amp;H4369E96AUL, &amp;amp;H346ED9FCUL, &amp;amp;HAD678846UL, &amp;amp;HDA60B8D0UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 185:  &lt;/span&gt;                                                    &amp;amp;H44042D73UL, &amp;amp;H33031DE5UL, &amp;amp;HAA0A4C5FUL, &amp;amp;HDD0D7CC9UL, &amp;amp;H5005713CUL, &amp;amp;H270241AAUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 186:  &lt;/span&gt;                                                    &amp;amp;HBE0B1010UL, &amp;amp;HC90C2086UL, &amp;amp;H5768B525UL, &amp;amp;H206F85B3UL, &amp;amp;HB966D409UL, &amp;amp;HCE61E49FUL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 187:  &lt;/span&gt;                                                    &amp;amp;H5EDEF90EUL, &amp;amp;H29D9C998UL, &amp;amp;HB0D09822UL, &amp;amp;HC7D7A8B4UL, &amp;amp;H59B33D17UL, &amp;amp;H2EB40D81UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 188:  &lt;/span&gt;                                                    &amp;amp;HB7BD5C3BUL, &amp;amp;HC0BA6CADUL, &amp;amp;HEDB88320UL, &amp;amp;H9ABFB3B6UL, &amp;amp;H3B6E20CUL, &amp;amp;H74B1D29AUL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 189:  &lt;/span&gt;                                                    &amp;amp;HEAD54739UL, &amp;amp;H9DD277AFUL, &amp;amp;H4DB2615UL, &amp;amp;H73DC1683UL, &amp;amp;HE3630B12UL, &amp;amp;H94643B84UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 190:  &lt;/span&gt;                                                    &amp;amp;HD6D6A3EUL, &amp;amp;H7A6A5AA8UL, &amp;amp;HE40ECF0BUL, &amp;amp;H9309FF9DUL, &amp;amp;HA00AE27UL, &amp;amp;H7D079EB1UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 191:  &lt;/span&gt;                                                    &amp;amp;HF00F9344UL, &amp;amp;H8708A3D2UL, &amp;amp;H1E01F268UL, &amp;amp;H6906C2FEUL, &amp;amp;HF762575DUL, &amp;amp;H806567CBUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 192:  &lt;/span&gt;                                                    &amp;amp;H196C3671UL, &amp;amp;H6E6B06E7UL, &amp;amp;HFED41B76UL, &amp;amp;H89D32BE0UL, &amp;amp;H10DA7A5AUL, &amp;amp;H67DD4ACCUL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 193:  &lt;/span&gt;                                                    &amp;amp;HF9B9DF6FUL, &amp;amp;H8EBEEFF9UL, &amp;amp;H17B7BE43UL, &amp;amp;H60B08ED5UL, &amp;amp;HD6D6A3E8UL, &amp;amp;HA1D1937EUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 194:  &lt;/span&gt;                                                    &amp;amp;H38D8C2C4UL, &amp;amp;H4FDFF252UL, &amp;amp;HD1BB67F1UL, &amp;amp;HA6BC5767UL, &amp;amp;H3FB506DDUL, &amp;amp;H48B2364BUL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 195:  &lt;/span&gt;                                                    &amp;amp;HD80D2BDAUL, &amp;amp;HAF0A1B4CUL, &amp;amp;H36034AF6UL, &amp;amp;H41047A60UL, &amp;amp;HDF60EFC3UL, &amp;amp;HA867DF55UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 196:  &lt;/span&gt;                                                    &amp;amp;H316E8EEFUL, &amp;amp;H4669BE79UL, &amp;amp;HCB61B38CUL, &amp;amp;HBC66831AUL, &amp;amp;H256FD2A0UL, &amp;amp;H5268E236UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 197:  &lt;/span&gt;                                                    &amp;amp;HCC0C7795UL, &amp;amp;HBB0B4703UL, &amp;amp;H220216B9UL, &amp;amp;H5505262FUL, &amp;amp;HC5BA3BBEUL, &amp;amp;HB2BD0B28UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 198:  &lt;/span&gt;                                                    &amp;amp;H2BB45A92UL, &amp;amp;H5CB36A04UL, &amp;amp;HC2D7FFA7UL, &amp;amp;HB5D0CF31UL, &amp;amp;H2CD99E8BUL, &amp;amp;H5BDEAE1DUL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 199:  &lt;/span&gt;                                                    &amp;amp;H9B64C2B0UL, &amp;amp;HEC63F226UL, &amp;amp;H756AA39CUL, &amp;amp;H26D930AUL, &amp;amp;H9C0906A9UL, &amp;amp;HEB0E363FUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 200:  &lt;/span&gt;                                                    &amp;amp;H72076785UL, &amp;amp;H5005713UL, &amp;amp;H95BF4A82UL, &amp;amp;HE2B87A14UL, &amp;amp;H7BB12BAEUL, &amp;amp;HCB61B38UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 201:  &lt;/span&gt;                                                    &amp;amp;H92D28E9BUL, &amp;amp;HE5D5BE0DUL, &amp;amp;H7CDCEFB7UL, &amp;amp;HBDBDF21UL, &amp;amp;H86D3D2D4UL, &amp;amp;HF1D4E242UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 202:  &lt;/span&gt;                                                    &amp;amp;H68DDB3F8UL, &amp;amp;H1FDA836EUL, &amp;amp;H81BE16CDUL, &amp;amp;HF6B9265BUL, &amp;amp;H6FB077E1UL, &amp;amp;H18B74777UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 203:  &lt;/span&gt;                                                    &amp;amp;H88085AE6UL, &amp;amp;HFF0F6A70UL, &amp;amp;H66063BCAUL, &amp;amp;H11010B5CUL, &amp;amp;H8F659EFFUL, &amp;amp;HF862AE69UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 204:  &lt;/span&gt;                                                    &amp;amp;H616BFFD3UL, &amp;amp;H166CCF45UL, &amp;amp;HA00AE278UL, &amp;amp;HD70DD2EEUL, &amp;amp;H4E048354UL, &amp;amp;H3903B3C2UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 205:  &lt;/span&gt;                                                    &amp;amp;HA7672661UL, &amp;amp;HD06016F7UL, &amp;amp;H4969474DUL, &amp;amp;H3E6E77DBUL, &amp;amp;HAED16A4AUL, &amp;amp;HD9D65ADCUL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 206:  &lt;/span&gt;                                                    &amp;amp;H40DF0B66UL, &amp;amp;H37D83BF0UL, &amp;amp;HA9BCAE53UL, &amp;amp;HDEBB9EC5UL, &amp;amp;H47B2CF7FUL, &amp;amp;H30B5FFE9UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 207:  &lt;/span&gt;                                                    &amp;amp;HBDBDF21CUL, &amp;amp;HCABAC28AUL, &amp;amp;H53B39330UL, &amp;amp;H24B4A3A6UL, &amp;amp;HBAD03605UL, &amp;amp;HCDD70693UL, _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 208:  &lt;/span&gt;                                                    &amp;amp;H54DE5729UL, &amp;amp;H23D967BFUL, &amp;amp;HB3667A2EUL, &amp;amp;HC4614AB8UL, &amp;amp;H5D681B02UL, &amp;amp;H2A6F2B94UL, _&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 209:  &lt;/span&gt;                                                    &amp;amp;HB40BBE37UL, &amp;amp;HC30C8EA1UL, &amp;amp;H5A05DF1BUL, &amp;amp;H2D02EF8DUL _&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 210:  &lt;/span&gt;                                                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 211:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 212:  &lt;/span&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;There it is, in all the unfriendly nastyness.&amp;#160; The API class I am using is calling the previous c++ implementation that I had before, just to verify that they match.&lt;/p&gt;

&lt;p&gt;Just thought I would gloat a bit, it was a tedious process, and a lot of learning about .Net binary actions that I wasn't aware of, sometimes you just look at the code, but don't really understand it, I finally have a really good understanding of how this all works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;*EDIT For Credit&lt;/strong&gt; 

  &lt;br /&gt;&lt;a href="http://www.swgemu.com/" target="_blank"&gt;SWGEmu.com&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://trac2.assembla.com/swgemu/wiki/Packets/CRC" target="_blank"&gt;CRC Explained&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://trac2.assembla.com/swgemu/wiki/Packets/Encryption" target="_blank"&gt;Encryption Explained&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.renevo.com/aggbug.aspx?PostID=1926" width="1" height="1"&gt;</content><author><name>Tom Anderson</name><uri>http://www.renevo.com/members/Tom+Anderson.aspx</uri></author></entry></feed>