Freigeben über


Öffnen eines dynamischen Toolfensters

Toolfenster werden in der Regel über einen Befehl in einem Menü oder eine entsprechende Tastenkombination geöffnet. Manchmal benötigen Sie jedoch möglicherweise ein Toolfenster, das immer dann geöffnet wird, wenn ein bestimmter Benutzeroberflächenkontext angewendet wird, und geschlossen wird, wenn der Ui-Kontext nicht mehr angewendet wird. Diese Arten von Toolfenstern werden als dynamisch oder automatisch sichtbar bezeichnet.

Hinweis

Eine Liste der vordefinierten UI-Kontexte finden Sie unter VSConstants.UICONTEXT.

Wenn Sie ein dynamisches Toolfenster beim Start öffnen möchten und die Erstellung fehlschlägt, müssen Sie die IVsPackageDynamicToolOwnerEx Schnittstelle implementieren und die Fehlerbedingungen in der QueryShowTool Methode testen. Damit die Shell weiß, dass Sie über ein dynamisches Toolfenster verfügen, das beim Start geöffnet werden soll, müssen Sie der Paketregistrierung den SupportsDynamicToolOwner Wert (auf 1 festgelegt) hinzufügen. Dieser Wert ist nicht Teil des Standards PackageRegistrationAttribute, daher müssen Sie ein benutzerdefiniertes Attribut erstellen, um ihn hinzuzufügen. Weitere Informationen zu benutzerdefinierten Attributen finden Sie unter Verwenden eines benutzerdefinierten Registrierungsattributes zum Registrieren einer Erweiterung.

Wird FindToolWindow verwendet, um ein Toolfenster zu öffnen. Das Toolfenster wird nach Bedarf erstellt.

Hinweis

Ein dynamisches Toolfenster kann vom Benutzer geschlossen werden. Wenn Sie einen Menübefehl erstellen möchten, damit der Benutzer das Toolfenster erneut öffnen kann, sollte der Menübefehl im gleichen Benutzeroberflächenkontext aktiviert sein, in dem das Toolfenster geöffnet und andernfalls deaktiviert wird.

So öffnen Sie ein dynamisches Toolfenster

  1. Erstellen Sie ein VSIX-Projekt mit dem Namen DynamicToolWindow , und fügen Sie eine Toolfensterelementvorlage namens "DynamicWindowPane.cs" hinzu. Weitere Informationen finden Sie unter Erstellen einer Erweiterung mit einem Toolfenster.

  2. Suchen Sie in der Datei "DynamicWindowPanePackage.cs " die Deklaration "DynamicWindowPanePackage". Fügen Sie die ProvideToolWindowAttribute Attribute hinzu ProvideToolWindowVisibilityAttribute , um das Toolfenster zu registrieren.

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

    Die oben stehenden Attribute registrieren das Toolfenster mit dem Namen DynamicWindowPane als vorübergehendes Fenster, das beim Schließen und erneuten Öffnen von Visual Studio nicht beibehalten wird. DynamicWindowPane wird bei jeder Anwendung SolutionExists_string geöffnet und andernfalls geschlossen.

  3. Erstellen Sie das Projekt, und starten Sie das Debugging. Die experimentelle Instanz sollte angezeigt werden. Das Toolfenster sollte nicht angezeigt werden.

  4. Öffnen Sie ein Projekt in der experimentellen Instanz. Das Toolfenster sollte angezeigt werden.