Используя пример Microsoft для файлов .config, мой пакет определяется как:
Код: Выделить всё
[PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
[Guid(QuickSwapSettingsExtensionPackage.PackageGuidString)]
[ProvideMenuResource("Menus.ctmenu", 1)]
[ProvideAutoLoad(UIContextGuid, PackageAutoLoadFlags.BackgroundLoad)]
[ProvideUIContextRule(UIContextGuid,
name: "Apply only to JSON files",
expression: "DotConfig",
termNames: new[] { "DotConfig" },
termValues: new[] { "HierSingleSelectionName:.config$" })]
public sealed class QuickSwapSettingsExtensionPackage : AsyncPackage
{
///
/// QuickSwapSettingsExtensionPackage GUID string.
///
public const string PackageGuidString = "d6069cfa-a050-490c-bf8a-5ddb780e204d";
public const string UIContextGuid = "2cfcc18c-f6b5-418a-8531-2b8f3bf53cf5";
...
}
Код: Выделить всё
DynamicVisibility
Invoke SwapSettingsCommand
Код: Выделить всё
Код: Выделить всё
Похоже, что этот пункт меню добавляется, как только я нажимаю на файл .config, а затем постоянно присутствует и не удаляется при нажатии на другие файлы. Чего мне не хватает? Я бы хотел, чтобы элемент контекстного меню отображался только тогда, когда выбранный элемент является элементом JSON (или его можно даже отображать, но отключать для других типов файлов, если это более простое решение).