2010-11-24 15 views
5

ich die Mehrheit der WPF Ribbon Beispiele sehen da draußen einige Code verwenden wieRibbonCommand wurde nicht gefunden

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

ich diesen Fehler ... "Der Typ‚r: RibbonCommand‘war nicht gefunden. Stellen Sie sicher, dass keine Baugruppenreferenz fehlt und dass alle referenzierten Baugruppen erstellt wurden. "

Verwendung von VS 2010, .NET 4.0.

Ich versuche herauszufinden, wie Sie eine Schaltfläche zur Multifunktionsleiste hinzufügen und Code/Befehl ausführen, wenn darauf geklickt wird.

Danke.

+0

Auch RibbonGroupSizeDefinitionCollection ist nicht im Namespace vorhanden. Ich habe diese exemplarische Anleitung von MS heruntergeladen und erhalte die gleichen Fehler. Etwas stimmt nicht mit meinem Computer? Http: //windowsclient.net/downloads/folders/hands-on-labs/entry76491.aspx – knockando

+1

RibbonCommand-Klasse existiert nicht in http://msdn.microsoft.com/en-us/ library/microsoft.windows.controls.ribbon.aspx – knockando

Antwort

9

Wenn Sie die neue Microsoft WPF-Multifunktionsleiste verwenden, wurde der RibbonCommand-Typ entfernt. Die Command-Eigenschaft ist jetzt ein ICommand-Typ.

Um den Befehl auf einem Ribbonbutton, stellen Sie folgendes tun:

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

oder einen Befehl verwenden, die ICommand implementiert.

1

Sie müssen die Baugruppe auch im Projekt selbst referenzieren.

+0

Vergessen zu erwähnen, dass ich das schon mache. Das Projekt verweist auf RibbonControlsLibrary (C: \ Programme \ Microsoft Ribbon für WPF \ V4.0 \ RibbonControlsLibrary.dll). – knockando

3

Sie können auch ICommand verwenden, um Ihren eigenen Befehl zu implementieren.

Diese Klasse sollte in Code hinter sein.

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; 
} 

Sie benötigen Ressourcen für die Verwendung dieses Befehls.

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

Sie müssen auch Ihr Xaml-Element ändern, um diesen Befehl aufzurufen.

<ribbon:RibbonButton Command="{StaticResource mycmd}" CommandParameter="Hello, command" Label="Copy" LargeImageSource="Images/LargeIcon.png"/> 
Verwandte Themen