Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A arquitetura WPF Designer é significativamente diferente da arquitetura de Windows Forms Designer, que é caracterizada por IComponent namespace e a interface System.ComponentModel.Se você tiver criado implementações personalizadas para Formulários do Windows controles em tempo de design, você observará que a WPF Designer arquitetura é mais fácil de usar e estender.
A arquitetura WPF Designer retém o TypeConverter e TypeDescriptor classes de modelo de objeto de Windows Forms Designer.A maioria dos outros aspectos da arquitetura do WPF Designer são diferentes.Para obter mais informações sobre o Windows Forms Designer, consulte o Estendendo suporte em tempo de design.
Principais diferenças entre o Framework ComponentModel e o Framework WPF
Diferenças entre a WPF Designer arquitetura e a estrutura System.ComponentModel são resumidas na tabela a seguir.
Framework ComponentModel |
WPF Designer.NET Framework: |
|---|---|
Com base no IComponent, IContainer e ISite interfaces. |
Com base na classe de FrameworkElement. |
Depende de tempo de design de serviços fornecidos por um host. |
Os designers declarativamente publicar requisitos mínimos. |
Dedicado tipo designer para cada tipo de controle. |
Qualquer número de recursos pode operar em um tipo de controle. |
Os metadados embutida para cada tipo de controle; fixo no tempo de compilação do controle. |
Os metadados implantado em um conjunto separado; podem ser personalizado ou substituídos por ferramentas.Isso permite atualizar os metadados em tempo de design independentemente do controle. |
Um IDesignerHost mantém o estado de designer. |
A classe EditingContext mantém o estado de designer. |
Serviços são coletados e compartilhados com um IServiceContainer Implementação. |
A classe EditingContext contém referências de serviço. |
O BehaviorService gerencia teclado, mouse e interações de linha de comando. |
A WPF Designer Ferramenta arquitetura gerencia teclado, mouse e interações de linha de comando. |
Editar modelo de objeto consiste em tempo de execução dos controles, com acesso mais vinculados por meio da classe PropertyDescriptor. |
Editar modelo de objeto fornece uma camada de Indirection para Abstract os controles em tempo de execução.Categoria editores permitem a edição de várias propriedades em um único interface do usuário. |
IComponent vs.FrameworkElement
O WPF elementos derivar da classe FrameworkElement, que fornece a conexão entre o WPF serviços principais e as classes de elementos Framework-Nível.
O WPF elementos não implementam a interface IComponent.Essa é uma das razões fundamentais porque o WPF Designer Não usar a System.ComponentModel estrutura.Isso significa que o WPF controles nunca são sited.Portanto, WPF controles não é possível solicitar Designer serviços a partir de System.ComponentModel ambiente de design.
Serviços de tempo de design
Designers na System.ComponentModel estrutura solicitar serviços de ambiente de design.Na WPF Designer estrutura, você pode realizar a maioria das tarefas sem consultar o ambiente de serviços.
Na System.ComponentModel estrutura, designer serviços não são garantidos para ser presente em um host Designer, o que significa sempre deve verificar o código personalizado de designer para obter uma referência null após uma chamada para o método GetService.Código do designer deve degradar normalmente quando um serviço está ausente, e em muitos casos, essa restrição não puderem ser atendida.
Na WPF Designer estrutura, um designer personalizado declarativamente publica seus requisitos mínimos.Se um host não puder atender o contrato, o designer não carrega.Isso torna a implementação geral mais simples e mais robusta.
Dedicado Designer tipos e Decoupling de metadados
Na System.ComponentModel estrutura, um tipo de designer está associado com seu componente através de DesignerAttribute metadados atributo correspondente.Isso significa que o relacionamento estabelecido em tempo de compilação, forçando uma dependência entre o componente do Run-Time e design-time behavior Hard-coded.Para anexar um designer diferente, você deve alterar a DesignerAttribute declaração e recompilar o componente do código base.
Na caixa WPF Designer,metadados de designer é acrescentado em um conjunto separado, desligamento-lo fisicamente da implementação em tempo de execução.Essa liberdade significa que ferramentas diferentes podem apresentar experiências design completamente diferente para o mesmo run-time type.Para obter mais informações, consulte Armazenamento de metadados.
A edição do modelo de objeto
Na System.ComponentModel estrutura, designers personalizados acessar os controles de uma maneira mais vinculados por meio da classe PropertyDescriptor.Esta regra não é imposta pelo ambiente de design e erros resultado se esquecer um desenvolvedor acessar um controle por meio da classe PropertyDescriptor.
Na WPF Designer estrutura, designers personalizados interagem com controles em tempo de execução embora um modelo de objeto de edição.Esse modelo fornece uma camada de Indirection que abstrai os controles em um modelo e um modo de exibição.Esta modelo de objeto elimina a necessidade para acessar os controles por meio da classe PropertyDescriptor.
Similaridade para o framework ComponentModel Designer
Contextos de edição são a base para o WPF Designer.A classe EditingContext contém contextual estado sobre um designer.
O contexto de edição é semelhante a IDesignerHost conceitualmente e System.ComponentModel.Design interfaces no namespace.A interface IDesignerHost define vários recursos na sua interface, mas a classe EditingContext enfoca somente os recursos de dados e comportamento.
O contexto de edição expõe serviços em um modo que seja semelhante da IServiceContainer interface.O contexto de edição oferece suporte à enumeração e não dá suporte à remoção de Serviços depois que eles são adicionados.Para obter mais informações, consulte Editar contexto arquitetura.
Diferenças no atributo de uso
Atributos de designer têm significados diferentes na caixa WPF Designer e arquiteturas Formulários do Windows.A tabela a seguir descreve como designer-relacionados ao uso de atributo difere entre as duas estruturas.
Atributo |
Janela Propriedades Formulários do Windows |
Janela Propriedades de designer WPF e Inspector Propriedade Expression Blend |
|---|---|---|
Especifica o valor para passar para uma propriedade para fazer com que a propriedade para obter o valor de outra fonte.Isso é conhecido como ambience. |
N/A |
|
Especifica se uma propriedade ou evento deve ser exibido na janela Propriedades. |
Especifica se uma propriedade ou evento deve ser exibido na janela Propriedades.Quando explicitamente definida como true em uma propriedade que normalmente não é exibida, essa propriedade será mostrada. |
|
Especifica o nome da categoria na qual grupo de propriedade ou evento quando exibido em um PropertyGrid controle definido como modo categorizado. |
Especifica o nome da categoria na qual grupo de propriedade quando exibido em uma janela Propriedades. |
|
Especifica um valor padrão de uma propriedade. |
Para tipos de dados CLR, especifica o valor padrão para uma propriedade.Ignorado nas propriedades de dependência. |
|
Especifica uma descrição para um evento ou propriedade. |
N/A |
|
Especifica o nome para exibição para uma propriedade, evento ou público método void que leva sem argumentos. |
Especifica o nome que aparecerá na janela Propriedades para a propriedade que esse atributo é aplicado a. |
|
Especifica o editor para usar para alterar uma propriedade. |
Especifica o editor para usar para alterar uma propriedade, incluindo editores de categorias de várias propriedades. |
|
N/A |
EditorBrowsableState.Advanced Coloca um editor de categoria ou propriedade na expansor avançado. |
|
Especifica o contexto palavra-chave para uma classe ou membro. |
N/A |
|
Especifica se uma propriedade deve ser localizada. |
N/A |
|
Indica que representação de texto de um objeto é obscurecida por caracteres, como asteriscos. |
N/A |
|
Especifica se a propriedade vinculado a esse atributo é somente leitura ou leitura/gravação em tempo de design. |
Especifica se a propriedade vinculado a esse atributo é somente leitura ou leitura/gravação em tempo de design.Propriedades que são marcadas com o ReadOnlyAttribute exibirá o objeto somente leitura para Editor de sequência de caracteres no Inspector a propriedade. |
|
Indica que a janela Propriedades deve atualizar quando altera a valor da propriedade associado. |
N/A |
|
Especifica o tipo a ser usado como um conversor para o objeto este atributo está acoplado. |
Especifica o tipo a ser usado como um conversor para o objeto este atributo está acoplado. |
|
Especifica o evento padrão de um componente. |
Especifica o evento padrão de um componente, que determina a manipulador de eventos a ser criado em clicar duas vezes. |
|
especifica um valor padrão para a propriedade. |
Especifica a propriedade padrão de um componente, que determina qual propriedade é selecionada por padrão. |
|
Especifica a classe usada para implementar os serviços para um componente em tempo de design. |
N/A |
|
Especifica que o designer de uma classe pertence a uma determinada categoria. |
N/A |
|
Representa um atributo de um item da caixa de ferramentas. |
N/A |
|
Especifica a sequência de caracteres de filtro e tipo de filtro a ser usado para uma caixa de ferramentas. |
N/A |
|
N/A |
Usado para impedir que um tipo aparecendo na caixa de ferramentas quando um conjunto de módulos (assembly) é examinado para tipos para adicionar a caixa de ferramentas. |
|
N/A |
Usado para especificar quais itens serão adicionados para o caixa de combinação para o Editor de coleção ou sub-Properties Editor.Permite que uma fábrica deve ser especificado que personaliza a criação. |
|
N/A |
Usado para especificar a ordem na qual as propriedades na janela Propriedades aparecerão. |
Os seguintes atributos estão usados na WPF Designer estrutura, mas não na estrutura Windows Forms Designer.
Diferenças em ícones especificar Caixa de ferramentas
Na estrutura Windows Forms Designer, você especificar um ícone Caixa de ferramentas para o controle personalizado aplicando ToolboxBitmapAttribute a sua classe de controle.
Na WPF Designer estrutura, você usar um recurso incorporado e um convenção de nomeclatura para especificar um bitmap da Caixa de ferramentas.Além disso, você usar o ToolboxBrowsableAttribute para restringir os tipos em um conjunto de módulos (assembly) estão disponíveis para preencher uma caixa de ferramentas.
Diferenças na especificação de metadados
Em Formulários do Windows, metadados de designer é especificado declarativamente, Aplicando atributos, como DesignerAttribute.
Na arquitetura WPF Designer, metadados de designer é especificado em um armazenamento de metadados.Para obter mais informações, consulte Armazenamento de metadados.
Consulte também
Outros recursos
Extensibilidade do WPF Designer