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
Bearbeiten Sie in der Initialize-Methode Ihrer ISharePointProjectItemTypeExtension-Implementierung das ProjectItemMenuItemsRequested-Ereignis des projectItemType-Parameters.
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.
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