Implantando um controle personalizado e assemblies de tempo de design

Quando uma ferramenta de design abre seu controle personalizadodo assembly, ele também procura de assemblies de tempo de design relacionadas-. Em particular, os designers procuram conjuntos que tenham o ProvideMetadataAttribute assembly-nível de atributo. Quando esse atributo é encontrado, o designer de pesquisa de assembly para uma classe que implementa o IProvideAttributeTable interface. As designer de consultas a AttributeTablepropriedade dessa classe para umacoleção de atributoque especifica o comportamento de tempo de design-.

Convenção de nomenclatura para Assemblies de tempo de Design-

Ferramentas de design, como Visual Studio e o Expression Blend, descubra seus assemblies de tempo de design personalizado-, usando uma convenção de nomenclatura. Esta convenção evoluiu em relação às versões de diferentes ferramentas. Use a tabela a seguir para nomear seus assemblies para os designers de destino de apropriado.

Ambiente de destino

Convenção de nomenclatura

Nomes de exemplo

Expression Blend 3 eVisual Studio 2010 

<ControlLibrary>.Design.<versão>. dll (comum)

<ControlLibrary>.Expression.design.<versão>. dll (Expression Blend)

<ControlLibrary>.VisualStudio.Design.<versão>.dll (Visual Studio)

TailspinToysControls.Design.4.0.dll

TailspinToysControls.Expression.Design.4.0.dll

TailspinToysControls.VisualStudio.Design.4.0.dll

Expression Blend 2 eVisual Studio 2008 

<ControlLibrary>.Design.dll (comum)

<ControlLibrary>.Expression.design.dll (Expression Blend)

<ControlLibrary>.VisualStudio.Design.dll (Visual Studio)

TailspinToysControls.Design.dll

TailspinToysControls.Expression.Design.dll

TailspinToysControls.VisualStudio.Design.dll

Comum refere-se às implementações de tempo de design-que são compartilhadas por Visual Studio e Expression Blend. O <versão> substring Especifica a versão correspondente da WPF Designer framework. Você pode verificar isso inspecionando a versão do assemblyde Microsoft.Windows.Design.dll.

Assemblies de tempo de design específico--de ferramenta podem substituir a implementação de compartilhado no assemblycomuns. Isso significa que a sua experiência de design personalizado pode variar consideravelmente em ferramentas de design diferente. For more information, see Fornecimento de metadados de tempo de design.

Registrando módulos (assemblies) de tempo de Design-

Registre o seu controle e seus assemblies de tempo de design associado-usando o assembly pasta registro procedimento, que também é chamado de registro de AssemblyFoldersEx. Registrar controles usando o assembly de registro da pasta procedimento requer somente que controlam os assemblies existem no disco e a caixa de ferramentas que entradas do registro são especificadas. Este procedimento de registro pode ocorrer antes ou depois de Visual Studio está instalado.

AssemblyFoldersExé uma chave do registro em cada destino framework versão, como o Silverlight 3 ou o.NET Framework 4. AssemblyFoldersExinclui um conjunto de chaves que especificar as pastas que contêm assemblies específicos do framework-. Por exemplo, para o destino Silverlight 3, o AssemblyFoldersEx chave do registro está localizado no caminho do registro seguinte.

[HKCU ou HKLM] \v3.0\AssemblyFoldersEx doSilverlightde \SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\

Quando o Toolbox subchave e suas entradas de suporte são criadas em um AssemblyFoldersEx chave, os controles aparecem na caixa de ferramentas, o Adicionar referências caixa de diálogoe o Escolher itens caixa de diálogo.

A tabela a seguir lista as entradas do registro que podem ser usadas na AssemblyFoldersEx e Toolbox chaves para registrar uma pasta do assembly .

Entrada do registro

Tipode entrada de registro

Description

Example

<assembly>

Key

O nome da chave, geralmente com marca.

[TailspinToys controles]

<assembly pasta >

Padrão Valorda seqüência

Especifica o caminho completo da instalação para o controle personalizadodo assembly. Designers irá procurar por assemblies de tempo de design-nesta pasta e, em uma subpasta chamada de Design.

@ = "c:\\Arquivos de Controls\\Bin\\ de Assemblies\\TailspinToys de Files\\Reference"

Toolbox

Key

Adicionar o Toolbox chave se você desejar que os assemblies no <assembly pasta > pesquisou os controles para adicionar a caixa de ferramentas. Se esta chave não for especificado, os controles aparecem na Escolher itens caixa de diálogo e montagens na Adicionar Reference caixa de diálogo, mas não na caixa de ferramentas.

[Ferramentas]

TabName

Valorda seqüência

Especifica o grupo de ferramentas padrão para controles em <assembly pasta >. O grupo será criado se ele não existe. Se o valor não for especificado, os controles são instalados para o grupo padrão para a plataforma.

Use esse valor para especificar uma marca em vez de uma categoriade funcionais. Fazer as categorias comum ou a Tudo controles WPF e Silverlight controles personalizados de destino . O valor não pode ser localizado.

"TabName"="TailspinToys"

Servicing

Chaves

Para forçar uma atualização de cache da caixa de ferramentas, especifique uma nova chave ou valor dentro do Toolbox chave. A maneira recomendada de fazer isso é criar um Updates instalado de subchave que contém um valor de registro para cada atualização. A atualização do cache é somente para os controles encontrados na pasta específica do Toolbox chave pertence, nem todos os controles do framework.

Personalizações de caixa de ferramentas do usuáriopara controles de uma pasta assembly podem ser perdidas quando a pasta de assembly for atualizada.

[Atualizações]

"F73" = "1"

"update7" = "1"

O seguinte exemplo do Registro script registra assemblies de destino do.NET Framework 4 e estão localizados no caminho de Assemblies de referência. Quaisquer controles que têm ToolboxBrowsableAttribute definido como true são exibidos no Toolbox sob o Tailspin Toys guia.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0\AssemblyFoldersEx\TailspinToys]
@="c:\\\\Program Files\\\\Reference Assemblies\\\\TailspinToys Controls\\\\Bin\\\\"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0\AssemblyFoldersEx\TailspinToys\Toolbox]
"TabName"="Tailspin Toys"

ToolboxBrowsableAttribute e a chave de registro da caixa de ferramentas

Especifique se o seu controle personalizado aparecer na caixa de ferramentas, adicionando a ToolboxBrowsableAttribute metadadosde tempo para o design do controle-. For more information, see Passo a passo: Fornecendo metadados para ícones de caixa de ferramentas.

O Escolher itens caixa de diálogo é usado para navegar para novos assemblies e adicionando novos controles à caixa de ferramentas. A tabela a seguir mostra como a interação entre o ToolboxBrowsableAttribute e o Toolbox chave do registro que determina quando o controle personalizado é exibido na caixa de ferramentas e o Escolher itens caixa de diálogo.

ToolboxChave do registro

Não Toolbox chave do registro

ToolboxBrowsable = true

  • Na caixa de ferramentas

  • Na caixa de diálogode escolher itens

  • Não na caixa de ferramentas

  • Na caixa de diálogode escolher itens

ToolboxBrowsable = false

  • Não na caixa de ferramentas

  • Não na caixa de diálogode escolher itens

  • Não na caixa de ferramentas

  • Não na caixa de diálogode escolher itens

Carregar Assemblies de tempo de Design-

Designers carregar seus assemblies de tempo de design personalizado-em uma ordem específica. Isso permite que o designer-implementações específicas para substituir implementações genérico. Para um controle personalizado que é implantado em um assembly chamado ControlLibrary.dll, a lista a seguir mostra a ordem na qual os assemblies de tempo de design-são carregados.

  1. ControlLibrary.dll (controle de assembly)

  2. ControlLibrary.Design.<versão>. dll

  3. Design\ControlLibrary.design.<versão>. dll

  4. ControlLibrary.[Expression|VisualStudio].Design.<versão>. dll

  5. Design\ControlLibrary.[Expression|VisualStudio].Design.<versão>. dll

-De Designer conjuntos específicos de substituir as implementações que são implantadas em assemblies genéricos. Por exemplo, TailspinToysControlLibrary.VisualStudio.Design.dll pode substituir implementações em TailspinToysControlLibrary.Design.dll.

Além disso, um tempo de design- assembly é carregados de acordo com o <versão> especificado no nome do arquivo. As seguintes regras de mostrar como <versão> é interpretada por um designer.

  • Se <versão> tem um número diferente versão principal que versãodo framework do designer, o assembly de design não está carregado.

  • Se o designer de tempo de design-mais de um assembly é compatível com a versãodo framework do designer, carrega a versão que é compilado contra a mais alta framework versão não exceder a versãodo framework do designer.

A tabela a seguir mostra um exemplo de um designer que é criado com o 4.1.3.0 framework versão carregar assemblies de tempo de design-quatro com diferentes versões.

Tempo de Design-de exemplo o Nomedo Assembly

Cargas de Designer?

ControlLibrary.Design.3.0.1.0.dll

No. versãoé incompatível.

ControlLibrary.Design.4.0.1.0.dll

No. Gostaria de carregar, mas está disponível uma versão de maior.

ControlLibrary.Design.4.1.1.0.dll

Sim. Mais próximo do designerde versão.

ControlLibrary.Design.4.3.dll

No. Construídos de uma estrutura maior versão que o designer.

Atualizando ferramentas

Ao atualizar os assemblies em pastas especificadas pela AssemblyFoldersEx chave, talvez você precise atualizar o Visual Studio cache da caixa de ferramentas. O cache contém os nomes, categorias e ícones para controles que aparecem na caixa de ferramentas. O cache não inclui o controle ou o design-assemblies de tempo. Durante a compilação de projetos de qualquer serviço de controle ou o tempo de design- assembly é automaticamente atualizado.

O cache de caixa de ferramentas para uma pasta do assembly é atualizado, se um AssemblyFoldersEx chave for alterado de alguma forma (alterar qualquer um de seus valores ou subchaves). A atualização ocorre na caixa de ferramentas de inicialização, quando opainel de tarefade caixa de ferramentas é mostrada pela primeira vez (normalmente em Visual Studio carga de projeto ou de inicialização).

Para forçar uma atualização de cache da caixa de ferramentas, especifique uma nova chave ou valor dentro do Toolbox chave. A maneira recomendada de fazer isso é criar um Servicing subchave que contém um valor de registro para cada instalados atualização. A atualização do cache é somente para os controles encontrados na pasta específica do Toolbox chave pertence, nem todos os controles do framework. Personalizações de caixa de ferramentas do usuáriopara controles de uma pasta assembly podem ser perdidas quando a pasta de assembly for atualizada.

Consulte também

Referência

ToolboxBrowsableAttribute

ProvideMetadataAttribute

Outros recursos

Noções básicas sobre extensibilidade Designer WPF

Conceitos básicos de extensibilidade

Fornecimento de metadados de tempo de design