Jak: přidání vlastnosti do rozšíření položky služby SharePoint projektu
Můžete použít rozšíření položky projektu k přidání vlastnosti k jakékoli položce projektu SharePoint, který je již nainstalován v aplikaci Visual Studio.Vlastnost se zobrazí v okně Vlastnosti při výběru položky projektu v Průzkumníku řešení.
Následující postup předpokládá, že jste již vytvořili rozšíření položky projektu.Další informace naleznete v tématu Jak: vytvoření rozšíření položky služby SharePoint projektu.
Chcete-li přidat vlastnost do rozšíření projektu SharePoint
Definujte třídu s veřejnou vlastností, která představuje vlastnost, kterou přidáváte do vlastního typu položky projektu.Pokud chcete přidat více vlastností do typu položky projektu, můžete definovat všechny vlastnosti ve stejné třídě nebo v různých třídách.
V metodě Initialize vaší implementace ISharePointProjectItemTypeExtension zpracujte událost ProjectItemPropertiesRequested parametru projectItemType.
V obslužné rutině pro událost ProjectItemPropertiesRequested přidejte instanci třídy vašich vlastních vlastností do kolekce PropertySources parametru argumentů události.
Příklad
Následující příklad kódu ukazuje, jak lze přidat vlastnost s názvem Příklad vlastnosti do položky projektu přijímač událostí.
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);
}
}
}
}
}
Principy kódu
Zajistit stejnou instanci CustomProperties třída je použita při každém ProjectItemPropertiesRequested dojde k události, například kód přidá vlastnosti objektu Annotations vlastnost čas první položky projektu dojde k této události.Kód načte tento objekt kdykoli znovu dojde k této události.Další informace o použití Annotations vlastnost přidružit data položky projektu, viz Přidružení dat vlastní rozšíření nástroje služby SharePoint.
Pro zachování změn hodnoty vlastnosti přistupujícího objektu set pro ExampleProperty uloží nové hodnoty do vlastnosti ExtensionData objektu ISharePointProjectItem, který je s vlastností přidružen.Další informace o použití vlastnosti ExtensionData pro uložení dat s položkami projektu naleznete v tématu Uložení dat v rozšíření systému SharePoint projektu.
Určení chování vlastních vlastností
Můžete definovat, jak se zobrazí vlastní vlastnosti a chovají v okně Vlastnosti použitím atributů z oboru názvů System.ComponentModel pro definování vlastnosti.Následující atributy jsou užitečné v mnoha scénářích:
DisplayNameAttribute: Určuje název vlastnosti, která se zobrazuje v okně Vlastnosti.
DescriptionAttribute: Určuje řetězec popisu, který se zobrazí v dolní části okna Vlastnosti v případě, že je vlastnost vybrána.
DefaultValueAttribute: Určuje výchozí hodnotu této vlastnosti.
TypeConverterAttribute: Určuje vlastní převod mezi řetězcem, který se zobrazí v okně Vlastnosti a ne-řetězcové hodnotě vlastnosti.
EditorAttribute: Určuje vlastní editor použitý pro změny vlastnosti.
Probíhá kompilace kódu
Tyto příklady vyžadují projekt knihovny tříd s odkazy na následující sestavení:
Microsoft.VisualStudio.SharePoint
System.ComponentModel.Composition
Nasazování rozšíření
Chcete-li nasadit rozšíření, vytvořte Visual Studio balíček rozšíření (VSIX) pro sestavení a všechny další soubory, které chcete distribuovat s rozšířením.Další informace naleznete v tématu Nasazování rozšíření pro nástroje služby SharePoint v aplikaci Visual Studio.
Viz také
Úkoly
Názorný postup: Rozšíření typ položky služby SharePoint projektu
Koncepty
Jak: vytvoření rozšíření položky služby SharePoint projektu
Jak: rozšíření položky služby SharePoint projektu přidat položky místní nabídky