다음을 통해 공유


ModelItem 편집 컨텍스트 사용

ModelItem 편집 컨텍스트는 호스트 애플리케이션이 디자이너와 통신할 때 사용하는 개체입니다. EditingContext는 사용할 수 있는 메서드 두 개(ItemsServices)를 노출합니다.

Items 컬렉션

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

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

Services 컬렉션

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

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

작업에 디자이너 할당

작업에 사용되는 디자이너를 지정하려면 Designer 특성을 사용합니다.

[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 컬렉션 사용은 Publish 대신 SetValue가 사용된다는 점을 제외하고 Services 컬렉션 사용과 유사합니다. 이 컬렉션은 복잡한 기능보다 디자이너와 호스트 간에 간단한 데이터를 공유하는 데 보다 적합합니다.

EditingContext 호스트 항목 및 서비스

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

항목:

서비스: