This project is read-only.

Ribbon Controls will be moved out of DotSpatial.Controls

Sep 21, 2011 at 6:43 PM
Edited Oct 5, 2011 at 6:01 PM

The Ribbon Controls are going to be moved out of DotSpatial.Controls. Anyone using them in their project?

Sep 22, 2011 at 9:17 AM

Hi mudnug,,

At the moment I am using the ribbon control for my project but I can use an other ribbon control if you need to move it out of DotSpatial.


Sep 23, 2011 at 8:07 PM

Which ribbon control do you plan on using?

Oct 4, 2011 at 9:09 AM

There are 2 controls in my mind

This is free but it is not open source

And this is an comercial product



Oct 4, 2011 at 6:40 PM

Using the extension model for providing ribbons and docking components means that any of these tools could be wired in. This is the approach being used to add DevExpress components to the current test release of

On Oct 4, 2011 2:09 AM, "ambiente" <> wrote:
> From: ambiente
> There are 2 controls in my mind is free but it is not open sourceAnd this is an comercial product
Oct 4, 2011 at 11:20 PM

Hi ambiente,

We are considering abandoning the RibbonControl as there are bugs that haven't been fixed in it. We are providing a ribbon interface in MW6, however. It might be of interest to you. See

Apr 15, 2012 at 2:40 PM

Hi mudnug,

Now I moved to

Until now it works fine and I can substituite the DotSpatial RibbonControl.

I downloaded the mapwindow 6 project source and looked at the code but I cannot find where and how you configure the DevExpress Ribbon?

Where is the code for each button? I am VB developer but I can read the C# code ....

The Windows Ribbon for WinForms project is a wrapper, open source like DotSpatial :-) but has one limitation, Windows XP is not supported.

Ate the Windows Ribbon for WinForms I can create a RibbonMarkup.xml file for all commands like this.

<?xml version='1.0' encoding='utf-8'?>
<Application xmlns=''>

    <Command Name="cmdApplicationMenu" Id="1000" />


<Command Name="cmdButtonPrint"
				 LabelDescription="Print Description"
				 TooltipDescription="Print the current map project.">


Then Enum the commands
 Public Enum RibbonMarkupCommands As UInteger
        cmdApplicationMenu = 1000
        cmdButtonNew = 1001
        cmdButtonOpen = 1002
        cmdButtonSave = 1003
        cmdButtonPrint = 1004
        cmdButtonExit = 1005
    End Enum
Declare the commands
        Private _applicationMenu As RibbonApplicationMenu
        Private _buttonNew As RibbonButton
        Private _buttonOpen As RibbonButton
        Private _buttonSave As RibbonButton
        Private _buttonExit As RibbonButton
        Private _buttonPrint As RibbonButton
Create the buttons
             _applicationMenu = New RibbonApplicationMenu(_ribbon, CUInt(RibbonMarkupCommands.cmdApplicationMenu))
            _buttonNew = New RibbonButton(_ribbon, CUInt(RibbonMarkupCommands.cmdButtonNew))
            _buttonOpen = New RibbonButton(_ribbon, CUInt(RibbonMarkupCommands.cmdButtonOpen))
            _buttonSave = New RibbonButton(_ribbon, CUInt(RibbonMarkupCommands.cmdButtonSave))
            _buttonPrint = New RibbonButton(_ribbon, CUInt(RibbonMarkupCommands.cmdButtonPrint))
            _buttonExit = New RibbonButton(_ribbon, CUInt(RibbonMarkupCommands.cmdButtonExit))
Add Handler
            AddHandler _buttonNew.ExecuteEvent, AddressOf _buttonNew_ExecuteEvent
            AddHandler _buttonOpen.ExecuteEvent, AddressOf _buttonOpen_ExecuteEvent
            AddHandler _buttonPrint.ExecuteEvent, AddressOf _buttonPrint_ExecuteEvent
And use it
Private Sub _buttonPrint_ExecuteEvent(ByVal sender As Object, ByVal e As ExecuteEventArgs)

            Dim frm As New DotSpatial.Controls.LayoutForm
            frm.MapControl = Map1
        End Sub
Apr 17, 2012 at 4:22 PM
Edited Apr 17, 2012 at 4:27 PM

You'll need to create an extension that wraps that ribbon and implements IHeaderControl or inherits from HeaderControl.

There's not a lot of documentation on this, but you can see how we wrap the DevExpress Ribbon at

We'd love to see your contribution added to the feed when it is ready!

By having the implementation in an extension, you can use which ever implementation you prefer without modifying your code. Just drop the extension into your plugins folder.


Does this help?