<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ribbon Blog</title><link>http://prosodev.com:80/ribbon-blog</link><description>ProRibbon and Windows Ribbon Framework releated Stuff</description><item><title>Ribbon Elements</title><link>http://prosodev.com:80/ribbon-blog/ribbon-elements</link><description>&lt;h1 class="page-header"&gt;Overview&lt;/h1&gt;
&lt;div class="blogoverview"&gt;A short overview of available controls in Windows Ribbon Framework. This list will be updated from time to time until all controls are described. There are also some tips how to use the controls in Winforms projects. To test the described controls you will find a project which can be used to compile all snippets of Ribbon controls.&lt;/div&gt;
&lt;p class="text-justify"&gt;This blog contains a overview for most of Ribbon Controls available. You can generate a demo application with ProRibbon or by CommandLine. With ProRibbon Copy&amp;amp;Paste snippet, with CommandLine you can use this &lt;a href="/ribbon-blog/generate-windows-ribbon-from-commandline" title="Blog"&gt;Blog&lt;/a&gt;&amp;nbsp;to compile by command line.&lt;/p&gt;
&lt;h1 class="page-header"&gt;Input files&lt;/h1&gt;
&lt;p class="text-justify"&gt;Extract the &lt;a href="http://zip.prosodev.com/blogtemp.zip" title="demonstration project"&gt;demonstration project&lt;/a&gt; to "c:\temp\blogtemp\".&lt;/p&gt;
&lt;div class="proaccordion"&gt;
&lt;div data-title="ProRibbon"&gt;
&lt;p class="text-justify"&gt;After extracting project open markup.xml (c:\temp\blogtemp\ProRibbonMarkup\markup.xml &lt;strong&gt;(Ribbon Markup Definition&lt;/strong&gt;). Configuring the codeoutput is shown in video below.&lt;/p&gt;
&lt;table class="table table-striped"&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Property&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Namespace&lt;/td&gt;
&lt;td&gt;ProRibbonTest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Form Class Name&lt;/td&gt;
&lt;td&gt;FormTestProRibbon&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Form Class Designer Ribbon File&lt;/td&gt;
&lt;td&gt;c:\temp\blogtemp\ProRibbonTest\FormTestProRibbon.Designer.Ribbon.cs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/config_proribbon_blogtemp.gif" /&gt;&lt;/div&gt;
&lt;div data-title="Commandline"&gt;
&lt;p class="text-justify"&gt;The following files will be your point of interest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;c:\temp\blogtemp\ProRibbonMarkup\markup.xml &lt;strong&gt;(Ribbon Markup Definition)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;c:\temp\blogtemp\ProRibbonMarkup\genmarkup.bat (&lt;strong&gt;Compile/Link/Copy Windows Ribbon Markup to C# Resource&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;c:\temp\blogtemp\ProRibbonTest\FormTestProRibbon.ribbon (&lt;strong&gt;Compiled Ribbon Resource&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;c:\temp\blogtemp\ProRibbonTest\FormTestProRibbon.Designer.Ribbon.cs (&lt;strong&gt;Modify only if you !DON'T! use ProRibbon. Initialization of Ribbon Infrastructure is done here.&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;c:\temp\blogtemp\ProRibbonTest\FormTestProRibbon.cs (&lt;strong&gt;Copy C#-Snippets to method RunSnippet&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div data-title="Start with Visual Studio 2013/2012"&gt;
&lt;p class="text-justify"&gt;After download and extracting &lt;a href="/Themes/prosodev_bootstrap/content/zip/blogtemp.zip" title="demonstration project"&gt;demonstration project&lt;/a&gt; to c:\temp, doesnt matter if you use commandline compile or ProRibbon-Mode you can test application bei opening &lt;strong&gt;c:\temp\blogtemp\ProRibbonTest\ProRibbonTest.sln&lt;/strong&gt; and starting the application. Remember!!! Ribbon have only to be compiled after markup.xml is changed. The Sample project is delivered with a short markup, which will show you a button. The corresponding ribbon binaray (&lt;strong&gt;c:\temp\blogtemp\ProRibbonTest\FormTestProRibbon.ribbon&lt;/strong&gt;) is already available. So you can start the application by pressing F5. In case you modify the the markup file. You have to update the binary. This can be done by ProRibbon or by commandline. In case of commandline you have to update &lt;strong&gt;c:\temp\blogtemp\ProRibbonMarkup\genmarkup.bat&lt;/strong&gt;, execute the batch and change any access code for the changed markup &lt;strong&gt;c:\temp\blogtemp\ProRibbonTest\\FormTestProRibbon.Designer.Ribbon.cs&lt;/strong&gt;. In case of ProRibbon you press Generate Ribbon &lt;img class="img-responsive" alt="default" src="/Themes/prosodev_bootstrap/content/proribbon/regenerate.png" /&gt;. To regenerate the .NET Source you go to the code editor and press save. All images used in example can be found here: &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35825" title="Visual Studio Image Library"&gt;Visual Studio Image Library&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h1 class="page-header"&gt;Windows Ribbon Framework Controls&lt;/h1&gt;
&lt;div class="proaccordion"&gt;
&lt;div data-title="Button Control"&gt;
&lt;h4&gt;Display in application&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_button_01.png" /&gt;&lt;/div&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_button_02.png" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="proaccordion"&gt;
&lt;div data-title="markup.xml"&gt;
&lt;pre&gt;&lt;code class="xml"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon"&amp;gt;
    &amp;lt;Application.Commands&amp;gt;
        &amp;lt;Command Name="TabDefault" LabelTitle="Default" Id="3" /&amp;gt;
        &amp;lt;Command Name="TestButton" LabelTitle="My Button" Id="4"&amp;gt;
            &amp;lt;Command.LargeImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.LargeImages&amp;gt;
            &amp;lt;Command.SmallImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon_small.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.SmallImages&amp;gt;
        &amp;lt;/Command&amp;gt;
    &amp;lt;/Application.Commands&amp;gt;
    &amp;lt;Application.Views&amp;gt;
        &amp;lt;Ribbon GroupSpacing="Small"&amp;gt;
            &amp;lt;Ribbon.Tabs&amp;gt;
                &amp;lt;Tab CommandName="TabDefault"&amp;gt;
                    &amp;lt;Group&amp;gt;
                        &amp;lt;Button CommandName="TestButton" /&amp;gt;
                    &amp;lt;/Group&amp;gt;
                &amp;lt;/Tab&amp;gt;
            &amp;lt;/Ribbon.Tabs&amp;gt;
        &amp;lt;/Ribbon&amp;gt;
    &amp;lt;/Application.Views&amp;gt;
&amp;lt;/Application&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div data-title="FormTestProRibbon.Designer.Ribbon.cs"&gt;
&lt;pre&gt;&lt;code class="csharp"&gt;// This file contains code to inject ribbon control to your form.
// Version 1.0
namespace ProRibbonTest
{
    using System;
    using System.ComponentModel;
    using System.Linq;    
    using System.Reflection;
    using System.Windows.Forms;
    using RibbonLib;
    using RibbonLib.Controls;
    public partial class FormTestProRibbon 
    {
        protected override void OnLoad(EventArgs e)
        {
            this.InitRibbonLib();
            base.OnLoad(e);
        }
        private RibbonLib.Ribbon InitRibbonLib(RibbonLib.Ribbon ribbon = null, string ribbonPath = @@"", string ribbonResource = @@"ProRibbonTest.FormTestProRibbon")
        {
            if (ribbon == null)
            {
                 ribbon = this.Controls.Cast&amp;lt;Control&amp;gt;().FirstOrDefault(a =&amp;gt; a is Ribbon) as Ribbon;
                 if (ribbon == null)
                 {
                     ribbon = new Ribbon();
                     this.Controls.Add(ribbon);
                     this.Controls.SetChildIndex(ribbon, Math.Max(0, this.Controls.Count - 1));
                 }
            }
            
            // ribbonPath if you want to load from dll
            if (!string.IsNullOrEmpty(ribbonPath))
            {
                try
                {
                    var initFrameWork = ribbon.GetType()
                        .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                        .First(method =&amp;gt; method.Name == "InitFramework" &amp;amp;&amp;amp; method.GetParameters().Count() == 2 &amp;amp;&amp;amp; method.GetParameters()[1].ParameterType == typeof (string));
                    initFrameWork.Invoke(ribbon, new object[] {"APPLICATION_RIBBON", ribbonPath});
                }
                catch (Exception msg)
                {
                    MessageBox.Show(this, "Ribbon could not be loaded." + Environment.NewLine + msg.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            // ribbonResource if you want to load from resource
            if (!string.IsNullOrEmpty(ribbonResource))
            {
                ribbon.ResourceName = ribbonResource;
            }
            this.buttonTestButton = new RibbonButton(ribbon, 4);
            this.tabTabDefault = new RibbonTab(ribbon, 3);
            return ribbon;
        }
        public RibbonButton buttonTestButton;
        public RibbonTab tabTabDefault;
    
    
        public class RibbonContextMenuStrip : ContextMenuStrip
        {
            private uint contextPopupID;
            private Ribbon ribbon;
            public RibbonContextMenuStrip(Ribbon ribbon, uint contextPopupId)
                : base()
            {
                this.contextPopupID = contextPopupId;
                this.ribbon = ribbon;
            }
            protected override void OnOpening(CancelEventArgs e)
            {
                this.ribbon.ShowContextPopup(contextPopupID, Cursor.Position.X, Cursor.Position.Y);
                e.Cancel = true;
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-title="CheckBox Control"&gt;
&lt;h4&gt;Display in application&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_checkbox_01.png" /&gt;&lt;/div&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_checkbox_02.png" /&gt;&lt;/div&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_checkbox_03.png" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="proaccordion"&gt;
&lt;div data-title="markup.xml"&gt;
&lt;pre&gt;&lt;code class="xml"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon"&amp;gt;
    &amp;lt;Application.Commands&amp;gt;
        &amp;lt;Command Name="TabDefault" LabelTitle="Default" Id="3" /&amp;gt;
        &amp;lt;Command Name="TestButton" LabelTitle="My CheckBox" Id="4"&amp;gt;
            &amp;lt;Command.LargeImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.LargeImages&amp;gt;
            &amp;lt;Command.SmallImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon_small.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.SmallImages&amp;gt;
        &amp;lt;/Command&amp;gt;
    &amp;lt;/Application.Commands&amp;gt;
    &amp;lt;Application.Views&amp;gt;
        &amp;lt;Ribbon GroupSpacing="Small"&amp;gt;
            &amp;lt;Ribbon.Tabs&amp;gt;
                &amp;lt;Tab CommandName="TabDefault"&amp;gt;
                    &amp;lt;Group&amp;gt;
                        &amp;lt;CheckBox CommandName="TestButton" /&amp;gt;
                    &amp;lt;/Group&amp;gt;
                &amp;lt;/Tab&amp;gt;
            &amp;lt;/Ribbon.Tabs&amp;gt;
        &amp;lt;/Ribbon&amp;gt;
    &amp;lt;/Application.Views&amp;gt;
&amp;lt;/Application&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div data-title="FormTestProRibbon.Designer.Ribbon.cs"&gt;
&lt;pre&gt;&lt;code class="csharp"&gt;// This file contains code to inject ribbon control to your form.
// Version 1.0
namespace ProRibbonTest
{
    using System;
    using System.ComponentModel;
    using System.Linq;    
    using System.Reflection;
    using System.Windows.Forms;
    using RibbonLib;
    using RibbonLib.Controls;
    public partial class FormTestProRibbon 
    {
        protected override void OnLoad(EventArgs e)
        {
            this.InitRibbonLib();
            base.OnLoad(e);
        }
        private RibbonLib.Ribbon InitRibbonLib(RibbonLib.Ribbon ribbon = null, string ribbonPath = "", string ribbonResource = "ProRibbonTest.FormTestProRibbon")
        {
            if (ribbon == null)
            {
                 ribbon = this.Controls.Cast&amp;lt;Control&amp;gt;().FirstOrDefault(a =&amp;gt; a is Ribbon) as Ribbon;
                 if (ribbon == null)
                 {
                     ribbon = new Ribbon();
                     this.Controls.Add(ribbon);
                     this.Controls.SetChildIndex(ribbon, Math.Max(0, this.Controls.Count - 1));
                 }
            }
            
            // ribbonPath if you want to load from dll
            if (!string.IsNullOrEmpty(ribbonPath))
            {
                try
                {
                    var initFrameWork = ribbon.GetType()
                        .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                        .First(method =&amp;gt; method.Name == "InitFramework" &amp;amp;&amp;amp; method.GetParameters().Count() == 2 &amp;amp;&amp;amp; method.GetParameters()[1].ParameterType == typeof (string));
                    initFrameWork.Invoke(ribbon, new object[] {"APPLICATION_RIBBON", ribbonPath});
                }
                catch (Exception msg)
                {
                    MessageBox.Show(this, "Ribbon could not be loaded." + Environment.NewLine + msg.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            // ribbonResource if you want to load from resource
            if (!string.IsNullOrEmpty(ribbonResource))
            {
                ribbon.ResourceName = ribbonResource;
            }
            this.checkboxTestButton = new RibbonCheckBox(ribbon, 4);
            this.tabTabDefault = new RibbonTab(ribbon, 3);
            return ribbon;
        }
        public RibbonCheckBox checkboxTestButton;
        public RibbonTab tabTabDefault;
    
    
        public class RibbonContextMenuStrip : ContextMenuStrip
        {
            private uint contextPopupID;
            private Ribbon ribbon;
            public RibbonContextMenuStrip(Ribbon ribbon, uint contextPopupId)
                : base()
            {
                this.contextPopupID = contextPopupId;
                this.ribbon = ribbon;
            }
            protected override void OnOpening(CancelEventArgs e)
            {
                this.ribbon.ShowContextPopup(contextPopupID, Cursor.Position.X, Cursor.Position.Y);
                e.Cancel = true;
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-title="ComboBox Control"&gt;
&lt;h4&gt;Display in application&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_combobox_01.png" /&gt;&lt;/div&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_combobox_02.png" /&gt;&lt;/div&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_combobox_03.png" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="proaccordion"&gt;
&lt;div data-title="markup.xml"&gt;
&lt;pre&gt;&lt;code class="xml"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon"&amp;gt;
    &amp;lt;Application.Commands&amp;gt;
        &amp;lt;Command Name="TabDefault" LabelTitle="Default" Id="3" /&amp;gt;
        &amp;lt;Command Name="ComboBoxCmd" Id="4"&amp;gt;&amp;lt;/Command&amp;gt;
        &amp;lt;Command Name="Btn1" LabelTitle="Btn1" Id="5" /&amp;gt;
        &amp;lt;Command Name="Btn2" LabelTitle="Btn2" Id="6" /&amp;gt;
        &amp;lt;Command Name="ComboBoxCm2" Id="7"/&amp;gt;
    &amp;lt;/Application.Commands&amp;gt;
    &amp;lt;Application.Views&amp;gt;
        &amp;lt;Ribbon GroupSpacing="Small"&amp;gt;
            &amp;lt;Ribbon.Tabs&amp;gt;
                &amp;lt;Tab CommandName="TabDefault"&amp;gt;
                    &amp;lt;Group&amp;gt;
                        &amp;lt;ComboBox ResizeType="NoResize" IsEditable="false" IsAutoCompleteEnabled="true" CommandName="ComboBoxCmd"/&amp;gt;
                        &amp;lt;ComboBox ResizeType="VerticalResize" IsEditable="true" IsAutoCompleteEnabled="true" CommandName="ComboBoxCm2"/&amp;gt;
                        &amp;lt;Button CommandName="Btn1" /&amp;gt;
                        &amp;lt;Button CommandName="Btn2" /&amp;gt;
                    &amp;lt;/Group&amp;gt;
                &amp;lt;/Tab&amp;gt;
            &amp;lt;/Ribbon.Tabs&amp;gt;
        &amp;lt;/Ribbon&amp;gt;
    &amp;lt;/Application.Views&amp;gt;
&amp;lt;/Application&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div data-title="FormTestProRibbon.Designer.Ribbon.cs"&gt;
&lt;pre&gt;&lt;code class="csharp"&gt;// This file contains code to inject ribbon control to your form.
// Version 1.0
namespace ProRibbonTest
{
    using System;
    using System.ComponentModel;
    using System.Linq;    
    using System.Reflection;
    using System.Windows.Forms;
    using RibbonLib;
    using RibbonLib.Controls;
    public partial class FormTestProRibbon 
    {
        protected override void OnLoad(EventArgs e)
        {
            this.InitRibbonLib();
            base.OnLoad(e);
        }
        private RibbonLib.Ribbon InitRibbonLib(RibbonLib.Ribbon ribbon = null, string ribbonPath = "", string ribbonResource = "ProRibbonTest.FormTestProRibbon")
        {
            if (ribbon == null)
            {
                 ribbon = this.Controls.Cast&amp;lt;Control&amp;gt;().FirstOrDefault(a =&amp;gt; a is Ribbon) as Ribbon;
                 if (ribbon == null)
                 {
                     ribbon = new Ribbon();
                     this.Controls.Add(ribbon);
                     this.Controls.SetChildIndex(ribbon, Math.Max(0, this.Controls.Count - 1));
                 }
            }
            
            // ribbonPath if you want to load from dll
            if (!string.IsNullOrEmpty(ribbonPath))
            {
                try
                {
                    var initFrameWork = ribbon.GetType()
                        .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                        .First(method =&amp;gt; method.Name == "InitFramework" &amp;amp;&amp;amp; method.GetParameters().Count() == 2 &amp;amp;&amp;amp; method.GetParameters()[1].ParameterType == typeof (string));
                    initFrameWork.Invoke(ribbon, new object[] {"APPLICATION_RIBBON", ribbonPath});
                }
                catch (Exception msg)
                {
                    MessageBox.Show(this, "Ribbon could not be loaded." + Environment.NewLine + msg.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            // ribbonResource if you want to load from resource
            if (!string.IsNullOrEmpty(ribbonResource))
            {
                ribbon.ResourceName = ribbonResource;
            }
            this.buttonBtn1 = new RibbonButton(ribbon, 5);
            this.buttonBtn2 = new RibbonButton(ribbon, 6);
            this.comboboxComboBoxCmd = new RibbonComboBox(ribbon, 4);
            this.comboboxComboBoxCm2 = new RibbonComboBox(ribbon, 7);
            this.tabTabDefault = new RibbonTab(ribbon, 3);
            return ribbon;
        }
        public RibbonButton buttonBtn1;
        public RibbonButton buttonBtn2;
        public RibbonComboBox comboboxComboBoxCmd;
        public RibbonComboBox comboboxComboBoxCm2;
        public RibbonTab tabTabDefault;
    
    
        public class RibbonContextMenuStrip : ContextMenuStrip
        {
            private uint contextPopupID;
            private Ribbon ribbon;
            public RibbonContextMenuStrip(Ribbon ribbon, uint contextPopupId)
                : base()
            {
                this.contextPopupID = contextPopupId;
                this.ribbon = ribbon;
            }
            protected override void OnOpening(CancelEventArgs e)
            {
                this.ribbon.ShowContextPopup(contextPopupID, Cursor.Position.X, Cursor.Position.Y);
                e.Cancel = true;
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div data-title="FormTestProRibbon.cs"&gt;
&lt;pre&gt;&lt;code class="csharp"&gt;        private void RunSnippet(object sender, EventArgs e)
        {
            var categories2 = comboboxComboBoxCm2.Categories;
            categories2.Clear();
            categories2.Add(new GalleryItemPropertySet { Label = "Cat1", CategoryID = 1 });
            categories2.Add(new GalleryItemPropertySet { Label = "Cat2", CategoryID = 2 });
            var itemsSource2 = comboboxComboBoxCm2.ItemsSource;
            itemsSource2.Clear();
            itemsSource2.Add(new GalleryItemPropertySet { Label = "1.0", CategoryID = 1 });
            itemsSource2.Add(new GalleryItemPropertySet { Label = "2.0", CategoryID = 1 });
            itemsSource2.Add(new GalleryItemPropertySet { Label = "5.3", CategoryID = 2 });
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-title="Context popup"&gt;
&lt;h4&gt;Display in application (here you see a screenshot made in ProRibbon)&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_contextpopup_01.png" /&gt;&lt;/div&gt;
&lt;div class="col-md-4"&gt;&lt;img class="img-responsive" src="/Themes/prosodev_bootstrap/content/proribbon/ctrl_contextpopup_02.png" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="proaccordion"&gt;
&lt;div data-title="markup.xml"&gt;
&lt;pre&gt;&lt;code class="xml"&gt;                         &amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon"&amp;gt;
    &amp;lt;Application.Commands&amp;gt;
        &amp;lt;Command Name="TabDefault" LabelTitle="Default" Id="3" /&amp;gt;
        &amp;lt;Command Name="ComboBoxCmd" Id="4"&amp;gt;&amp;lt;/Command&amp;gt;
        &amp;lt;Command Name="Btn1" LabelTitle="Btn1" Id="5"&amp;gt;
            &amp;lt;Command.LargeImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.LargeImages&amp;gt;
            &amp;lt;Command.SmallImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon_small.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.SmallImages&amp;gt;
        &amp;lt;/Command&amp;gt;
        &amp;lt;Command Name="Btn2" LabelTitle="Btn2" Id="6"&amp;gt;
            &amp;lt;Command.LargeImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.LargeImages&amp;gt;
            &amp;lt;Command.SmallImages&amp;gt;
                &amp;lt;Image Source=".\images\deficon_small.bmp" MinDPI="96" /&amp;gt;
            &amp;lt;/Command.SmallImages&amp;gt;
        &amp;lt;/Command&amp;gt;
        &amp;lt;Command Name="ComboBoxCm2" Id="7" /&amp;gt;
        &amp;lt;Command Name="MenuCmd" LabelTitle="My Menu" Id="8" /&amp;gt;
    &amp;lt;/Application.Commands&amp;gt;
    &amp;lt;Application.Views&amp;gt;
        &amp;lt;Ribbon GroupSpacing="Small"&amp;gt;
            &amp;lt;Ribbon.Tabs&amp;gt;
                &amp;lt;Tab CommandName="TabDefault"&amp;gt;
                    &amp;lt;Group&amp;gt;
                        &amp;lt;ComboBox ResizeType="NoResize" IsEditable="false" IsAutoCompleteEnabled="true" CommandName="ComboBoxCmd" /&amp;gt;
                        &amp;lt;ComboBox ResizeType="VerticalResize" IsEditable="true" IsAutoCompleteEnabled="true" CommandName="ComboBoxCm2" /&amp;gt;
                        &amp;lt;Button CommandName="Btn1" /&amp;gt;
                        &amp;lt;Button CommandName="Btn2" /&amp;gt;
                    &amp;lt;/Group&amp;gt;
                &amp;lt;/Tab&amp;gt;
            &amp;lt;/Ribbon.Tabs&amp;gt;
        &amp;lt;/Ribbon&amp;gt;
        &amp;lt;ContextPopup&amp;gt;
            &amp;lt;ContextPopup.ContextMenus&amp;gt;
                &amp;lt;ContextMenu Name="MyMenu"&amp;gt;
                    &amp;lt;MenuGroup Class="StandardItems"&amp;gt;
                        &amp;lt;Button CommandName="Btn1" /&amp;gt;
                        &amp;lt;Button CommandName="Btn2" /&amp;gt;
                    &amp;lt;/MenuGroup&amp;gt;
                &amp;lt;/ContextMenu&amp;gt;
            &amp;lt;/ContextPopup.ContextMenus&amp;gt;
            &amp;lt;ContextPopup.ContextMaps&amp;gt;
                &amp;lt;ContextMap CommandName="MenuCmd" ContextMenu="MyMenu" /&amp;gt;
            &amp;lt;/ContextPopup.ContextMaps&amp;gt;
        &amp;lt;/ContextPopup&amp;gt;
    &amp;lt;/Application.Views&amp;gt;
&amp;lt;/Application&amp;gt;
                &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div data-title="FormTestProRibbon.Designer.Ribbon.cs"&gt;
&lt;pre&gt;&lt;code class="csharp"&gt;// This file contains code to inject ribbon control to your form.
// Version 1.0
namespace ProRibbonTest
{
    using System;
    using System.ComponentModel;
    using System.Linq;    
    using System.Reflection;
    using System.Windows.Forms;
    using RibbonLib;
    using RibbonLib.Controls;
    public partial class FormTestProRibbon 
    {
        protected override void OnLoad(EventArgs e)
        {
            this.InitRibbonLib();
            base.OnLoad(e);
        }
        private RibbonLib.Ribbon InitRibbonLib(RibbonLib.Ribbon ribbon = null, string ribbonPath = "", string ribbonResource = "ProRibbonTest.FormTestProRibbon")
        {
            if (ribbon == null)
            {
                 ribbon = this.Controls.Cast&amp;lt;Control&amp;gt;().FirstOrDefault(a =&amp;gt; a is Ribbon) as Ribbon;
                 if (ribbon == null)
                 {
                     ribbon = new Ribbon();
                     this.Controls.Add(ribbon);
                     this.Controls.SetChildIndex(ribbon, Math.Max(0, this.Controls.Count - 1));
                 }
            }
            
            // ribbonPath if you want to load from dll
            if (!string.IsNullOrEmpty(ribbonPath))
            {
                try
                {
                    var initFrameWork = ribbon.GetType()
                        .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
                        .First(method =&amp;gt; method.Name == "InitFramework" &amp;amp;&amp;amp; method.GetParameters().Count() == 2 &amp;amp;&amp;amp; method.GetParameters()[1].ParameterType == typeof (string));
                    initFrameWork.Invoke(ribbon, new object[] {"APPLICATION_RIBBON", ribbonPath});
                }
                catch (Exception msg)
                {
                    MessageBox.Show(this, "Ribbon could not be loaded." + Environment.NewLine + msg.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            // ribbonResource if you want to load from resource
            if (!string.IsNullOrEmpty(ribbonResource))
            {
                ribbon.ResourceName = ribbonResource;
            }
            this.buttonBtn1 = new RibbonButton(ribbon, 5);
            this.buttonBtn2 = new RibbonButton(ribbon, 6);
            this.comboboxComboBoxCmd = new RibbonComboBox(ribbon, 4);
            this.comboboxComboBoxCm2 = new RibbonComboBox(ribbon, 7);
            this.tabTabDefault = new RibbonTab(ribbon, 3);
            this.contextmapMenuCmd = new RibbonContextMenuStrip(ribbon, 8);
            return ribbon;
        }
        public RibbonButton buttonBtn1;
        public RibbonButton buttonBtn2;
        public RibbonComboBox comboboxComboBoxCmd;
        public RibbonComboBox comboboxComboBoxCm2;
        public RibbonTab tabTabDefault;
        public RibbonContextMenuStrip contextmapMenuCmd;
    
    
        public class RibbonContextMenuStrip : ContextMenuStrip
        {
            private uint contextPopupID;
            private Ribbon ribbon;
            public RibbonContextMenuStrip(Ribbon ribbon, uint contextPopupId)
                : base()
            {
                this.contextPopupID = contextPopupId;
                this.ribbon = ribbon;
            }
            protected override void OnOpening(CancelEventArgs e)
            {
                this.ribbon.ShowContextPopup(contextPopupID, Cursor.Position.X, Cursor.Position.Y);
                e.Cancel = true;
            }
        }
    }
}                
                &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><pubDate>Wed, 07 Jan 2015 02:50:00 GMT</pubDate><guid isPermaLink="true">http://prosodev.com:80/ribbon-blog/ribbon-elements</guid><category>Ribbon</category><category>ProRibbon</category></item><item><title>ProRibbon General Workflow</title><link>http://prosodev.com:80/ribbon-blog/proribbon-general-workflow</link><description>&lt;div class="blogoverview"&gt;This blog gives a overview how to configure Visual Studio and ProRibbon to display Winfors Ribbon Framework - Ribbons. It uses only the minimalistic steps you need to setup a new Ribbon Control.&lt;/div&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-12"&gt;
&lt;h1 class="page-header"&gt;Sample ProRibbon Workflow&lt;/h1&gt;
&lt;div class="panel-group" id="accordion2" role="tablist" aria-multiselectable="false"&gt;
&lt;div class="panel panel-default"&gt;
&lt;div class="panel-heading" role="tab" id="headingworkflow1"&gt;
&lt;h4 class="panel-title"&gt;&lt;a class="collapsed" data-toggle="collapse" data-parent="#accordion2" href="#collapseworkflow1" aria-expanded="false" aria-controls="collapseworkflow1"&gt; Generate minimalistic .NET Windows Ribbon Application &lt;/a&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div id="collapseworkflow1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingworkflow1"&gt;
&lt;div class="panel-body"&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-12"&gt;&lt;img src="/Themes/prosodev_bootstrap/content/proribbon/vid01.gif" alt="edit commands" class="img-responsive" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="panel panel-default"&gt;
&lt;div class="panel-heading" role="tab" id="headingworkflow2"&gt;
&lt;h4 class="panel-title"&gt;&lt;a class="collapsed" data-toggle="collapse" data-parent="#accordion2" href="#collapseworkflow2" aria-expanded="false" aria-controls="collapseworkflow2"&gt; Generate minimalistic Ribbon with two commands &lt;/a&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div id="collapseworkflow2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingworkflow2"&gt;
&lt;div class="panel-body"&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-12"&gt;&lt;img src="/Themes/prosodev_bootstrap/content/proribbon/vid02.gif" alt="edit commands" class="img-responsive" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="panel panel-default"&gt;
&lt;div class="panel-heading" role="tab" id="headingworkflow3"&gt;
&lt;h4 class="panel-title"&gt;&lt;a class="collapsed" data-toggle="collapse" data-parent="#accordion2" href="#collapseworkflow3" aria-expanded="false" aria-controls="collapseworkflow3"&gt; Modify some Ribbon properties &lt;/a&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div id="collapseworkflow3" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingworkflow3"&gt;
&lt;div class="panel-body"&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-12"&gt;&lt;img src="/Themes/prosodev_bootstrap/content/proribbon/vid03.gif" alt="default" class="img-responsive" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="panel panel-default"&gt;
&lt;div class="panel-heading" role="tab" id="headingworkflow4"&gt;
&lt;h4 class="panel-title"&gt;&lt;a class="collapsed" data-toggle="collapse" data-parent="#accordion2" href="#collapseworkflow4" aria-expanded="false" aria-controls="collapseworkflow4"&gt; Generate code for .NET Windows Ribbon Application &lt;/a&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div id="collapseworkflow4" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingworkflow4"&gt;
&lt;div class="panel-body"&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-12"&gt;&lt;img src="/Themes/prosodev_bootstrap/content/proribbon/vid04.gif" alt="edit commands" class="img-responsive" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="panel panel-default"&gt;
&lt;div class="panel-heading" role="tab" id="headingworkflow5"&gt;
&lt;h4 class="panel-title"&gt;&lt;a class="collapsed" data-toggle="collapse" data-parent="#accordion2" href="#collapseworkflow5" aria-expanded="false" aria-controls="collapseworkflow5"&gt; Resize main window / Start .NET Windows Ribbon Application &lt;/a&gt;&lt;/h4&gt;
&lt;/div&gt;
&lt;div id="collapseworkflow5" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingworkflow5"&gt;
&lt;div class="panel-body"&gt;
&lt;div class="row"&gt;
&lt;div class="col-md-12"&gt;&lt;img src="/Themes/prosodev_bootstrap/content/proribbon/vid05.gif" alt="edit commands" class="img-responsive" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h1 class="page-header"&gt;Windows Ribbon Source Code&lt;/h1&gt;
&lt;div class="col-md-12"&gt;
&lt;pre&gt;&lt;code class="xmls"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon"&amp;gt;
    &amp;lt;Application.Commands&amp;gt;
        &amp;lt;Command Name="Command1" LabelTitle="Test 1" Id="3"&amp;gt;
              &amp;lt;Command.LargeImages&amp;gt;
                    &amp;lt;Image Source="C:/Users/LindaDev/Desktop/ribbons/images/disk_blue32.bmp" MinDPI="96"/&amp;gt;
              &amp;lt;/Command.LargeImages&amp;gt;
        &amp;lt;/Command&amp;gt;
        &amp;lt;Command Name="Command2" LabelTitle="Test 2" Id="4"&amp;gt;
              &amp;lt;Command.LargeImages&amp;gt;
                    &amp;lt;Image Source="C:/Users/LindaDev/Desktop/ribbons/images/about32.bmp" MinDPI="96"/&amp;gt;
              &amp;lt;/Command.LargeImages&amp;gt;
        &amp;lt;/Command&amp;gt;&amp;lt;/Application.Commands&amp;gt;
    &amp;lt;Application.Views&amp;gt;
        &amp;lt;Ribbon GroupSpacing="Small"&amp;gt;
            &amp;lt;Ribbon.Tabs&amp;gt;
                &amp;lt;Tab&amp;gt;
                    &amp;lt;Group SizeDefinition="TwoButtons"&amp;gt;
                        &amp;lt;Button CommandName="Command1"/&amp;gt;
                        &amp;lt;Button CommandName="Command2"/&amp;gt;
                    &amp;lt;/Group&amp;gt;
                &amp;lt;/Tab&amp;gt;
            &amp;lt;/Ribbon.Tabs&amp;gt;
        &amp;lt;/Ribbon&amp;gt;
    &amp;lt;/Application.Views&amp;gt;
&amp;lt;/Application&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h1 class="page-header"&gt;.NET Source Code&lt;/h1&gt;
&lt;div class="col-md-12"&gt;&lt;strong&gt;In this sample no source code is used. Simply generate a new C# .Net Solution and see the workflow for detailed instructions.&lt;/strong&gt;&lt;/div&gt;</description><pubDate>Tue, 06 Jan 2015 23:32:00 GMT</pubDate><guid isPermaLink="true">http://prosodev.com:80/ribbon-blog/proribbon-general-workflow</guid><category>ProRibbon</category></item><item><title>Generate Windows Ribbon from Commandline</title><link>http://prosodev.com:80/ribbon-blog/generate-windows-ribbon-from-commandline</link><description>&lt;h1 class="page-header"&gt;Overview&lt;/h1&gt;
&lt;div class="blogoverview"&gt;You can build Windows Ribbon Framework without using ProRibbon. (E.g. if you run from build server.) Read carefully and adapt your paths to reference vsvarall.bat-paths to link and build resource. Also reference Windows Ribbon SDK Uicc.exe. The recommend way is to build with ProRibbon. Some nice features are not available from commandline (not functional only comfort).&lt;/div&gt;
&lt;p class="text-justify"&gt;You can build Windows Ribbon Framework without using ProRibbon. (E.g. if you run from build server.) Read carefully and adapt your paths to reference vsvarall.bat-paths to link and build resource. Also reference Windows Ribbon SDK Uicc.exe. The recommend way is to build with ProRibbon. Some nice features are not available from commandline (not functional only comfort).&lt;/p&gt;
&lt;h1 class="page-header"&gt;Input files&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Form1.cs&lt;/li&gt;
&lt;li&gt;ribbon.xml&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="col-md-12"&gt;
&lt;h3&gt;ribbon.xml&lt;/h3&gt;
&lt;pre&gt;&lt;code class="xml"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;Application xmlns="http://schemas.microsoft.com/windows/2009/Ribbon"&amp;gt;
    &amp;lt;Application.Commands&amp;gt;
        &amp;lt;Command Name="Command1" LabelTitle="Test 1" Id="3"&amp;gt;&amp;lt;/Command&amp;gt;
        &amp;lt;Command Name="Command2" LabelTitle="Test 2" Id="4"&amp;gt;&amp;lt;/Command&amp;gt;
    &amp;lt;/Application.Commands&amp;gt;
    &amp;lt;Application.Views&amp;gt;
        &amp;lt;Ribbon GroupSpacing="Small"&amp;gt;
            &amp;lt;Ribbon.Tabs&amp;gt;
                &amp;lt;Tab&amp;gt;
                    &amp;lt;Group SizeDefinition="TwoButtons"&amp;gt;
                        &amp;lt;Button CommandName="Command1" /&amp;gt;
                        &amp;lt;Button CommandName="Command2" /&amp;gt;
                    &amp;lt;/Group&amp;gt;
                &amp;lt;/Tab&amp;gt;
            &amp;lt;/Ribbon.Tabs&amp;gt;
        &amp;lt;/Ribbon&amp;gt;
    &amp;lt;/Application.Views&amp;gt;
&amp;lt;/Application&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h1 class="page-header"&gt;Build on command line&lt;/h1&gt;
&lt;div class="col-md-12"&gt;
&lt;pre&gt;&lt;code class="bash"&gt;uicc.exe "ribbon.xml" "output.bml" /res:"ribbonresource.rc"
RC.Exe /v "ribbonresource.rc"
link.exe" /VERBOSE /NOENTRY /DLL /OUT:"ribbon.dll" "ribbonresource.res")
&lt;/code&gt;&lt;/pre&gt;
&lt;img src="/Themes/prosodev_bootstrap/content/proribbon/console.png" alt="edit commands" class="img-responsive" /&gt;&lt;/div&gt;
&lt;h1 class="page-header"&gt;Prepare Visual Studio (any version .NET greater than 3.5)&lt;/h1&gt;
&lt;ul style="list-style-type: decimal;"&gt;
&lt;li&gt;Add ribbon.dll as resource to your Winforms project.&lt;/li&gt;
&lt;li&gt;Add ribbon control to your winforms form.&lt;/li&gt;
&lt;li&gt;Add partial class to your winforms form.&lt;/li&gt;
&lt;li&gt;Fill partial class with code in next listening.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 class="page-header"&gt;Partial class in Winforms Form&lt;/h1&gt;
&lt;div class="col-md-12"&gt;
&lt;pre&gt;&lt;code class="csharp"&gt;protected override OnLoad(EventArgs e)
{
	base.OnLoad(e);
	this.InitRibbonLib(this.ribbon)
}

private void InitRibbonLib(RibbonLib.Ribbon ribbon)
{
	ribbon.ResourceName = ribbonResource;
    var buttonCommand1 = new RibbonButton(ribbon, 3);
	var buttonCommand2 = new RibbonButton(ribbon, 4);
    // ... put in any code to initialize buttons
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h1 class="page-header"&gt;Compile and run Winforms Application&lt;/h1&gt;
&lt;p&gt;&lt;img src="/Themes/prosodev_bootstrap/content/proribbon/demo_form1.png" alt="edit commands" class="img-responsive" /&gt;&lt;/p&gt;</description><pubDate>Sun, 05 Oct 2014 11:45:00 GMT</pubDate><guid isPermaLink="true">http://prosodev.com:80/ribbon-blog/generate-windows-ribbon-from-commandline</guid><category>Ribbon</category><category>ProRibbon</category></item></channel></rss>