Partilhar via


Como: adiciona um Item de Menu de atalho para um tipo de Item de projeto do SharePoint personalizado

Quando você define um tipo de item de projeto personalizado do SharePoint, você pode adicionar um item de menu de atalho para o item de projeto.O item de menu aparece quando um usuário clicar com o botão direito no item de projeto em Gerenciador de Soluções.

As seguintes etapas presumem que você já definiu seu próprio tipo de item de projeto do SharePoint.Para obter mais informações, consulte Como: definir um tipo de Item de projeto do SharePoint.

Para adicionar um item de menu de atalho para um tipo de item de projeto personalizado

  1. Em o método de InitializeType de sua implementação de ISharePointProjectItemTypeProvider , manipule o evento de ProjectItemMenuItemsRequested de parâmetro de projectItemTypeDefinition .

  2. Em o manipulador de eventos para o evento de ProjectItemMenuItemsRequested , adicione um novo objeto de IMenuItem à coleção de ViewMenuItems ou de AddMenuItems de parâmetro de argumentos de evento.

  3. Em o manipulador de eventos de Click para o novo objeto de IMenuItem , executar as tarefas que você deseja executar quando um usuário escolher o item de menu de atalho.

Exemplo

O exemplo de código a seguir demonstra como adicionar um item de menu de contexto a um tipo de item de projeto personalizado.Quando o usuário abre o menu de atalho do item de projeto em Gerenciador de Soluções e escolhe o item de menu Mensagem de gravação para a janela de saída , o Visual Studio exibe uma mensagem na janela de Saída .

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);
        }
    }
}

Este exemplo usa o serviço de projeto do SharePoint para gravar a mensagem para a janela de Saída .Para obter mais informações, consulte Usando o serviço de projeto do SharePoint.

Compilando o código

Esse exemplo requer um projeto de biblioteca de classes com referências para os seguintes conjuntos de módulos (assemblies):

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Implantando o item de projeto

Para ativar outros desenvolvedores para usar o item de projeto, crie um modelo de projeto ou um modelo de item de projeto.Para obter mais informações, consulte Criando modelos de Item e projeto para itens de projeto do SharePoint.

Para implantar o item de projeto, crie um pacote de extensão de Visual Studio (VSIX) para o assembly, o modelo, e todos os outros arquivos que você deseja distribuir com o item de projeto.Para obter mais informações, consulte Implantação de extensões para as ferramentas de SharePoint no Visual Studio.

Consulte também

Conceitos

Como: definir um tipo de Item de projeto do SharePoint

Como: adicionar uma propriedade a um tipo de Item de projeto do SharePoint personalizado

Definindo tipos de Item de projeto do SharePoint personalizados