A ModelItem szerkesztési környezetének használata

A ModelItem szerkesztési környezet az az objektum, amelyet a gazdaalkalmazás a tervezővel való kommunikációhoz használ. EditingContextkét metódust tesz elérhetővé, Items és Services

Az Elemek gyűjtemény

A Items gyűjtemény a gazdagép és a tervező között megosztott adatok, illetve az összes tervező számára elérhető adatok elérésére szolgál. Ez a gyűjtemény a következő képességekkel rendelkezik, és az ContextItemManager osztályon keresztül érhető el:

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

A Szolgáltatások gyűjtemény

A Services gyűjteményt olyan szolgáltatások elérésére használják, amelyeket a tervező a gazdagéppel való interakcióhoz használ, vagy amelyeket minden tervező igénybe vesz. Ez a gyűjtemény a következő megjegyzési módszerekkel rendelkezik:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

A tervező hozzárendelése egy tevékenységhez

Annak megadásához, hogy melyik tervezőt használja a tevékenység, a Program a Designer attribútumot használja.

[Designer(typeof(MyClassDesigner))]
public sealed class MyClass : CodeActivity
{
}

Szolgáltatás létrehozása

A tervező és a gazdagép közötti információáthelyként szolgáló szolgáltatás létrehozásához létre kell hozni egy felületet és egy implementációt. A metódus a Publish felület használatával határozza meg a szolgáltatás tagjait, és az implementáció tartalmazza a szolgáltatás logikáját. Az alábbi kódpéldában létrejön egy szolgáltatásfelület és egy implementáció.

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
            } ;
        }
    }

Szolgáltatás közzététele

Ahhoz, hogy egy tervező használhassa a szolgáltatást, először a gazdagépnek kell közzétennie a Publish metódussal.

this.Context.Services.Publish<IMyService>(new MyServiceImpl);

Előfizetés szolgáltatásra

A tervező a Subscribe metódusban a OnModelItemChanged metódus segítségével szerez hozzáférést a szolgáltatáshoz. Az alábbi kódrészlet bemutatja, hogyan lehet feliratkozni egy szolgáltatásra.

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;
    }
}

Adatok megosztása az Elemek gyűjtemény használatával

Az Elemek gyűjtemény használata hasonló a Szolgáltatások gyűjteményhez, azzal a különbséggel, hogy itt SetValue-t használnak közzététel helyett. Ez a gyűjtemény inkább az egyszerű adatok tervezők és a gazdagép közötti megosztására alkalmas, mintsem összetett funkciók megvalósítására.

Szerkesztési kontextus gazdagép-elemek és szolgáltatások

A .NET-keretrendszer számos beépített elemet és szolgáltatást biztosít, amelyek a szerkesztési környezeten keresztül érhetők el.

Elemek:

  • AssemblyContextControlItem: Kezeli a hivatkozott helyi szerelvények listáját, amelyeket a munkafolyamat vezérlőihez (például a kifejezésszerkesztőhöz) használnak.

  • ReadOnlyState: Azt jelzi, hogy a tervező írásvédett állapotban van-e.

  • Selection: Az aktuálisan kijelölt objektumok gyűjteményét határozza meg.

  • WorkflowCommandExtensionItem:

  • WorkflowFileItem: Információt nyújt arról a fájlról, amelyen az aktuális szerkesztési munkamenet alapul.

Szolgáltatás:

  • AttachedPropertiesService: Az AddProperty használatával lehetővé teszi tulajdonságok hozzáadását az aktuális példányhoz.

  • DesignerView: Lehetővé teszi a tervezővászon tulajdonságainak elérését.

  • IActivityToolboxService: Lehetővé teszi az eszközkészlet tartalmának frissítését.

  • ICommandService: Tervezői parancsok (például helyi menü) egyéni szolgáltatás-implementációkkal való integrálására szolgál.

  • IDesignerDebugView: A tervező hibakeresőjének funkcióit biztosítja.

  • IExpressionEditorService: Hozzáférést biztosít a Kifejezésszerkesztő párbeszédpanelhez.

  • IIntegratedHelpService: Integrált súgófunkciót biztosít a tervezőnek.

  • IValidationErrorService: Hozzáférést biztosít az érvényesítési hibákhoz az alábbi használatával: ShowValidationErrors.

  • IWorkflowDesignerStorageService: Belső szolgáltatást biztosít az adatok tárolásához és lekéréséhez. Ezt a szolgáltatást a .NET-keretrendszer belsőleg használja, és nem külső használatra készült.

  • IXamlLoadErrorService: Hozzáférést biztosít az XAML betöltési hibagyűjteményhez ShowXamlLoadErrors használatával.

  • ModelService: A tervező használja a szerkesztett munkafolyamat modelljének kezelésére.

  • ModelTreeManager: Hozzáférést biztosít a modellelem-fa gyökeréhez a Root használatával.

  • UndoEngine: Visszavonási és ismétlési funkciókat biztosít.

  • ViewService: Vizualizációs elemeket rendel össze a mögöttes modell elemeivel.

  • ViewStateService: Az áruházak megtekinthetik a modellelemek állapotát.

  • VirtualizedContainerService: A virtuális tároló felhasználói felületének viselkedésének testreszabására szolgál.

  • WindowHelperService: A meghatalmazottak regisztrálására és regisztrációjának törlésére szolgál az eseményértesítésekhez. Emellett lehetővé teszi az ablak tulajdonosának beállítását is.