Cómo: Agregar un elemento de menú contextual a un tipo de elemento de proyecto personalizado de SharePoint
Al definir un tipo de elemento del proyecto de SharePoint personalizado, puede agregar un elemento de menú contextual al 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 supone que ha definido un tipo de elemento de proyecto de SharePoint.Para obtener más información, vea Cómo: Definir un tipo de elemento de proyecto de SharePoint.
Para agregar un elemento de menú contextual a un tipo de elemento de proyecto personalizado
En el método InitializeType de la implementación de ISharePointProjectItemTypeProvider controle el evento ProjectItemMenuItemsRequested del parámetro projectItemTypeDefinition.
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 para el nuevo objeto IMenuItem , realice las tareas que desee ejecutar cuando el usuario elige el elemento de menú contextual.
Ejemplo
En el siguiente ejemplo de código se muestra cómo agregar un elemento de menú contextual a un tipo de elemento de proyecto personalizado.Cuando el usuario abre el menú contextual del elemento de proyecto en Explorador de soluciones y elija el elemento de menú Mensaje de escritura a la ventana de resultados , Visual Studio muestra un mensaje en la ventana Resultados .
Imports System
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint
Namespace Contoso.Examples.ProjectItemTypeWithMenu
<Export(GetType(ISharePointProjectItemTypeProvider))> _
<SharePointProjectItemType("Contoso.ExampleProjectItemType")> _
<SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")> _
Friend Class ExampleProjectItemTypeWithMenu
Implements ISharePointProjectItemTypeProvider
Private Sub InitializeType(ByVal projectItemTypeDefinition As ISharePointProjectItemTypeDefinition) _
Implements ISharePointProjectItemTypeProvider.InitializeType
projectItemTypeDefinition.Name = "ExampleProjectItemType"
projectItemTypeDefinition.SupportedDeploymentScopes = _
SupportedDeploymentScopes.Site Or SupportedDeploymentScopes.Web
projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All
AddHandler projectItemTypeDefinition.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.ProjectItemTypeWithMenu
{
[Export(typeof(ISharePointProjectItemTypeProvider))]
[SharePointProjectItemType("Contoso.ExampleProjectItemType")]
[SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")]
internal class ExampleProjectItemTypeWithMenu : ISharePointProjectItemTypeProvider
{
public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition)
{
projectItemTypeDefinition.Name = "ExampleProjectItemType";
projectItemTypeDefinition.SupportedDeploymentScopes =
SupportedDeploymentScopes.Site | SupportedDeploymentScopes.Web;
projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All;
projectItemTypeDefinition.ProjectItemMenuItemsRequested +=
projectItemTypeDefinition_ProjectItemMenuItemsRequested;
}
void projectItemTypeDefinition_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 el elemento de proyecto
Para permitir que otros desarrolladores usen el elemento de proyecto, cree una plantilla de proyecto o una plantilla de elemento de proyecto.Para obtener más información, vea Crear plantillas de elemento y plantillas de proyecto para los elementos de proyecto de SharePoint.
Para implementar el elemento de proyecto, cree un paquete de extensión (VSIX) de Visual Studio para el ensamblado, la plantilla y cualquier otro archivo que desee distribuir con el elemento de proyecto.Para obtener más información, vea Extensiones de implementación para las Herramientas de SharePoint en Visual Studio.
Vea también
Conceptos
Cómo: Definir un tipo de elemento de proyecto de SharePoint
Cómo: Agregar una propiedad a un tipo de elemento de proyecto personalizado de SharePoint
Definir tipos de elementos de proyecto personalizados de SharePoint