Compartilhar via


Usando o contexto de edição de ModelItem

ModelItem que contexto de edição é o objeto que o aplicativo host usa para se comunicar com o designer. EditingContext expõe dois métodos, Items e Services, que podem ser usados

A coleção de itens

A coleção de Items é usada para acessar os dados que são compartilhados entre o host e o designer, ou os dados que estão disponíveis para todos os designers. Essa coleção possui os seguintes recursos, acessados por meio da classe ContextItemManager :

  1. GetValue

  2. Subscribe

  3. Unsubscribe

  4. SetValue

A coleção de serviços

A coleção de Services é usada para acessar os serviços que o designer usa para interagir com o host, ou serviços que todos os designers usam. Esta coleção tem os seguintes métodos de observação:

  1. Publish

  2. Subscribe

  3. Unsubscribe

  4. GetService

Atribuindo a um designer uma atividade

Para especificar que o designer uma atividade, use o atributo de designer é usado.

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

Criando um serviço

Para criar um serviço que os serve como uma canalização de informações entre o designer e o host, uma interface e uma implementação deve ser criados. A interface é usada pelo método de Publish para definir os membros de serviço, e a implementação contém a lógica para o serviço. No exemplo de código, uma interface e uma implementação de serviço são criadas.

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

Publicando um serviço

Para que um designer consome um serviço, deve primeiro ser publicados pelo host que usa o método de Publish .

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

Assinar um serviço

O designer obtém o acesso ao serviço usando o método de Subscribe no método de OnModelItemChanged . O snippet de código a seguir demonstra como assinar um serviço.

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

Compartilhando dados usando a coleção de itens

Usar a coleção de itens é semelhante a usar a coleção de serviços, exceto que SetValue é usado em vez de publicação. Essa coleção é mais adequado para compartilhar dados simples entre os designers e o host, em vez de funcionalidades complexas.

Itens e serviços de host de EditingContext

O .NET Framework fornece um número de itens e serviços internos acessados com o contexto de edição.

Itens:

Serviços: