Freigeben über


Gewusst wie: Hinzufügen eines Kontextmenüelements zu einer SharePoint-Projektelementerweiterung

Sie können einem vorhandenen SharePoint-Projektelement mithilfe einer Projektelementerweiterung ein Kontextmenüelement hinzufügen. Das Menüelement wird angezeigt, wenn der Benutzer im Projektmappen-Explorer mit der rechten Maustaste auf das Projektelement klickt.

Im Folgenden wird angenommen, dass bereits eine Projektelementerweiterung erstellt wurde. Weitere Informationen erhalten Sie unter Gewusst wie: Erstellen einer SharePoint-Projektelementerweiterung.

So fügen Sie ein Kontextmenüelement einer Projektelementerweiterung hinzu

  1. Bearbeiten Sie in der Initialize-Methode Ihrer ISharePointProjectItemTypeExtension-Implementierung das ProjectItemMenuItemsRequested-Ereignis des projectItemType-Parameters.

  2. Fügen Sie im Ereignishandler für das ProjectItemMenuItemsRequested-Ereignis der ViewMenuItems- oder AddMenuItems-Auflistung des Parameters für Ereignisargumente ein neues IMenuItem-Objekt hinzu.

  3. Führen Sie im Click-Ereignishandler für das neue IMenuItem-Objekt die Aufgaben aus, die ausgeführt werden sollen, wenn ein Benutzer auf das Kontextmenüelement klickt.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie dem Ereignisempfänger-Projektelement ein Kontextmenüelement hinzugefügt wird. Wenn der Benutzer im Projektmappen-Explorer mit der rechten Maustaste auf das Projektelement klickt und das Menüelement Write Message to Output Window auswählt, zeigt Visual Studio im Fenster Ausgabe eine Meldung an.

Imports System
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint

Namespace Contoso.Examples.ProjectItemExtensionWithMenu

    <Export(GetType(ISharePointProjectItemTypeExtension))> _
    <SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")> _
    Friend Class ExampleProjectItemExtensionWithMenu
        Implements ISharePointProjectItemTypeExtension

        Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
            Implements ISharePointProjectItemTypeExtension.Initialize
            AddHandler projectItemType.ProjectItemMenuItemsRequested, AddressOf ProjectItemMenuItemsRequested
        End Sub

        Private Sub ProjectItemMenuItemsRequested(ByVal Sender As Object,
            ByVal e As SharePointProjectItemMenuItemsRequestedEventArgs)
            Dim menuItem As IMenuItem = e.ViewMenuItems.Add("Write Message to Output Window")
            AddHandler menuItem.Click, AddressOf MenuItem_Click
        End Sub

        Private Sub MenuItem_Click(ByVal Sender As Object, ByVal e As MenuItemEventArgs)
            Dim projectItem As ISharePointProjectItem = CType(e.Owner, ISharePointProjectItem)
            projectItem.Project.ProjectService.Logger.WriteLine(
                String.Format("This message was written from a shortcut menu for {0}.", projectItem.Name),
                LogCategory.Status)
        End Sub
    End Class
End Namespace
using System;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;

namespace Contoso.Examples.ProjectItemExtensionWithMenu
{
    [Export(typeof(ISharePointProjectItemTypeExtension))]
    [SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")]
    internal class ExampleProjectItemExtensionWithMenu : ISharePointProjectItemTypeExtension
    {
        public void Initialize(ISharePointProjectItemType projectItemType)
        {
            projectItemType.ProjectItemMenuItemsRequested += projectItemType_ProjectItemMenuItemsRequested;
        }

        void projectItemType_ProjectItemMenuItemsRequested(object sender, 
            SharePointProjectItemMenuItemsRequestedEventArgs e)
        {
            IMenuItem menuItem = e.ViewMenuItems.Add("Write Message to Output Window");
            menuItem.Click += MenuItemExtension_Click;
        }

        void MenuItemExtension_Click(object sender, MenuItemEventArgs e)
        {
            ISharePointProjectItem projectItem = (ISharePointProjectItem)e.Owner;
            projectItem.Project.ProjectService.Logger.WriteLine(
                String.Format("This message was written from a shortcut menu for {0}.", projectItem.Name), 
                LogCategory.Status);
        }
    }
}

In diesem Beispiel wird der SharePoint-Projektdienst verwendet, um die Nachricht in das Fenster Ausgabe zu schreiben. Weitere Informationen finden Sie unter Verwenden des SharePoint-Projektdiensts.

Kompilieren des Codes

Für dieses Beispiel ist ein Klassenbibliotheksprojekt mit Verweisen auf die folgenden Assemblys erforderlich:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Bereitstellen der Erweiterung

Erstellen Sie ein Visual Studio-Erweiterungspaket (VSIX) für die Assembly und alle weiteren Dateien, die Sie mit der Erweiterung verteilen möchten, um die Erweiterung bereitzustellen. Weitere Informationen finden Sie unter Bereitstellen von Erweiterungen für die SharePoint-Tools in Visual Studio.

Siehe auch

Aufgaben

Gewusst wie: Erstellen einer SharePoint-Projektelementerweiterung

Exemplarische Vorgehensweise: Erweitern eines SharePoint-Elementtyps

Weitere Ressourcen

Gewusst wie: Hinzufügen einer Eigenschaft zu einer SharePoint-Projektelementerweiterung

Erweitern von SharePoint-Projektelementen