Поделиться через


Практическое руководство. Добавление пункта контекстного меню в расширение элемента проекта SharePoint

Чтобы добавить пункт контекстного меню в существующий элемент проекта SharePoint, можно воспользоваться расширением элемента проекта.Этот пункт меню отображается, когда пользователь щелкает правой кнопкой мыши элемент проекта в Обозревателе решений.

В описании следующих действий предполагается, что расширение элемента проекта уже создано.Дополнительные сведения см. в разделе Практическое руководство. Создание расширения элемента проекта SharePoint.

Добавление пункта контекстного меню в расширение элемента проекта

  1. В методе Initialize реализации ISharePointProjectItemTypeExtension обработайте событие ProjectItemMenuItemsRequested параметра projectItemType.

  2. В обработчике событий для события ProjectItemMenuItemsRequested добавьте новый объект IMenuItem в коллекцию ViewMenuItems или AddMenuItems параметра аргументов события.

  3. Выполните в обработчике событий Click для нового объекта IMenuItem задачи, которые должны выполняться при выборе пользователем пункта контекстного меню.

Пример

В следующем примере кода демонстрируется добавление пункта контекстного меню в элемент проекта приемника событий.Когда пользователь щелкает правой кнопкой мыши элемент проекта в Обозревателе решений и выбирает пункт меню Написать сообщение в окно выходных данных, Visual Studio отображает сообщение в окне Выходные данные.

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

В этом примере используется служба проекта SharePoint для записи сообщения в окно Выходные данные.Дополнительные сведения см. в разделе Использование службы проектов SharePoint.

Компиляция кода

Для этого примера требуется проект библиотеки классов со ссылками на следующие сборки:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Развертывание расширения

Чтобы развернуть расширение, создайте пакет расширения Visual Studio (VSIX) для сборки и всех остальных файлов, которые предположительно будут распространяться с расширением.Дополнительные сведения см. в разделе Разработка расширений для средств SharePoint в Visual Studio.

См. также

Задачи

Пошаговое руководство. Расширение типа проектного элемента SharePoint

Основные понятия

Практическое руководство. Создание расширения элемента проекта SharePoint

Практическое руководство. Добавление свойства в расширение элемента проекта SharePoint

Расширение элементов проектов SharePoint