Библиотека классов не распознает класс CommandManager

18

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

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

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 не работает существует в текущем контексте ". В моих приложениях у меня есть следующее (чего должно быть достаточно)

 using System;
 using System.Windows.Input;

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

    
задан koala 06.06.2013 в 00:14
источник

1 ответ

42

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

Затем в вашем файле класса добавьте оператор using using System.Windows.Input;

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

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

    
ответ дан Gayot Fow 06.06.2013 в 01:11
источник
  • Отлично! Спасибо :) –  koala 06.06.2013 в 08:30
  • и спасибо за подсказку class1.cs –  amaca 18.09.2014 в 13:57