Dela via


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:

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

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:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

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:

Tjänster: