Otevření okna dynamického nástroje
Okna nástrojů se obvykle otevírají z příkazu v nabídce nebo ekvivalentní klávesové zkratky. Někdy ale můžete potřebovat okno nástroje, které se otevře vždy, když se použije konkrétní kontext uživatelského rozhraní, a zavře se, když se kontext uživatelského rozhraní už nepoužívá. Tyto typy oken nástrojů se nazývají dynamické nebo automaticky viditelné.
Poznámka:
Seznam předdefinovaných kontextů uživatelského rozhraní najdete v tématu VSConstants.UICONTEXT.
Pokud chcete otevřít dynamické okno nástroje při spuštění a je možné, že vytvoření selže, musíte implementovat IVsPackageDynamicToolOwnerEx rozhraní a otestovat podmínky selhání v QueryShowTool metodě. Aby prostředí vědělo, že máte dynamické okno nástroje, které by se mělo otevřít při spuštění, musíte k registraci balíčku přidat SupportsDynamicToolOwner
hodnotu (nastavenou na 1). Tato hodnota není součástí standardního atributu PackageRegistrationAttribute, takže je nutné vytvořit vlastní atribut pro jeho přidání. Další informace o vlastních atributech naleznete v tématu Použití atributu vlastní registrace k registraci rozšíření.
Slouží FindToolWindow k otevření okna nástroje. Okno nástroje se vytvoří podle potřeby.
Poznámka:
Uživatel může zavřít okno dynamického nástroje. Pokud chcete vytvořit příkaz nabídky, aby uživatel mohl znovu otevřít okno nástroje, měl by být příkaz nabídky povolen ve stejném kontextu uživatelského rozhraní, který otevře okno nástroje, a jinak zakázáno.
Otevření okna dynamického nástroje
Vytvořte projekt VSIX s názvem DynamicToolWindow a přidejte šablonu položky okna nástroje s názvem DynamicWindowPane.cs. Další informace najdete v tématu Vytvoření rozšíření pomocí okna nástroje.
V souboru DynamicWindowPanePackage.cs vyhledejte deklaraci DynamicWindowPanePackage. Přidejte atributy ProvideToolWindowAttribute ProvideToolWindowVisibilityAttribute pro registraci okna nástroje.
[ProvideToolWindow(typeof(DynamicWindowPane)] [ProvideToolWindowVisibility(typeof(DynamicWindowPane), VSConstants.UICONTEXT.SolutionExists_string)] [PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideMenuResource("Menus.ctmenu", 1)] [ProvideToolWindow(typeof(DynamicToolWindow.DynamicWindowPane))] [Guid(DynamicWindowPanePackage.PackageGuidString)] public sealed class DynamicWindowPanePackage : Package {. . .}
Výše uvedené atributy registrují okno nástroje s názvem DynamicWindowPane jako přechodné okno, které není zachováno při zavření a opětovném otevření sady Visual Studio. DynamicWindowPane se otevře vždy, když SolutionExists_string se použije, a jinak zavře.
Sestavte projekt a spusťte ladění. Měla by se zobrazit experimentální instance. Neměli byste vidět okno nástroje.
Otevřete projekt v experimentální instanci. Mělo by se zobrazit okno nástroje.