De bewerkingscontext modelitem gebruiken
De ModelItem bewerkingscontext is het object dat de hosttoepassing gebruikt om te communiceren met de ontwerpfunctie. EditingContext maakt twee methoden Items beschikbaar en Services, die kunnen worden gebruikt
De verzameling Items
De Items verzameling wordt gebruikt voor toegang tot gegevens die worden gedeeld tussen de host en de ontwerper, of gegevens die beschikbaar zijn voor alle ontwerpers. Deze verzameling heeft de volgende mogelijkheden die toegankelijk zijn via de ContextItemManager klasse:
De verzameling Services
De Services verzameling wordt gebruikt voor toegang tot services die de ontwerper gebruikt om te communiceren met de host of services die alle ontwerpers gebruiken. Deze verzameling heeft de volgende methoden:
Een ontwerper een activiteit toewijzen
Als u wilt opgeven welke ontwerper een activiteit gebruikt, wordt het kenmerk Designer gebruikt.
[Designer(typeof(MyClassDesigner))]
public sealed class MyClass : CodeActivity
{
}
Een service maken
Als u een service wilt maken die fungeert als een samenvoeging van informatie tussen de ontwerper en de host, moet er een interface en een implementatie worden gemaakt. De interface wordt door de Publish methode gebruikt om de leden van de service te definiëren en de implementatie bevat de logica voor de service. In het volgende codevoorbeeld wordt een service-interface en -implementatie gemaakt.
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
} ;
}
}
Een service publiceren
Als een ontwerper een service wil gebruiken, moet deze eerst worden gepubliceerd door de host met behulp van de Publish methode.
this.Context.Services.Publish<IMyService>(new MyServiceImpl);
Abonneren op een service
De ontwerper verkrijgt toegang tot de service met behulp van de Subscribe methode in de OnModelItemChanged methode. Het volgende codefragment laat zien hoe u zich abonneert op een service.
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;
}
}
Gegevens delen met behulp van de verzameling Items
Het gebruik van de verzameling Items is vergelijkbaar met het gebruik van de verzameling Services, behalve die SetValue wordt gebruikt in plaats van Publiceren. Deze verzameling is geschikter voor het delen van eenvoudige gegevens tussen de ontwerpers en de host, in plaats van complexe functionaliteit.
EditContext-hostitems en -services
Het .NET Framework biedt een aantal ingebouwde items en services die toegankelijk zijn via de bewerkingscontext.
Items:
AssemblyContextControlItem: Hiermee beheert u de lijst met lokale assembly's waarnaar wordt verwezen, die in de werkstroom worden gebruikt voor besturingselementen (zoals de expressie-editor).
ReadOnlyState: Geeft aan of de ontwerper de status Alleen-lezen heeft.
Selection: Hiermee definieert u de verzameling objecten die momenteel zijn geselecteerd.
WorkflowFileItem: Bevat informatie over het bestand waarop de huidige bewerkingssessie is gebaseerd.
Services:
AttachedPropertiesService: Hiermee kunnen eigenschappen aan het huidige exemplaar worden toegevoegd met behulp van AddProperty.
DesignerView: Hiermee verleent u toegang tot de eigenschappen van het ontwerpcanvas.
IActivityToolboxService: Hiermee kan de inhoud van de werkset worden bijgewerkt.
ICommandService: Wordt gebruikt om ontwerpopdrachten (zoals contextmenu) te integreren met aangepaste service-implementaties.
IDesignerDebugView: biedt functionaliteit voor het foutopsporingsprogramma van de ontwerper.
IExpressionEditorService: Biedt toegang tot het dialoogvenster Expressie-editor.
IIntegratedHelpService: biedt de ontwerper geïntegreerde Help-functionaliteit.
IValidationErrorService: biedt toegang tot validatiefouten met behulp van ShowValidationErrors.
IWorkflowDesignerStorageService: Biedt een interne service voor het opslaan en ophalen van gegevens. Deze service wordt intern gebruikt door .NET Framework en is niet bedoeld voor extern gebruik.
IXamlLoadErrorService: Biedt toegang tot de XAML-laadfoutverzameling met behulp van ShowXamlLoadErrors.
ModelService: Wordt door de ontwerper gebruikt om te communiceren met het model van de werkstroom die wordt bewerkt.
ModelTreeManager: Biedt toegang tot de hoofdmap van de structuur van het modelitem met behulp van Root.
UndoEngine: Biedt functionaliteit voor ongedaan maken en opnieuw uitvoeren.
ViewService: Kaarten visuele elementen voor onderliggende modelitems.
ViewStateService: Hiermee worden weergavestatussen voor modelitems opgeslagen.
VirtualizedContainerService: Wordt gebruikt om het gedrag van de gebruikersinterface van de virtuele container aan te passen.
WindowHelperService: Wordt gebruikt om gedelegeerden te registreren en de registratie ervan ongedaan te maken voor gebeurtenismeldingen. Hiermee kan ook een eigenaar van een venster worden ingesteld.