2013-06-05 15 views
17

Sto sviluppando applicazioni WPF e desidero riutilizzare le mie classi uguali in tutte quelle applicazioni in modo da poterle aggiungere come riferimento.La libreria di classi non riconosce la classe CommandManager

Nel mio caso ho una classe per i miei comandi:

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 
} 

Questo funziona perfetto nella mia domanda, ma quando voglio fare una libreria di classi, che voglio solo aggiungere come riferimento nel mio progetto , lo studio visivo non può essere compilato perché "CommandManager non esiste nel contesto corrente". Nei miei usings ho il seguente (che dovrebbe essere sufficiente)

using System; 
using System.Windows.Input; 

Tutte le idee perché non riesco a fare questo in un "progetto di libreria di classi"?

risposta

39

Passare alla sezione "Riferimenti" della libreria di classi e selezionare "Aggiungi riferimento". Cerca un assembly chiamato "PresentationCore" e aggiungilo.

Poi, nel tuo file di classe aggiungere l'istruzione using using System.Windows.Input;

Sarete quindi in grado di accedere al CommandManager come previsto.

Solo aggiungendo: un sacco di ragazzi quando vanno a creare una libreria di classi, selezionano "Libreria di controlli personalizzati WPF" e quindi cancellano il file "Class1.cs". È una scorciatoia che aggiunge automaticamente i namespace giusti alla tua biblioteca. Che si tratti di una scorciatoia buona o cattiva è la chiamata di qualcuno, ma io la uso sempre.

+2

Perfetto! Grazie :) – koala

+2

e grazie anche per il suggerimento di class1.cs – amaca

Problemi correlati