Propriedade de edição de arquitetura
Visualmente editando propriedades de objeto é um recurso importante do Windows Presentation Foundation (WPF) Designer for Visual Studio.Este tópico descreve a arquitetura da propriedade WPF Designer Edição do sistema.
Propriedade entrada
A classe PropertyEntry representa a propriedade próprio.A classe PropertyValue representa o valor subjacente de uma propriedade.
Categoria editores
Um editor de categoria permite que o usuário final para editar várias propriedades em uma categoria ao mesmo tempo.As propriedades que são associadas com um editor de categoria não são mostradas em outro lugar na janela Propriedades.Propriedades que não são editadas por esse editor de categoria será visível e editável.Você pode especificar quais propriedades dentro de uma categoria são editadas por um editor de categoria.
A propriedade Value editores
Um editor de valor de propriedade define como um tipo específico é exibido e editado em janela Propriedades de um designer visual.Propriedade valor editores desempenham uma função na caixa WPF Designer,semelhante da UITypeEditor classe na arquitetura System.ComponentModel.Os WPF Designer editores, no entanto, são independentes do System.ComponentModel e arquitetura Formulários do Windows.
Um PropertyValueEditor possui as partes listadas na tabela a seguir.
Propriedade valor Editor parte |
Descrição |
---|---|
Editor in-line (também chamado modo de exibição ) |
Um editor hospedado no mesmo espaço físico como o modo de exibição na janela Propriedades de hospedagem.Por exemplo, consulte a propriedade Margin. |
Editor estendido |
Um editor que normalmente não é hospedado no local.Este é o equivalente do editor lista suspensa Estilo na System.ComponentModel Arquitetura.Por exemplo, consulte a propriedade HorizontalAlignment. |
Caixa de diálogo |
Um editor que é implementado em seu próprio caixa de diálogo.Por exemplo, consulte a propriedade RowDefinitions. |
Você pode usar os padrões para as modo de exibição e editor embutido partes.Um PropertyValueEditor não é necessário para fornecer uma parte estendido Editor.
Cada parte é um DataTemplate WPF.Cada parte é independente dos outros e pode ser usado de forma independente.
A janela Propriedades de hospedagem fornece o quadro ao redor de modo de exibição e editores.Isso permite que o host fornecer um estilo consistente em editores e permite que hosts fornecer diferentes estilos diferentes.Por exemplo, Expression Blend e Visual Studio fornecer uma aparência diferente e o comportamento para suas respectivas propriedades janelas.
O WPF associação de dados e um conjunto padrão de RoutedCommand WPF objetos fornecem o mecanismo de comunicação entre o host e as PropertyValueEditor partes.
No caso mais simples, uma parte de valor Editor pode ser um DataTemplate que contém controles padrão WPF.Em casos mais complexos, uma parte tipo pode ser um DataTemplate que faz referência a controle personalizado.
Você pode implementar quatro tipos diferentes de editores valor da propriedade, que são listados na tabela a seguir.
Propriedade Tipo de valor Editor |
Descrição |
---|---|
Simples |
O editor de valor de propriedade é composto por um editor embutido. |
Estendido |
O editor de valor de propriedade consiste em um editor estendido e um editor embutido. |
Dialog |
O editor de valor de propriedade consiste em um editor estendido e um editor embutido. |
Classes de infraestrutura
Classes de infraestrutura são necessárias para qualquer implementação editor de valor de propriedade.Essas classes são listados na tabela a seguir e consistem de infraestrutura para hospedar ou criação editores Valor Principal.
Classes de infraestrutura |
Descrição |
---|---|
Representa o valor de uma propriedade. |
|
O classe base para valor editores. |
|
RoutedCommand Tipos e implementações de identificadores para os comandos padrão. |
|
O Abstract classe base para caixa de diálogo valor editores.
|
Propriedade Editor valores de implementação
As seções a seguir descrevem aspectos de implementar um editor de valor de propriedade.
Valor StringValue e coleção
O modelo PropertyValue possui três propriedades relacionadas ao valor da propriedade.As propriedades PropertyValue listadas na tabela a seguir.
Propriedade PropertyValue |
Descrição |
---|---|
Um objeto representação dos dados. |
|
Um representação de sequência de caracteres dos dados, que podem ser usados para exibir ou de serialização. |
|
Uma coleção representação dos dados. |
StringValueUm representação de sequência de caracteres dos dados, que podem ser usados para exibir ou de serialização.Valor e StringValue Cache qualquer conjunto chamadas.
O cache para StringValue é liberado quando valor está definido.O cache para é liberado quando valor está definido.Isso significa que quando ImmediateValue é definida, o cache para valor e StringValue são liberados.
Um cenário comum é para oferecer suporte a atualização da propriedade que está sendo criada (como os tipos de usuário), onde os dados vinculados à entrada de texto é StringValue dinâmica.No entanto, a propriedade base é definida somente quando o texto dinâmico atende a determinados critérios.
Requisitos PropertyValueEditor
Um editor de valor de propriedade corretamente implementado deve satisfazer os requisitos a seguir.
O editor de valor de propriedade deve ser projetado de tal forma que a editor embutido e partes estendido Editor podem ser usados independentemente.
Um editor de valor de propriedade não devem armazenar estado.Propriedade valor editores são sem-estado, podem ser armazenado em cache por um implementação de host e podem ser reutilizados por vários valores de propriedade.
Um editor de valor de propriedade não deve presumir que apenas um valor Editor parte (Exibir/inline/estendido) controle é ativa em um determinado momento.Por exemplo, um caixa de diálogo poderia ter a parte modo de exibição, parte in-line e parte interface do usuário estendida ativa ao mesmo tempo.
Um controle, implementado como parte de uma editor de valor de propriedade não deve armazenar estado.Um controle, implementado como parte de um editor valor não deve presumir que ele só será acoplado a um valor da propriedade.Os controles podem ser reciclados para alterar valores de propriedade diferente.Qualquer informação armazenada em cache deve ser liberada se o modelo de dados for atualizado.
Um controle, implementado como parte de uma editor de valor de propriedade não deve fazer suposições sobre o host ou seus controles pai.Os mecanismos de comunicação apenas que devem ser usados são a PropertyValue modelo de dados, by Way of o DataContext, e definir o padrão de comandos.