Cómo: Agregar un elemento de menú contextual a una extensión de elemento de proyecto de SharePoint
Puede agregar un elemento de menú contextual a un elemento de proyecto de SharePoint existente utilizando una extensión de elemento de proyecto.El elemento de menú aparece cuando un usuario hace clic con el botón secundario en el elemento de proyecto en el Explorador de soluciones.
En los siguientes pasos se da por supuesto que ha creado una extensión de elemento de proyecto.Para obtener más información, vea Cómo: Crear una extensión de elemento de proyecto de SharePoint.
Para agregar un elemento de menú contextual en una extensión de elemento de proyecto
En el método Initialize de la implementación ISharePointProjectItemTypeExtension controle el evento ProjectItemMenuItemsRequested del parámetro projectItemType.
En el controlador de eventos del evento ProjectItemMenuItemsRequested, agregue un nuevo objeto IMenuItem a la colección AddMenuItems o ViewMenuItems del parámetro de argumentos del evento.
En el controlador de eventos Click del nuevo objeto IMenuItem, lleve a cabo las tareas que desee ejecutar cuando un usuario haga clic en el elemento de menú contextual.
Ejemplo
En el ejemplo de código siguiente se muestra cómo crear un elemento de menú contextual para el elemento de proyecto Receptor de eventos.Cuando el usuario hace clic con el botón secundario en el elemento de proyecto en el Explorador de soluciones y, después, hace clic en el elemento de menú Escribir mensaje en la Ventana de salida, Visual Studio muestra un mensaje en la Ventana de salida.
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);
}
}
}
En este ejemplo se usa el servicio de proyecto de SharePoint para escribir el mensaje en la Ventana de salida.Para obtener más información, vea Utilizar el servicio de proyecto de SharePoint.
Compilar el código
En este ejemplo se necesita un proyecto de biblioteca de clases con referencias a los siguientes ensamblados:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
Implementar la extensión
Para implementar la extensión, cree un paquete de extensión (VSIX) de Visual Studio para el ensamblado y el resto de archivos que desee distribuir con la extensión.Para obtener más información, vea Extensiones de implementación para las Herramientas de SharePoint en Visual Studio.
Vea también
Tareas
Tutorial: Extender un tipo de elemento de proyecto de SharePoint
Conceptos
Cómo: Crear una extensión de elemento de proyecto de SharePoint
Cómo: Agregar una propiedad a una extensión de elemento de proyecto de SharePoint