Udostępnij za pośrednictwem


Używanie kontekstu edycyjnego ModelItem

Kontekst ModelItem edycji jest obiektem używanym przez aplikację hosta do komunikowania się z projektantem. EditingContext uwidacznia dwie metody i ItemsServices, których można użyć

Kolekcja Items

Kolekcja służy do uzyskiwania Items dostępu do danych udostępnianych między hostem a projektantem lub danymi dostępnymi dla wszystkich projektantów. Ta kolekcja ma następujące możliwości dostępne za pośrednictwem ContextItemManager klasy :

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

Kolekcja usług

Kolekcja służy do uzyskiwania Services dostępu do usług używanych przez projektanta do interakcji z hostem lub usługami używanymi przez wszystkich projektantów. Ta kolekcja ma następujące metody:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

Przypisywanie projektanta działania

Aby określić, którego projektanta używa działanie, jest używany atrybut Projektant.

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

Tworzenie usługi

Aby utworzyć usługę, która służy jako kanał informacyjny między projektantem a hostem, należy utworzyć interfejs i implementację. Interfejs jest używany przez metodę Publish do definiowania elementów członkowskich usługi, a implementacja zawiera logikę usługi. W poniższym przykładzie kodu tworzony jest interfejs usługi i implementacja.

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

Publikowanie usługi

Aby projektant mógł korzystać z usługi, musi najpierw zostać opublikowany przez hosta przy użyciu Publish metody .

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

Subskrybowanie usługi

Projektant uzyskuje dostęp do usługi przy użyciu Subscribe metody w metodzie OnModelItemChanged . Poniższy fragment kodu przedstawia sposób subskrybowania usługi.

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

Udostępnianie danych przy użyciu kolekcji Items

Użycie kolekcji Items jest podobne do kolekcji Usługi, z tą różnicą, że SetValue jest używana zamiast publikowania. Ta kolekcja jest bardziej odpowiednia do udostępniania prostych danych między projektantami a hostem, a nie złożonymi funkcjami.

Edytowanie elementów i usług hosta w formacieContext

Program .NET Framework udostępnia wiele wbudowanych elementów i usług, do których dostęp uzyskuje się za pośrednictwem kontekstu edycji.

Elementy:

  • AssemblyContextControlItem: zarządza listą odwołanych zestawów lokalnych, które będą używane wewnątrz przepływu pracy dla kontrolek (takich jak edytor wyrażeń).

  • ReadOnlyState: wskazuje, czy projektant jest w stanie tylko do odczytu.

  • Selection: definiuje kolekcję obiektów, które są aktualnie zaznaczone.

  • WorkflowCommandExtensionItem:

  • WorkflowFileItem: zawiera informacje na temat pliku, na podstawie którego jest oparta bieżąca sesja edycji.

Usługi: