6

I see the majority of WPF Ribbon examples out there use some code like

xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"

I'm getting this error..."The type 'r:RibbonCommand' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built."

Using VS 2010, .NET 4.0.

I'm trying to figure out how to add a button to the ribbon and execute code/command when it's clicked.

Thanks.

citronas
  • 19,035
  • 27
  • 96
  • 164
knockando
  • 992
  • 1
  • 18
  • 34
  • Also getting RibbonGroupSizeDefinitionCollection doesn't exist in namespace. I downloaded this walkthrough from MS and I'm getting the same errors. Something is wrong with my machine?http://windowsclient.net/downloads/folders/hands-on-labs/entry76491.aspx – knockando Nov 24 '10 at 16:37
  • 1
    RibbonCommand class doesn't exist in http://msdn.microsoft.com/en-us/library/microsoft.windows.controls.ribbon.aspx – knockando Nov 24 '10 at 17:25

3 Answers3

9

If you are using the new Microsoft WPF Ribbon, the RibbonCommand type has been removed. The Command property is now an ICommand type.

To set the command on a RibbonButton, you can do the following:

<ribbon:RibbonButton Command="ApplicationCommands.Copy" />

or use any command that implements ICommand.

Gene Merlin
  • 882
  • 7
  • 5
3

You also can use ICommand to implement your own command.

This class should be in code behind.

public class MyCommand : ICommand
{
    public void Execute(object parameter)
    {
        string hello = parameter as string;
        MessageBox.Show(hello, "World");
    }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public event EventHandler CanExecuteChanged;
}

You need to have Resources for using this command.

<DockPanel.Resources>
    <local:MyCommand x:Key="mycmd"/>
</DockPanel.Resources>

You also need to modify your xaml element to call this command.

<ribbon:RibbonButton Command="{StaticResource mycmd}" CommandParameter="Hello, command" Label="Copy" LargeImageSource="Images/LargeIcon.png"/> 
prosseek
  • 182,215
  • 215
  • 566
  • 871
2

You also have to reference the assembly in the project itself.

Femaref
  • 60,705
  • 7
  • 138
  • 176
  • Forgot to mention that I'm already doing that. Project is referencing RibbonControlsLibrary (C:\Program Files\Microsoft Ribbon for WPF\V4.0\RibbonControlsLibrary.dll). – knockando Nov 24 '10 at 15:07