类库不识别CommandManager类

本文关键字:CommandManager 识别 类库 | 更新日期: 2023-09-27 18:17:02

我正在开发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
}

这在我的应用程序中是完美的,但是当我想做一个类库,我只是想在我的项目中添加一个参考时,visual studio无法构建,因为"CommandManager不存在于当前上下文中"。在我的用法中,我有以下内容(这应该足够了)

 using System;
 using System.Windows.Input;

知道为什么我不能在"类库项目"中这样做吗?

类库不识别CommandManager类

转到类库的"References"部分,选择"Add Reference"。寻找名为"PresentationCore"的程序集并添加它。

然后在类文件中添加using语句using System.Windows.Input;

您将能够按照您的期望访问CommandManager。

只是补充:很多人去创建类库时,他们选择"WPF自定义控制库",然后擦除"Class1.cs"文件。这是一个快捷方式,可以自动将正确的名称空间添加到库中。这是一个好还是坏的快捷方式,每个人都有自己的看法,但我一直在使用它。