Подтвердить что ты не робот

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

Я разрабатываю приложения 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;

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

4b9b3361

Ответ 1

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

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

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

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