Använda ModelItem-redigeringskontexten
Redigeringskontexten ModelItem är det objekt som värdprogrammet använder för att kommunicera med designern. EditingContext exponerar två metoder, Items och Services, som kan användas
Samlingen Objekt
Samlingen Items används för att komma åt data som delas mellan värden och designern, eller data som är tillgängliga för alla designers. Den här samlingen har följande funktioner som nås via ContextItemManager klassen:
Samlingen Tjänster
Samlingen Services används för att komma åt tjänster som designern använder för att interagera med värden eller tjänster som alla designers använder. Den här samlingen har följande noteringsmetoder:
Tilldela en designer en aktivitet
Om du vill ange vilken designer en aktivitet använder används designerattributet.
[Designer(typeof(MyClassDesigner))]
public sealed class MyClass : CodeActivity
{
}
Skapa en tjänst
För att skapa en tjänst som fungerar som en kanal för information mellan designern och värden måste ett gränssnitt och en implementering skapas. Gränssnittet används av Publish metoden för att definiera medlemmar i tjänsten och implementeringen innehåller logiken för tjänsten. I följande kodexempel skapas ett tjänstgränssnitt och en implementering.
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
} ;
}
}
Publicera en tjänst
För att en designer ska kunna använda en tjänst måste den först publiceras av värden med hjälp av Publish metoden .
this.Context.Services.Publish<IMyService>(new MyServiceImpl);
Prenumerera på en tjänst
Designern får åtkomst till tjänsten med hjälp av Subscribe metoden i OnModelItemChanged -metoden. Följande kodfragment visar hur du prenumererar på en tjänst.
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;
}
}
Dela data med samlingen Objekt
Att använda samlingen Objekt liknar att använda samlingen Tjänster, förutom att den SetValue används i stället för Publicera. Den här samlingen är lämpligare för att dela enkla data mellan designers och värden, i stället för komplexa funktioner.
EditingContext-värdobjekt och -tjänster
.NET Framework tillhandahåller ett antal inbyggda objekt och tjänster som nås via redigeringskontexten.
Objekt:
AssemblyContextControlItem: Hanterar listan över refererade lokala sammansättningar som ska användas i arbetsflödet för kontroller (till exempel uttrycksredigeraren).
ReadOnlyState: Anger om designern är i skrivskyddat tillstånd.
Selection: Definierar samlingen av objekt som är markerade för närvarande.
WorkflowFileItem: Innehåller information om filen som den aktuella redigeringssessionen baseras på.
Tjänster:
AttachedPropertiesService: Tillåter att egenskaper läggs till i den aktuella instansen med hjälp av AddProperty.
DesignerView: Tillåter åtkomst till egenskaperna för designerarbetsytan.
IActivityToolboxService: Tillåter att innehållet i verktygslådan uppdateras.
ICommandService: Används för att integrera designerkommandon (till exempel snabbmeny) med anpassade tjänstimplementeringar.
IDesignerDebugView: Tillhandahåller funktioner för designerfelsökaren.
IExpressionEditorService: Ger åtkomst till dialogrutan Uttrycksredigerare.
IIntegratedHelpService: Ger designern integrerade hjälpfunktioner.
IValidationErrorService: Ger åtkomst till valideringsfel med hjälp av ShowValidationErrors.
IWorkflowDesignerStorageService: Tillhandahåller en intern tjänst för att lagra och hämta data. Den här tjänsten används internt av .NET Framework och är inte avsedd för extern användning.
IXamlLoadErrorService: Ger åtkomst till XAML-inläsningsfelsamlingen med hjälp av ShowXamlLoadErrors.
ModelService: Används av designern för att interagera med modellen för arbetsflödet som redigeras.
ModelTreeManager: Ger åtkomst till roten i modellobjektträdet med hjälp av Root.
UndoEngine: Tillhandahåller funktioner för att ångra och göra om.
ViewService: Kartor visuella element till underliggande modellobjekt.
ViewStateService: Lagrar visningstillstånd för modellobjekt.
VirtualizedContainerService: Används för att anpassa beteendet för användargränssnittet för virtuella containrar.
WindowHelperService: Används för att registrera och avregistrera ombud för händelsemeddelanden. Gör också att en fönsterägare kan ställas in.