Udostępnij za pośrednictwem


Jak: Dodawanie właściwości do rozszerzenia elementu projektu programu SharePoint

Rozszerzenie elementu projektu można użyć, aby dodać właściwość do dowolnego elementu projektu programu SharePoint, która jest już zainstalowana w programie Visual Studio.Właściwość pojawia się w Właściwości okna, gdy jest zaznaczony element projektu w Solution Explorer.

Poniższe informacje dotyczą przypadków zostały już utworzone rozszerzenie elementu projektu.Aby uzyskać więcej informacji, zobacz Jak: tworzenie rozszerzenie elementu projektu programu SharePoint.

Aby dodać właściwość do rozszerzenia element projektu

  1. Definiowanie klasy z własności publicznej, która reprezentuje właściwości, które dodajesz do projektu typu elementu.Jeśli chcesz dodać wiele właściwości do projektu typu elementu, można zdefiniować wszystkie właściwości w tej samej klasie lub w różnych klas.

  2. W Initialize metody na ISharePointProjectItemTypeExtension realizacji, uchwyt ProjectItemPropertiesRequested zdarzenia projectItemType parametru.

  3. W obsłudze zdarzeń dla ProjectItemPropertiesRequested zdarzenia, należy dodać instancję klasy właściwości do PropertySources kolekcji parametr argumenty zdarzeń.

Przykład

Poniższy przykład kodu demonstruje, jak dodać właściwość o nazwie Przykładzie właściwość do elementu projektu odbiorcy zdarzeń.

Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint

Namespace Contoso.Examples.ProjectItemExtensionWithProperty

    <Export(GetType(ISharePointProjectItemTypeExtension))> _
    <SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")> _
    Friend Class ExampleProjectItemExtensionWithProperty
        Implements ISharePointProjectItemTypeExtension

        Private Sub Initialize(ByVal projectItemType As ISharePointProjectItemType) _
            Implements ISharePointProjectItemTypeExtension.Initialize
            AddHandler projectItemType.ProjectItemPropertiesRequested, AddressOf ProjectItemPropertiesRequested
        End Sub

        Private Sub ProjectItemPropertiesRequested(ByVal Sender As Object,
            ByVal e As SharePointProjectItemPropertiesRequestedEventArgs)
            Dim propertyObject As CustomProperties = Nothing

            ' If the properties object already exists, get it from the project item's annotations.
            If False = e.ProjectItem.Annotations.TryGetValue(propertyObject) Then
                ' Otherwise, create a new properties object and add it to the annotations.
                propertyObject = New CustomProperties(e.ProjectItem)
                e.ProjectItem.Annotations.Add(propertyObject)
            End If
            e.PropertySources.Add(propertyObject)
        End Sub
    End Class

    Friend Class CustomProperties
        Private projectItem As ISharePointProjectItem

        Friend Sub New(ByVal projectItem As ISharePointProjectItem)
            Me.projectItem = projectItem
        End Sub

        Private Const TestPropertyId As String = "Contoso.ExampleProperty"
        Private Const PropertyDefaultValue As String = "This is an example property."

        <DisplayName("Example Property")> _
        <DescriptionAttribute("This is an example property for project items.")> _
        <DefaultValue(PropertyDefaultValue)> _
        Public Property ExampleProperty As String
            Get
                Dim propertyValue As String = Nothing

                ' Get the current property value if it already exists; otherwise, return a default value.
                If False = projectItem.ExtensionData.TryGetValue(TestPropertyId, propertyValue) Then
                    propertyValue = PropertyDefaultValue
                End If
                Return propertyValue
            End Get
            Set(ByVal value As String)
                If value <> PropertyDefaultValue Then
                    ' Store the property value in the ExtensionData property of the project item.
                    ' Data in the ExtensionData property persists when the project is closed.
                    projectItem.ExtensionData(TestPropertyId) = value
                Else
                    ' Do not save the default value.
                    projectItem.ExtensionData.Remove(TestPropertyId)
                End If
            End Set
        End Property
    End Class
End Namespace
using System;
using System.ComponentModel;
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;

namespace Contoso.Examples.ProjectItemExtensionWithProperty
{
    [Export(typeof(ISharePointProjectItemTypeExtension))]
    [SharePointProjectItemType("Microsoft.VisualStudio.SharePoint.EventHandler")]
    internal class ExampleProjectItemExtensionWithProperty : ISharePointProjectItemTypeExtension
    {
        public void Initialize(ISharePointProjectItemType projectItemType)
        {
            projectItemType.ProjectItemPropertiesRequested += 
                projectItemType_ProjectItemPropertiesRequested;
        }

        void projectItemType_ProjectItemPropertiesRequested(object sender, 
            SharePointProjectItemPropertiesRequestedEventArgs e)
        {
            CustomProperties propertyObject;

            // If the properties object already exists, get it from the project item's annotations.
            if (!e.ProjectItem.Annotations.TryGetValue(out propertyObject))
            {
                // Otherwise, create a new properties object and add it to the annotations.
                propertyObject = new CustomProperties(e.ProjectItem);
                e.ProjectItem.Annotations.Add(propertyObject);
            }

            e.PropertySources.Add(propertyObject);
        }
    }

    internal class CustomProperties
    {
        private ISharePointProjectItem projectItem;

        internal CustomProperties(ISharePointProjectItem projectItem)
        {
            this.projectItem = projectItem;
        }

        private const string PropertyId = "Contoso.ExampleProperty";
        private const string PropertyDefaultValue = "This is an example property.";

        [DisplayName("Example Property")]
        [DescriptionAttribute("This is an example property for project items.")]
        [DefaultValue(PropertyDefaultValue)]
        public string ExampleProperty
        {
            get
            {
                string propertyValue;

                // Get the current property value if it already exists; otherwise, return a default value.
                if (!projectItem.ExtensionData.TryGetValue(PropertyId, out propertyValue))
                {
                    propertyValue = PropertyDefaultValue;
                }
                return propertyValue;
            }
            set
            {
                if (value != PropertyDefaultValue)
                {
                    // Store the property value in the ExtensionData property of the project item. 
                    // Data in the ExtensionData property persists when the project is closed.
                    projectItem.ExtensionData[PropertyId] = value;
                }
                else
                {
                    // Do not save the default value.
                    projectItem.ExtensionData.Remove(PropertyId);
                }
            }
        }
    }
}

Ee471435.collapse_all(pl-pl,VS.110).gifOpis kodu

W celu zapewnienia, że ta sama instancja CustomProperties klasa jest używana przy każdym ProjectItemPropertiesRequested zdarzenie, przykładowy kod dodaje obiekt właściwości do Annotations właściwość czasu pozycja pierwszego projektu, zdarzenie to występuje.Kod pobiera tego obiektu, w każdym przypadku, gdy to zdarzenie wystąpi ponownie.Aby uzyskać więcej informacji na temat za pomocą Annotations właściwość, aby skojarzyć dane z elementów projektu, zobacz Kojarzenie danych niestandardowy z rozszerzeniami narzędzia programu SharePoint.

Aby utrwalić zmiany wartości właściwości set akcesora dla ExampleProperty zapisuje nową wartość do ExtensionData właściwość ISharePointProjectItem obiekt, który jest skojarzony właściwość.Aby uzyskać więcej informacji na temat za pomocą ExtensionData właściwość, aby utrwalić danych z elementami projektu, zobacz Zapisywanie danych w rozszerzeniach systemu projektu programu SharePoint.

Ee471435.collapse_all(pl-pl,VS.110).gifOkreślanie zachowania właściwości niestandardowe

Można zdefiniować sposób właściwości niestandardowych i zachowaniem w Właściwości okno poprzez stosowanie atrybutów z System.ComponentModel obszaru nazw do definicji property.Następujące atrybuty są przydatne w wielu scenariuszach:

  • DisplayNameAttribute: Określa nazwę właściwości, która pojawia się w Właściwości okna.

  • DescriptionAttribute: Określa ciąg opisu, który pojawia się w dolnej części Właściwości okna, gdy właściwość jest wybrana.

  • DefaultValueAttribute: Określa wartość domyślną właściwości.

  • TypeConverterAttribute: Określa niestandardowe konwersji między ciąg, który jest wyświetlany w Właściwości okna i wartość właściwości nie będących ciągami.

  • EditorAttribute: Określa niestandardowe edytora użyć do modyfikowania właściwości.

Kompilowanie kodu

Przykłady te wymagają projektu biblioteki klas z odniesieniem do następujących zestawów:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

Wdrażanie rozszerzenia

Aby wdrożyć rozszerzenia, tworzenie Visual Studio extension (VSIX) pakiet Zgromadzenia i inne pliki, które chcesz dystrybuować z rozszerzeniem.Aby uzyskać więcej informacji, zobacz Wdrażanie rozszerzeń dla narzędzia programu SharePoint w programie Visual Studio.

Zobacz też

Zadania

Instruktaż: Rozszerzenie typu element projektu programu SharePoint

Koncepcje

Jak: tworzenie rozszerzenie elementu projektu programu SharePoint

Jak: Dodaj element Menu skrótów do rozszerzenia elementu projektu programu SharePoint

Rozszerzanie elementy projektu programu SharePoint