我的RelayCommand包含.net核心3预览版3未知的CommandManager的实现。但是,Microsoft说它可用:see here
我安装/卸载了.Net Core并重新启动了Visual Studio 2019预览版,但没有成功。操作系统是Windows 10 x64。
public class RelayCommand : ICommand
{
readonly Action<object> _execute;
readonly Predicate<object> _canExecute;
public RelayCommand(Action<object> execute) : this(execute, null) { }
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
_execute = execute ?? throw new
ArgumentNullException("execute"); _canExecute = canExecute;
}
[DebuggerStepThrough]
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); }
}
答案 0 :(得分:1)
我在WPF应用程序中为命令使用了类库,但是CommandManager不存在,即使文档指出它位于.NET Core中,也位于System.Windows.Input中。
感谢Col,我可以通过将输出类型从“类库”更改为Windows应用程序来使其工作:
右键单击您的项目>属性>应用程序
答案 1 :(得分:0)
有点晚了,但其他人可能会受益。
这是针对.NET Core 3.0预览版6
我通过Nu进行安装将以下内容导入WPF UI项目:
Microsoft.NETCore.Platforms Version =“ 3.0.0-preview6.19303.8”
Microsoft.NETCore.Targets Version =“ 3.0.0-preview6.19303.8”
Microsoft.WindowsDesktop.App版本=“ 3.0.0-preview6-27804-01”
然后可以使用System.Windows.Input.CommandManager。
您应该已经拥有SDK,即Microsoft.NETCore.App(3.0.0-preview6-27804-01)