2013-06-05 3 views
17

Я разрабатываю приложения WPF, и я хочу повторно использовать мои классы, которые одинаковы во всех этих приложениях, поэтому я могу добавить их в качестве ссылки.Класс библиотеки не распознает класс CommandManager

В моем случае у меня есть класс для моих команд:

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 
} 

Это отлично работает в моем приложении, но когда я хочу сделать библиотеку классов, которые я просто хочу, чтобы добавить в качестве ссылки в моем проекте , визуальная студия не может построить, потому что «CommandManager не существует в текущем контексте». В моих usings я следующее (что должно быть достаточно)

using System; 
using System.Windows.Input; 

Любые идеи, почему я не могу сделать это в «библиотеке проекта класса»?

ответ

39

Перейдите в раздел «Ссылки» в библиотеке классов и выберите «Добавить ссылку». Найдите сборку под названием «PresentationCore» и добавьте ее.

Затем в файле класса добавьте используя заявление using System.Windows.Input;

тогда Вы сможете получить доступ к CommandManager, как вы ожидаете.

Просто добавьте: много парней, когда они идут, чтобы создать библиотеку классов, они выбирают «Библиотеку пользовательского контроля WPF», а затем удаляют файл «Class1.cs». Это ярлык, который автоматически добавляет правильные пространства имен в вашу библиотеку. Является ли это хорошим или плохим ярлыком, это чей-то призыв, но я использую его все время.

+2

Отлично! Спасибо :) – koala

+2

и спасибо за подсказку class1.cs – amaca

Смежные вопросы