다음을 통해 공유


ModelItem 편집 컨텍스트 사용

ModelItem 편집 컨텍스트는 호스트 애플리케이션이 디자이너와 통신하는 데 사용하는 개체입니다. EditingContext는 두 가지 메서드를 노출하며Items, Services 이 메서드를 사용할 수 있습니다.

항목 컬렉션

컬렉션은 Items 호스트와 디자이너 간에 공유되는 데이터 또는 모든 디자이너에서 사용할 수 있는 데이터에 액세스하는 데 사용됩니다. 이 컬렉션은 ContextItemManager 클래스를 통해 액세스할 수 있는 다음과 같은 기능을 제공합니다.

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

서비스 컬렉션

Services 컬렉션은 디자이너가 호스트와 상호 작용하는 데 사용하는 서비스 또는 모든 디자이너가 사용하는 서비스에 액세스하는 데 사용됩니다. 이 컬렉션에는 다음과 같은 주목할 만한 메서드가 있습니다.

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

디자이너에 작업 할당

활동에서 사용하는 디자이너를 지정하기 위해 디자이너 특성이 사용됩니다.

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

서비스 만들기

디자이너와 호스트 간의 정보 통로 역할을 하는 서비스를 만들려면 인터페이스와 구현을 만들어야 합니다. 인터페이스는 메서드에서 Publish 서비스의 멤버를 정의하는 데 사용되며 구현에는 서비스에 대한 논리가 포함됩니다. 다음 코드 예제에서는 서비스 인터페이스 및 구현이 만들어집니다.

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

서비스 게시

디자이너가 서비스를 사용하려면 먼저 호스트가 Publish 메서드를 사용하여 게시해야 합니다.

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

서비스 구독

디자이너는 Subscribe 메서드 내에서 OnModelItemChanged 메서드를 사용하여 서비스에 대한 액세스를 얻습니다. 다음 코드 조각은 서비스를 구독하는 방법을 보여 줍니다.

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

Items 컬렉션을 사용하여 데이터 공유

Items 컬렉션을 사용하는 것은 Services 컬렉션을 사용하는 것과 유사하지만, 게시 대신 SetValue를 사용합니다. 이 컬렉션은 복잡한 기능보다는 디자이너와 호스트 간에 간단한 데이터를 공유하는 데 더 적합합니다.

EditingContext 호스트 항목 및 서비스

.NET Framework는 편집 컨텍스트를 통해 액세스되는 여러 기본 제공 항목 및 서비스를 제공합니다.

항목:

서비스: