Sdílet prostřednictvím


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:

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

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:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

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:

Služby: