Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O ModelItem 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 Items
A Items coleção é usada para acessar dados compartilhados entre o host e o designer ou dados que estão disponíveis para todos os designers. Essa coleção tem os seguintes recursos, acessados por meio da ContextItemManager classe:
A coleção de serviços
A Services coleção é usada para acessar os serviços que o designer usa para interagir com o host ou os serviços que todos os designers usam. Esta coleção tem os seguintes métodos dignos de nota:
Atribuir uma atividade a um designer
Para especificar qual designer uma atividade usa, o atributo Designer é usado.
[Designer(typeof(MyClassDesigner))]
public sealed class MyClass : CodeActivity
{
}
Criando um serviço
Para criar um serviço que serve como um canal de informações entre o designer e o host, uma interface e uma implementação devem ser criadas. A interface é usada pelo Publish método para definir os membros do serviço e a implementação contém a lógica do serviço. No exemplo de código a seguir, uma interface de serviço e uma implementaçã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 consuma um serviço, ele deve primeiro ser publicado pelo host usando o Publish método.
this.Context.Services.Publish<IMyService>(new MyServiceImpl);
Assinando um serviço
O designer obtém acesso ao serviço pelo método Subscribe dentro do método 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 Items é semelhante ao uso da coleção Services, exceto que SetValue é usada em vez de Publicar. Essa coleção é mais apropriada 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 vários itens e serviços internos acessados por meio do contexto de edição.
Itens:
AssemblyContextControlItem: Gerencia a lista de assemblies locais referenciados que serão usados dentro de fluxo de trabalho para controles (como o editor de expressão).
ReadOnlyState: Indica se o designer está em um estado somente leitura.
Selection: define a coleção de objetos que estão selecionados no momento.
WorkflowFileItem: fornece informações sobre o arquivo no qual a sessão de edição atual se baseia.
Serviços:
AttachedPropertiesService: permite que as propriedades sejam adicionadas à instância atual, usando AddProperty.
DesignerView: Permite o acesso às propriedades de tela de designer.
IActivityToolboxService: permite que o conteúdo da caixa de ferramentas seja atualizado.
ICommandService: usado para integrar comandos de designer (como menu de contexto) com implementações de serviço personalizadas fornecidas.
IDesignerDebugView: Fornece a funcionalidade para o depurador de designer.
IExpressionEditorService: Fornece acesso a caixa de diálogo editor de expressão.
IIntegratedHelpService: fornece ao designer funcionalidade de ajuda integrada.
IValidationErrorService: fornece acesso a erros de validação usando ShowValidationErrors.
IWorkflowDesignerStorageService: fornece um serviço interno para armazenar e recuperar dados. Esse serviço é usado internamente pelo .NET Framework e não se destina a uso externo.
IXamlLoadErrorService: fornece acesso à coleção de erros de carga XAML usando ShowXamlLoadErrors.
ModelService: usado pelo designer para interagir com o modelo do fluxo de trabalho que está sendo editado.
ModelTreeManager: fornece acesso à raiz da árvore de itens de modelo usando Root.
UndoEngine: Fornece etapas desfaz e refaz a funcionalidade.
ViewService: Mapeia elementos visuais para os itens do modelo subjacente.
ViewStateService: armazena estados de exibição para itens de modelo.
VirtualizedContainerService: usado para personalizar o comportamento da interface do usuário do contêiner virtual.
WindowHelperService: usado para registrar e cancelar o registro de delegados para notificações de evento. Também permite que um proprietário de janela seja definido.