有没有办法禁用视图面板中的命令发射按钮,并在不满足条件时将其灰显?

Is there a way to disable a command-emitting button in a view panel and grey it out if a condition is not met?

我正在编写一个 VS 代码扩展,并且有一个自定义视图,其中包含一个显示项目列表的树视图。

我想在项目列表为空时使三角形按钮变灰。

我觉得这应该是可能的,因为在 ExplorerSearch 视图中有很多这种行为的实例,但扩展中似乎没有任何东西 API 允许我在自己的扩展中实现它。

我在 VS Code 的源代码中发现 Action class 带有 enabled 标志,这似乎接近我需要的东西。但是,我无法在 vscode.d.ts 中的扩展 API 中找到任何相关内容,也找不到任何访问这些出现在 VS Code 源代码中的 classes 的方法。

可以吗?

您可以在定义命令时使用 package.json 中的 enablement property

{
    "title": "Run",
    "command": "lgtm.run",
    "enablement": "hasLgtmProjects"
}

然后您需要使用 setContext 命令从您的扩展中动态更新 hasLgtmProjects 上下文键。