Použití kontextu úprav ModelItem
Kontext ModelItem úprav je objekt, který hostitelská aplikace používá ke komunikaci s návrhářem. EditingContext zveřejňuje dvě metody a ItemsServices, které lze použít
Kolekce Položky
Kolekce Items se používá pro přístup k datům sdíleným mezi hostitelem a návrhářem nebo daty, která jsou k dispozici všem návrhářům. Tato kolekce má následující možnosti, ke které se přistupuje prostřednictvím ContextItemManager třídy:
Kolekce Služeb
Kolekce Services se používá pro přístup ke službám, které návrhář používá k interakci s hostitelem, nebo ke službám, které používají všichni návrháři. Tato kolekce obsahuje následující metody:
Přiřazení aktivity návrháře
Chcete-li určit, který návrhář používá aktivitu, je použit atribut Návrhář.
[Designer(typeof(MyClassDesigner))]
public sealed class MyClass : CodeActivity
{
}
Vytvoření služby
Chcete-li vytvořit službu, která slouží jako spojení informací mezi návrhářem a hostitelem, je nutné vytvořit rozhraní a implementaci. Rozhraní se používá metodou Publish k definování členů služby a implementace obsahuje logiku pro službu. V následujícím příkladu kódu se vytvoří rozhraní služby a implementace.
public interface IMyService
{
IEnumerable<string> GetValues(string DisplayName);
}
public class MyServiceImpl : IMyService
{
public IEnumerable<string> GetValues(string DisplayName)
{
return new string[] {
DisplayName + " One",
DisplayName + " Two",
"Three " + DisplayName
} ;
}
}
Publikování služby
Aby návrhář používal službu, musí ji nejprve publikovat hostitel pomocí Publish této metody.
this.Context.Services.Publish<IMyService>(new MyServiceImpl);
Přihlášení k odběru služby
Návrhář získá přístup ke službě pomocí Subscribe metody v OnModelItemChanged metodě. Následující fragment kódu ukazuje, jak se přihlásit k odběru služby.
protected override void OnModelItemChanged(object newItem)
{
if (!subscribed)
{
this.Context.Services.Subscribe<IMyService>(
servInstance =>
{
listBox1.ItemsSource = servInstance.GetValues(this.ModelItem.Properties["DisplayName"].ComputedValue.ToString());
}
);
subscribed = true;
}
}
Sdílení dat pomocí kolekce Položek
Použití kolekce Items se podobá použití kolekce Services, s výjimkou toho, že SetValue se používá místo publikování. Tato kolekce je vhodnější ke sdílení jednoduchých dat mezi návrháři a hostitelem, nikoli pro složité funkce.
EditingContext – hostitelské položky a služby
Rozhraní .NET Framework poskytuje řadu předdefinovaných položek a služeb, ke které se přistupuje prostřednictvím kontextu úprav.
Položky:
AssemblyContextControlItem: Spravuje seznam odkazovaných místních sestavení, která budou použita uvnitř pracovního postupu pro ovládací prvky (například editor výrazů).
ReadOnlyState: Určuje, jestli je návrhář ve stavu jen pro čtení.
Selection: Definuje kolekci objektů, které jsou aktuálně vybrány.
WorkflowFileItem: Poskytuje informace o souboru, na který je založená aktuální relace úprav.
Služby:
AttachedPropertiesService: Umožňuje přidat vlastnosti do aktuální instance pomocí AddProperty.
DesignerView: Umožňuje přístup k vlastnostem plátna návrháře.
IActivityToolboxService: Umožňuje aktualizaci obsahu sady nástrojů.
ICommandService: Slouží k integraci příkazů návrháře (například místní nabídka) s vlastními implementacemi služeb.
IDesignerDebugView: Poskytuje funkce pro ladicí program návrháře.
IExpressionEditorService: Poskytuje přístup k dialogovému okně Editor výrazů.
IIntegratedHelpService: Poskytuje návrháři integrované funkce nápovědy.
IValidationErrorService: Poskytuje přístup k chybám ověřování pomocí .ShowValidationErrors
IWorkflowDesignerStorageService: Poskytuje interní službu pro ukládání a načítání dat. Tato služba je používána interně rozhraním .NET Framework a není určená pro externí použití.
IXamlLoadErrorService: Poskytuje přístup k kolekci chyb načítání XAML pomocí ShowXamlLoadErrors.
ModelService: Návrhář používá k interakci s modelem upravovaného pracovního postupu.
ModelTreeManager: Poskytuje přístup ke kořenovému adresáři stromu položek modelu pomocí Root.
UndoEngine: Poskytuje funkce zpět a znovu.
ViewService: Mapy vizuální prvky k podkladovým položkám modelu.
ViewStateService: Ukládá stavy zobrazení pro položky modelu.
VirtualizedContainerService: Slouží k přizpůsobení chování uživatelského rozhraní virtuálního kontejneru.
WindowHelperService: Slouží k registraci a zrušení registrace delegátů pro oznámení událostí. Umožňuje také nastavit vlastníka okna.