開啟動態工具視窗
工具視窗通常會從功能表上的命令或對等的鍵盤快速鍵開啟。 不過,有時候您可能需要工具視窗在套用特定 UI 內容時開啟,並在 UI 內容不再套用時關閉。 這些類型的工具視窗稱為動態或自動顯示。
注意
如需預先定義的 UI 內容清單,請參閱VSConstants.UICONTEXT。
如果您想要在啟動時開啟動態工具視窗,而且建立可能會失敗,則必須實作 IVsPackageDynamicToolOwnerEx 介面,並在 QueryShowTool 方法中測試失敗狀況。 為了讓殼層知道您有應在啟動時開啟的動態工具視窗,您必須將值 (設定為 1) 新增 SupportsDynamicToolOwner
值 (設為 1) 至套件註冊。 此值不是標準 PackageRegistrationAttribute 的一部分,因此您必須建立自訂屬性以新增值。 如需自訂屬性的詳細資訊,請參閱使用自訂註冊屬性來登錄延伸模組。
使用 FindToolWindow 開啟工具視窗。 會視需要建立工具視窗。
注意
使用者可以關閉動態工具視窗。 如果想要建立功能表命令,讓使用者可以重新開啟工具視窗,則應該在開啟工具視窗的相同 UI 內容中啟用功能表命令,否則停用。
若要開啟動態工具視窗
建立名為 DynamicToolWindow 的 VSIX 專案,並新增名為 DynamicWindowPane.cs 的工具視窗項目範本。 如需詳細資訊,請參閱使用工具視窗建立延伸模組。
在 DynamicWindowPanePackage.cs 檔案中尋找 DynamicWindowPanePackage 宣告。 新增 ProvideToolWindowAttribute 和 ProvideToolWindowVisibilityAttribute 屬性以註冊工具視窗。
[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 時開啟,否則會關閉。
建置此專案並開始偵錯。 應該會出現實驗執行個體。 您不應該會看到工具視窗。
在實驗執行個體中開啟專案。 應該會出現工具視窗。