2013-06-05 3 views
17

Ich entwickle WPF-Anwendungen, und ich möchte meine Klassen wiederverwenden, die in all diesen Anwendungen identisch sind, so dass ich sie als Referenz hinzufügen kann.Klassenbibliothek erkennt CommandManager-Klasse nicht

In meinem Fall habe ich eine Klasse für meine Befehle:

public class RelayCommand : ICommand 
{ 
    #region Fields 

    readonly Action<object> _execute; 
    readonly Predicate<object> _canExecute; 

    #endregion // Fields 

    #region Constructors 

    public RelayCommand(Action<object> execute) 
     : this(execute, null) 
    { 

    } 

    public RelayCommand(Action<object> execute, Predicate<object> canExecute) 
    { 
     if (execute == null) 
      throw new ArgumentNullException("execute"); 

     _execute = execute; 
     _canExecute = canExecute; 
    } 
    #endregion // Constructors 

    #region ICommand Members 

    public bool CanExecute(object parameter) 
    { 
     return _canExecute == null ? true : _canExecute(parameter); 
    } 

    public event EventHandler CanExecuteChanged 
    { 
     add { CommandManager.RequerySuggested += value; } 
     remove { CommandManager.RequerySuggested -= value; } 
    } 

    public void Execute(object parameter) 
    { 
     _execute(parameter); 
    } 

    #endregion // ICommand Members 
} 

Das in meiner Anwendung perfekt funktioniert, aber wenn ich will eine Klassenbibliothek machen, die ich will nur als Referenz in meinem Projekt hinzufügen , Visual Studio kann nicht erstellt werden, weil "CommandManager nicht im aktuellen Kontext vorhanden ist". In meinem usings haben folgende ich das (die genug sein sollte)

using System; 
using System.Windows.Input; 

Irgendwelche Ideen, warum ich das nicht in einem „Klassenbibliotheksprojekt“ tun kann?

Antwort

39

Gehen Sie zum "References" Teil Ihrer Klassenbibliothek und wählen Sie "Add Reference". Suchen Sie nach einer Assembly namens "PresentationCore" und fügen Sie sie hinzu.

Dann in Ihrer Klassendatei die Anweisung using using System.Windows.Input;

Sie erhalten dann die Befehlsmanager zugreifen können hinzufügen, wie Sie es erwarten.

Nur hinzufügen: viele Jungs, wenn sie gehen, um eine Klassenbibliothek zu erstellen, wählen sie "WPF Custom Control Library" und löschen Sie dann die "Class1.cs" -Datei. Es ist eine Verknüpfung, die automatisch die richtigen Namespaces zu Ihrer Bibliothek hinzufügt. Ob es eine gute oder eine schlechte Abkürzung ist, ist jemandes Anruf, aber ich benutze es die ganze Zeit.

+2

Perfekt! Danke :) – koala

+2

und danke für den Hinweis class1.cs auch – amaca