共用方式為


開啟動態工具視窗

工具視窗通常會從功能表上的命令或對等的鍵盤快速鍵開啟。 不過,有時候您可能需要工具視窗在套用特定 UI 內容時開啟,並在 UI 內容不再套用時關閉。 這些類型的工具視窗稱為動態自動顯示

注意

如需預先定義的 UI 內容清單,請參閱VSConstants.UICONTEXT

如果您想要在啟動時開啟動態工具視窗,而且建立可能會失敗,則必須實作 IVsPackageDynamicToolOwnerEx 介面,並在 QueryShowTool 方法中測試失敗狀況。 為了讓殼層知道您有應在啟動時開啟的動態工具視窗,您必須將值 (設定為 1) 新增 SupportsDynamicToolOwner 值 (設為 1) 至套件註冊。 此值不是標準 PackageRegistrationAttribute 的一部分,因此您必須建立自訂屬性以新增值。 如需自訂屬性的詳細資訊,請參閱使用自訂註冊屬性來登錄延伸模組

使用 FindToolWindow 開啟工具視窗。 會視需要建立工具視窗。

注意

使用者可以關閉動態工具視窗。 如果想要建立功能表命令,讓使用者可以重新開啟工具視窗,則應該在開啟工具視窗的相同 UI 內容中啟用功能表命令,否則停用。

若要開啟動態工具視窗

  1. 建立名為 DynamicToolWindow 的 VSIX 專案,並新增名為 DynamicWindowPane.cs 的工具視窗項目範本。 如需詳細資訊,請參閱使用工具視窗建立延伸模組

  2. DynamicWindowPanePackage.cs 檔案中尋找 DynamicWindowPanePackage 宣告。 新增 ProvideToolWindowAttributeProvideToolWindowVisibilityAttribute 屬性以註冊工具視窗。

    [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
    {. . .}
    

    上述屬性會將名為 DynamicWindowPane 的工具窗口註冊為在 Visual Studio 關閉並重新開啟時不會持續保存的暫時視窗。 DynamicWindowPane 會在套用 SolutionExists_string 時開啟,否則會關閉。

  3. 建置此專案並開始偵錯。 應該會出現實驗執行個體。 您不應該會看到工具視窗。

  4. 在實驗執行個體中開啟專案。 應該會出現工具視窗。