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.
Qualquer objeto designable em um aplicativo Windows Presentation Foundation (WPF) pode expor um número arbitrário de extensões de designer.O tópico a seguir descreve os recursos do recurso provedores e a função do recurso conectores em fornecer recursos de tempo de design.
As noções básicas de provedores de recursos e conectores de recursos
Um provedor de recursos é um tipo simples que fornece funcionalidade adicional em tempo de design para um objeto.Alguns provedores recurso apenas podem fornecer informações sobre subcomponentes e exige nenhuma ação em Nome do Criador do.Other feature providers may add menu items to the object's designer context menu, create custom adorners for resizing or editing, or redefine dragging and dropping of objects on the designer.
Recurso provedores são implementados em por derivação a partir da classe FeatureProvider, diretamente ou uma classe que é derivada de FeatureProvider, por exemplo AdornerProvider e ContextMenuProvider.Recurso provedores destinam-se a ser leves e não devem tentar salvar o estado entre instâncias.
Um conector de recurso gerencia um ou mais provedores recurso para um determinado objeto.Recurso conectores podem publicar novos serviços através um provedor de serviços e escutar eventos Designer, como alterações de seleção.Recurso conectores são implementados por derivar uma nova classe de FeatureConnector<FeatureProviderType> ou PolicyDrivenFeatureConnector<FeatureProviderType> Classes.
Recurso Provedores
Um provedor de recursos se destina a ser um ponto Lightweight de extensibilidade.Situações comuns envolvendo Designer extensibilidade preferir a derivação de classes, em vez de criar novo recurso conectores existentes provedor de recursos.Recurso provedores não devem salvar estado, porque eles são criados e destruídos várias vezes.
Recurso provedores são completamente gerenciadas pelo recurso conectores e associados aos objetos através de metadados, especificamente FeatureAttribute.O conector de recurso descobre FeatureProvider tipos desses metadados.A classe FeatureManager identifica o conector de recurso necessária para cada provedor de recursos descobertos.
Implementações provedor de recursos comuns incluem seleção adorners, verbos e propriedade editores.Para obter mais informações, consulte Demonstra Passo a passo: Criar um adorno de time de design.
Exemplos de provedores de recursos
A ilustração a seguir mostra um designer visual e os tipos de recursos que podem se enquadram nas categorias provedor de recursos ou conector de recurso.Observe que a ilustração é apenas um exemplo de como alguns dos recursos de um designer poderia ser implementado.
.png)
A tabela a seguir lista os provedores que você pode derivar do recurso.
Recurso Provedores |
Descrição |
|---|---|
Adiciona o designer da superfície adorners. |
|
Adiciona adorners que são mostradas para a seleção principal. |
|
Define um conjunto de menu itens que são mostrados em um menu de contexto. |
|
Oferece um conjunto de itens que são mostradas para a seleção atual. |
|
PolicyDrivenFeatureConnector<FeatureProviderType>.ItemFeatureProvider |
Identifica os provedores Recurso que pertencem a um item específico. |
Adicione tarefas à ferramenta ativa. |
|
Fornece um conjunto de tarefas que estão disponíveis a partir da ferramenta de seleção quando uma classe é na seleção principal. |
|
Captura Propriedade as alterações feitas pelo usuário no designer e fornece novos valores em tempo de design. |
Como provedores de recursos são criados em tempo de design
Em muitos casos, não será necessário criar seus próprios conectores recurso personalizado.Você pode criar um provedor de recursos e associá-la diretamente com uma classe usando o FeatureConnectorAttribute.The FeatureManager classe é o componente das WPF Designer que ativa o recurso de provedores. FeatureManager examina sistema autônomo metadados de um objeto assim que ele é colocado na área de design. Se encontrar um FeatureConnectorAttribute para um objeto, ele cria o provedor de recursos associado.
Por exemplo, se você quiser criar um adorner que permite que você editar um controle personalizado do cabeçalho texto diretamente na superfície do designer, você poderia implementar sua adorner por derivação-lo do PrimarySelectionAdornerProvider,que é derivada de FeatureProvider.Em seguida, você pode associar a adorner personalizada com o controle usando a FeatureConnectorAttribute.
Associando tipos de provedores de recursos
Uma ferramenta de tempo de design associa recurso provedores para tipos por meio de metadados atributos.Deve ser uma maneira declarativa para ligar objetos reais de tempo de execução ou instâncias de metadados.Esta ligação é necessária nas ferramentas-nível e não a responsabilidade de uma estrutura em tempo de design.A ilustração a seguir mostra como uma ferramenta de tempo de design anexa recurso provedores diferentes tipos.
.png)
Há duas maneiras de associar provedores de recurso com tipos do WPF Designer arquitetura: the FeatureAttribute e FeatureConnectorAttribute tipos. O FeatureAttribute tipo é usado em tipos ou instâncias de objetos editáveis e expõe uma propriedade que representa um FeatureProvider.
O FeatureConnectorAttribute decora uma classe FeatureProvider e indica o tipo de conector de recurso é necessária para hospedar o provedor de recursos especificado.A classe FeatureManager cria as instâncias FeatureConnector<FeatureProviderType> necessárias quando você altera os objetos que são passados para ele.
Considere um designer WPF-específica na qual os objetos editáveis são do tipo UIElement.Essa ferramenta pode usar um ou mais “ pegar alças ” para adorn dos limites de itens individuais.Esses adorners visualmente representam Seleção e para habilitar a manipulação desses objetos editáveis.O designer associa um recurso alça de seleção para todos os objetos do tipo UIElement por meio de metadados.A ilustração a seguir mostra como um designer pode anexar um provedor alça de seleção a um UIElement Sobre o superfície de design.
.png)
Se um UIElement existe e é passada para o gerenciador de recursos para análise, a GrabHandleProvider é descoberta por meio de metadados associado ao UIElement.O tipo GrabHandleProvider em si, ou o tipo base, é inspecionado por meio de metadados para determinar seu conector de recurso necessário.
Recurso de conectores
Recurso os conectores são o nível mais baixo de extensibilidade exposto por essa arquitetura.Recurso conectores são criados acordo com uma referência a um EditingContext.Recurso conectores podem se inscrever para serviços globais e podem adicionar seus próprios serviços.A classe abstrata FeatureConnector<FeatureProviderType> implementa a interface IDisposable, que promove uma estratégia simples de limpeza.
Recurso os conectores são criados por demanda.Quando o FeatureManager descobre um FeatureConnectorAttribute em um FeatureProvider, ele cria a FeatureConnector<FeatureProviderType> especificado se o seu tipo ainda não existir.Recurso conectores são criados apenas quando eles são descobertos, em vez de uma sessão de designer criar um padrão definido na inicialização.Se houver mais de um FeatureConnectorAttribute Tipos de um FeatureProvider, todos os conectores recurso são inicializados.Isso permite que um terceiros derivar de um FeatureProvider existentes, adicionar um conector de recurso personalizados, e tem dois conjuntos de funcionalidade inicializada.
A maior parte da funcionalidade da classe FeatureConnector<FeatureProviderType> é implementada no método CreateFeatureProviders protegido.Passar um objeto para esse método faz com que o conector de recurso para procurar por tipos FeatureAttribute no objeto.Se esses atributos for encontrados, a instância FeatureProvider associada com cada atributo é criada e retornada em uma lista.
O FeatureConnector<FeatureProviderType> classe base é genérico e consome tipo a provedor de recursos de que os hosts FeatureConnector<FeatureProviderType>.Recurso provedores usam um FeatureConnectorAttribute para indicar o conector de recurso associado.Protegido classe base métodos de FeatureConnector<FeatureProviderType>,principalmente o método CreateFeatureProviders, pode retornar digitadas coleções de recurso provedores para os conectores derivado recurso sem as classes derivadas sendo preocupadas com elenco e tipo de segurança.
Criando conectores de recursos personalizado
Você precisará criar seus próprios conector de recurso quando você deseja escutar eventos Designer, como seleção.Derivar de FeatureConnector<FeatureProviderType> ou PolicyDrivenFeatureConnector<FeatureProviderType> classes para implementar a lógica Designer personalizada.
Recurso conectores são fornecidos uma referência para o criador do EditingContext global, através do qual a conector de recurso pode acessar serviços Designer, bem como publicar seus próprio serviços personalizados.Por exemplo, um fornecedor de controle do gráfico aconselhável publicar um serviço que permite que um tipo personalizado Editor no designer para enumerar todas as widgets atualmente no gráfico.
Depois de criar uma classe derivada de FeatureConnector<FeatureProviderType>, você pode associá-lo a um provedor de recursos aplicando o provedor de recursos FeatureConnectorAttribute.Sempre que uma instância do que provedor de recursos é criada, o FeatureManager examina os metadados para o FeatureConnectorAttribute.Se o atributo é definido e uma instância de FeatureConnector<FeatureProviderType> associada não está em execução no momento, o FeatureManager irá criá-la e associar o FeatureConnector<FeatureProviderType> Todas as instâncias futuras do que provedor de recursos.
Por exemplo de código que mostra como implementar um conector de recurso Consulte Como: Criar um conector de recurso personalizado.