Postupy: Přidání vlastnosti do rozšíření položky projektu SharePoint
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 Postupy: Vytváření rozšíření položky projektu SharePoint.
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í vlastních dat k rozšíření nástrojů 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 do rozšíření systému projektu služby SharePoint.
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ávod: Rozšiřování typu položky projektu SharePoint
Koncepty
Postupy: Vytváření rozšíření položky projektu SharePoint
Postupy: Přidání položky místní nabídky do rozšíření položky projektu služby SharePoint