동적 도구 창 열기
도구 창은 일반적으로 메뉴의 명령 또는 해당하는 바로 가기 키에서 열립니다. 그러나 특정 UI 컨텍스트가 적용될 때마다 열리고 UI 컨텍스트가 더 이상 적용되지 않을 때 닫는 도구 창이 필요할 수 있습니다. 이러한 유형의 도구 창을 동적 또는 자동 표시라고 합니다.
참고 항목
미리 정의된 UI 컨텍스트 목록은 VSConstants.UICONTEXT를 참조하세요.
시작할 때 동적 도구 창을 열려고 하며 생성에 실패할 수 있는 경우 IVsPackageDynamicToolOwnerEx 인터페이스를 구현하고 QueryShowTool 메서드에서 실패 조건을 테스트해야 합니다. 셸이 시작할 때 열어야 하는 동적 도구 창이 있음을 알려면 패키지 등록에 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 {. . .}
위의 특성은 Visual Studio를 닫고 다시 열 때 유지되지 않는 임시 창으로 DynamicWindowPane이라는 도구 창을 등록합니다. DynamicWindowPane은 SolutionExists_string이 적용될 때마다 열리고, 그렇지 않으면 닫힙니다.
프로젝트를 빌드하고 디버깅을 시작합니다. 실험적 인스턴스가 나타납니다. 도구 창이 표시되지 않습니다.
실험적 인스턴스에서 프로젝트를 엽니다. 도구 창이 나타납니다.