Jak: Dodawanie właściwości do niestandardowy typ elementu projektu programu SharePoint
Podczas definiowania niestandardowych typu element projektu programu SharePoint można dodać właściwość do elementu projektu.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ż zdefiniowane własne typu element projektu programu SharePoint.Aby uzyskać więcej informacji, zobacz Jak: definiowanie typu element projektu programu SharePoint.
Aby dodać właściwość do definicji typu element projektu
Definiowanie klasy z publicznych właściwość, która reprezentuje właściwość dodawanego do projektu niestandardowego typu elementu.Jeśli chcesz dodać wiele właściwości typu element projektu niestandardowe, można zdefiniować wszystkie właściwości w tej samej klasie lub w różnych klas.
W InitializeType metody na ISharePointProjectItemTypeProvider realizacji, uchwyt ProjectItemPropertiesRequested zdarzenia projectItemTypeDefinition parametru.
W obsłudze zdarzeń dla ProjectItemPropertiesRequested zdarzenie, dodać instancję klasy niestandardowej 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 niestandardowego elementu typu projektu.
Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint
Namespace Contoso.Examples.ProjectItemTypeWithProperty
<Export(GetType(ISharePointProjectItemTypeProvider))> _
<SharePointProjectItemType("Contoso.ExampleProjectItemType")> _
<SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")> _
Friend Class ExampleProjectItemTypeWithProperty
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.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.ProjectItemTypeWithProperty
{
[Export(typeof(ISharePointProjectItemTypeProvider))]
[SharePointProjectItemType("Contoso.ExampleProjectItemType")]
[SharePointProjectItemIcon("ExampleProjectItemType.ProjectItemIcon.ico")]
internal class ExampleProjectItemTypeWithProperty : ISharePointProjectItemTypeProvider
{
public void InitializeType(ISharePointProjectItemTypeDefinition projectItemTypeDefinition)
{
projectItemTypeDefinition.Name = "ExampleProjectItemType";
projectItemTypeDefinition.SupportedDeploymentScopes =
SupportedDeploymentScopes.Site | SupportedDeploymentScopes.Web;
projectItemTypeDefinition.SupportedTrustLevels = SupportedTrustLevels.All;
projectItemTypeDefinition.ProjectItemPropertiesRequested +=
projectItemTypeDefinition_ProjectItemPropertiesRequested;
}
void projectItemTypeDefinition_ProjectItemPropertiesRequested(object sender,
SharePointProjectItemPropertiesRequestedEventArgs e)
{
CustomProperties property;
// If the properties object already exists, get it from the project item's annotations.
if (!e.ProjectItem.Annotations.TryGetValue(out property))
{
// Otherwise, create a new properties object and add it to the annotations.
property = new CustomProperties(e.ProjectItem);
e.ProjectItem.Annotations.Add(property);
}
e.PropertySources.Add(property);
}
}
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);
}
}
}
}
}
Opis kodu
W celu zapewnienia, że ta sama instancja CustomProperties klasa jest używana przy każdym ProjectItemPropertiesRequested zdarzenie, przykładowy kod zapisuje właściwości obiektu 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 zapisać dane z elementami 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.
Okreś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
Te przykłady kodu wymagają projektu biblioteki klas z odniesieniem do następujących zestawów:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
Wdrażanie element projektu
Aby włączyć innych deweloperów do używania element projektu, należy utworzyć szablon projektu lub szablonu elementu projektu.Aby uzyskać więcej informacji, zobacz Tworzenie elementu szablonów i szablony projektu dla elementów projektu programu SharePoint.
Aby wdrożyć elementu projektu, należy utworzyć Visual Studio extension (VSIX) pakiet Zgromadzenia, szablon i inne pliki, które chcesz dystrybuować z elementem projektu.Aby uzyskać więcej informacji, zobacz Wdrażanie rozszerzeń dla narzędzia programu SharePoint w programie Visual Studio.
Zobacz też
Koncepcje
Jak: definiowanie typu element projektu programu SharePoint
Jak: Dodaj element Menu skrótów na niestandardowy typ elementu projektu programu SharePoint
Definiowanie typów elementów projektu programu SharePoint niestandardowe