c# wpf mvvm command class-library

c# - La biblioteca de clases no reconoce la clase CommandManager



wpf mvvm (1)

Estoy desarrollando aplicaciones WPF y quiero reutilizar mis clases que son iguales en todas esas aplicaciones para poder agregarlas como referencia.

En mi caso tengo una clase para mis comandos:

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 }

Esto funciona perfectamente en mi aplicación, pero cuando quiero crear una biblioteca de clases que solo quiero agregar como referencia en mi proyecto, Visual Studio no se puede construir porque " CommandManager no existe en el contexto actual". En mis usos tengo lo siguiente (que debería ser suficiente)

using System; using System.Windows.Input;

¿Alguna idea de por qué no puedo hacer esto en un "proyecto de biblioteca de clase"?


Vaya a la parte "Referencias" de su biblioteca de clases y seleccione "Agregar referencia". Busque un ensamblaje llamado "PresentationCore" y agréguelo.

Luego, en su archivo de clase, agregue la instrucción using System.Windows.Input;

A continuación, podrá acceder al CommandManager como espera.

Solo añadiendo: muchos tipos cuando van a crear una biblioteca de clases, seleccionan "Biblioteca de control personalizada de WPF" y luego borran el archivo "Class1.cs". Es un acceso directo que agrega automáticamente los espacios de nombres correctos a su biblioteca. Si es un atajo bueno o malo, es lo que llaman, pero lo uso todo el tiempo.