Alterações de extensibilidade no Visual Studio 2010
O WPF Designer for Visual Studio fornece uma plataforma de sofisticados para a implementação de experiências de design personalizado para controles WPF e Silverlight . O Extensibilidade do WPF Designer API evoluiu significativamente desde sua inicial versão Visual Studio 2008. As seções a seguir descrevem as alterações na Extensibilidade do WPF Designer para Visual Studio 2010.
Suporte para o Silverlight e várias versões de plataforma
Em Visual Studio 2008, tempo de design do controle foram capaz de destino somente o WPFplataformamais recenteversão. Em Visual Studio 2010, esse suporte é estendido em várias plataformas, incluindo o design-tempo de suporte para WPF 3.5, o WPF 4, Silverlight 3 e plataforma de futuras versões. Como a mesma API de extensibilidade existe para todas essas plataformas, os autores de tempo de design do controle podem gravar uma experiência facilmente e compartilhá-lo entre os tempos de execução do controle para cada plataforma.
Suporte no Expression Blend
Suas implementações de tempo de design-de controle podem agora destino Expression Blend, usando a mesma extensibilidade interface disponível no Visual Studio. Você pode decidir entregar separado ou experiências de tempo de design-comum para os dois ambientes de criação.
Registrando os metadados
A diferença mais significativa na extensibilidade API é que o IRegisterMetadata interface foi substituído com o IProvideAttributeTable interface. Essa alteração, juntamente com a habilitação do suporte a várias plataforma , criou alterações significativas na extensibilidade API. Isso significa que o controle existente implementações de tempo de design-para Visual Studio 2008 não será carregada em Visual Studio 2010.
Além disso, em Visual Studio 2010, você pode usar o ProvideMetadataAttribute atributo para indicar que um tempo de design- assembly fornece metadados para o designer.
Novo Pontos de extensibilidade
extensibilidade nova API também oferece suporte a novas experiências de tempo de design-, incluindo o seguinte:
No janela Propriedades, suporte para acessar o modelo de editores de categoria . Essa alteração é aliada a elevação de propriedades comuns para a parte superior da listagem da categoria , para permitir que os autores de controle fornecer experiências de edição no janela Propriedades.
Novo AdornerPanel métodos de utilitário para habilitar o posicionamento mais fácil de adorno relativas ao controle personalizado.
Novo modelo de programação para o compartilhamento de implementações de tempo de design-entre as ferramentas de design diferente, como Visual Studio e Expression Blend.
Novo modelo de programação para o compartilhamento de implementações de tempo de design-entre várias estruturas de destino .
Comparando a extensibilidade no Visual Studio 2008 e o Visual Studio 2010
A tabela a seguir resume as diferenças entre a criação de experiências de tempo de design personalizado-em Visual Studio 2008 e Visual Studio 2010.
Visual Studio 2008 |
Visual Studio 2010 |
---|---|
Para registrar os tipos de tempo de design-, implementar a IRegisterMetadata interface e o uso de MetadataStore classe. |
Para registrar os tipos de tempo de design-, implementar a IProvideAttributeTable interface e a chamada a CreateTable método. |
Você não precisa adicionar assembly-atributos no nível. |
Você deve marcar assemblies de tempo de design-com o ProvideMetadataAttribute atributo. |
Para associar um tipo de designer de um elemento gráfico, use o GetImageométodo em NewItemFactory, que pode retornar vários tipos de elemento. |
Para associar um tipo de designer de um ícone, use o GetImageStream método para retornar um bitmap. Somente os bitmaps são suportados. |
Para acessar as propriedades do modelo, use a propriedade de dependência, por exemplo: ModelProperty backgroundProperty = adornedControlModel.Properties[Control.BackgroundProperty]; |
Para acessar as propriedades do modelo, use o nome da propriedade de dependência, por exemplo: ModelProperty backgroundProperty = adornedControlModel.Properties["Background"]; Além disso, você pode definir um PropertyIdentifier, que é uma combinação de tipo/string. PropertyIdentifieré usado com propriedades anexadas, quando uma pesquisa de nome simples não é suficiente. |
Para distinguir entre o espaço de layout e processamento, use o deAdornerCoordinateSpacesclasse. |
O deAdornerCoordinateSpacesclasse não é usado. |
Para especificar o local de adorno em relação ao conteúdo, use o AdornerPlacementCollection classe. |
Para especificar o local de adorno em relação ao conteúdo, use o SetAdornerHorizontalAlignment, SetAdornerVerticalAlignment, e SetAdornerMargin métodos. O deAdornerPlacementCollectionclasse é mantido para compatibilidade com versões anteriores. |