How to: Add a shortcut menu item to a SharePoint project item extension (Hinzufügen eines Kontextmenüelements zu SharePoint Projektelementerweiterung)

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

Bei den folgenden Schritten wird davon ausgegangen, dass Sie bereits eine Projektelementerweiterung erstellt haben. Weitere Informationen finden Sie unter How to: Create a SharePoint project item extension.

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

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

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

  3. Führen Sie im Ereignishandler für das neue Objekt die Aufgaben aus, die Sie ausführen möchten, wenn ein Benutzer Click IMenuItem auf das Kontextmenüelement klickt.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie dem Projektelement Ereignisempfänger ein Kontextmenüelement hinzugefügt wird. Wenn der Benutzer mit der rechten Maustaste auf das Projektelement in Projektmappen-Explorer und auf das Menüelement Nachricht in Ausgabefenster schreiben klickt, Visual Studio im Fenster Ausgabe eine Meldung angezeigt.

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 die SharePoint Projekt-Service verwendet, um die Nachricht in das Ausgabefenster zu schreiben. Weitere Informationen finden Sie unter Verwenden der SharePoint Projekt-Service.

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

Um die Erweiterung bereitzustellen, erstellen Sie ein Erweiterungspaket (VSIX) für die Assembly und alle anderen Dateien, die Sie mit Visual Studio der Erweiterung verteilen möchten. Weitere Informationen finden Sie unter Deploy extensions for the SharePoint tools in Visual Studio.

Weitere Informationen