Partilhar via


A edição do modelo de arquitetura

A implementação de tempo de design interage com controles em tempo de execução embora uma chamada de modelo de edição interface de programação.Os objetos que está sendo desenvolvidos são chamados editáveis objetos .Este tópico descreve a arquitetura e o uso do modelo de edição na caixa Windows Presentation Foundation (WPF) Designer for Visual Studio.

Os controles são definidos em Extensible Application marcação idioma (XAML).Você atualizar o XAML livre para os controles por meio de programação usando o modelo de edição.

Modelo, conteúdo adicional e exibir

O modelo de edição consiste em três subunits funcionais: um modelo, um wrapper público que abstrai o modelo e um modo de exibição que representa a interface de usuário (UI) do modelo.O modelo e o modo de exibição são separadas, mas o invólucro e o modelo estão intimamente relacionadas.A ilustração a seguir mostra a relação entre as três subunits.

O ambiente de design usa o tipo ModelItem para se comunicar com o modelo subjacente.Todas as alterações são feitas para os ModelItem invólucros, que afetam o modelo subjacente.Isso permite que o modelo a ser simples.Os invólucros ModelItem manipular complexos recursos Designer, como o suporte a transações, desfazer de controle e Alterar Notificações.

Criação da Instância

Qualquer recurso Designer que requer criar novos objetos sobre o superfície de design usa a classe ModelFactory.Cada objeto no designer é empacotado com uma ModelItem instância.São criados por um ModelFactory modelo itens.

A ilustração a seguir mostra uma ModelFactory típica.

ModelItem newButton = ModelFactory.CreateItem(_context, typeof(Button));

O método CreateItem sempre retorna um tipo de dados de ModelItem.Esta é a tipo base de todos os itens de WPF Designer modelo de edição, e ele representa uma instância do tipo passado para o método CreateItem Quebra Automática.O método CreateItem também requer uma instância de um contexto de edição WPF Designer (_context no exemplo de código anterior), que é usado para localizar outros serviços e as dependências no designer.

Criação explícita de item por meio da fábrica somente é importante para os objetos para serem colocadas sobre o superfície de design que podem ter inicializadores padrão.Esse procedimento não é necessário ao você é simplesmente definir propriedades para valores.

Opções de criação

Às vezes, você precisará personalizar o comportamento de criação dos seus objetos.Por exemplo, um componente conexão de banco de dados não pode escolher consultar o banco de dados em tempo de design.Convém ter controle ao longo do tempo de criação A primeira da instância que um componente é criado.

Nesse caso, um componente é arrastado da Caixa de ferramentas ou colado da Área de transferência.Convém pré-configurar o componente com padrões utilizáveis.Esses padrões, se inalterada, são serializados para o XAML.

Você pode passar um conjunto opcional de sinalizadores para o método CreateItem usando a enumeração CreateOptions.A tabela a seguir mostra valores para essa enumeração e seu uso.

O sinalizador InitializeDefaults é usado pelas ferramentas como a ferramenta de criação para inicializar um conjunto de valores de propriedade pré-configurado.Por exemplo, um ContentControl pode fornecer algum conteúdo padrão.Isso não terá o local de corretamente especificar valores padrão das propriedades no código de controle de tempo de execução.

Valores definidos com esse sinalizador persistem no XAML.

Este sinalizador não deve ser usado pela análise de código, como os padrões podem ter sido removidos pelo usuário durante a edição do objeto no designer.

A chamada para o método CreateItem requer CreateItem.Esse método executa várias etapas, descritas o fluxograma a seguir.

Alterando o pai de um item para um novo recipiente

Além disso, para criar novos itens, outra tarefa comum Designer é para alterar pai de um item para outro.Isso é tratado por um classe estática chamado ModelParent, que fornece recursos comuns para a maioria dos requisitos paternidade.

  • Localizando um objeto pai válido, fornecido um deslocamento de coordenadas ou item inicial na hierarquia para pesquisar.

  • Determinar se um determinado objeto pode ser um pai de um tipo específico.

  • Alterando o pai de um objeto para outro.Essa alteração também remove o antigo pai do objeto.Essa remoção permite que o pai antigo a oportunidade para limpar os dados, por exemplo, anexado propriedades, que podem residir no item.

A classe ModelParent funciona, localizando uma ParentAdapter classe de objetos pai atuais e propostos.Se nenhuma classe ParentAdapter existir, um objeto não pode ser atribuído a um pai.A classe ParentAdapter define vários substitui para casos comuns.Por exemplo, substitui muitas aceitar um objeto GestureData como um parâmetro.Esta tipo de dados está disponível no mecanismo de linha de comando WPF Designer quando o código está manipulando um comando de usuário.Ele fornece informações contextuais comuns.

O ParentAdapter Permite recipientes executar remoção inteligente pai.Por exemplo, se um objeto com um Canvas controle pai está sendo alterado para um Grid controle pai, propriedades do controle Canvas anexado no objeto podem ser removidas automaticamente.

Consulte também

Referência

EditingContext

Microsoft.Windows.Design.Services

GestureData

ModelDocumentTreeManager

Outros recursos

Extensibilidade do WPF Designer