Quais são as suas estratégias para usar Expression Blend no complexo dissociado aplicativos WPF?

StackOverflow https://stackoverflow.com/questions/820547

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu venho fazendo aplicativos WPF com o padrão MVVM usando o Visual Studio, codificação C # e XAML principalmente com a mão.

Agora fui até a velocidade com o Expression Blend para que eu possa clique pedidos em conjunto WPF rapidamente apenas usando a GUI, que é muito bom, muito mais controle do layout de brincar com todos os elementos XAML 80% dos seu tempo.

Mas parece que as minhas aplicações em Expression Blend são mais simples e necessariamente acoplada, usando eventos que são manipulados no de trás do código, etc.

Acho que é difícil imaginar como eu iria com esta abordagem mais simples do Expression Blend para uma aplicação MVVM dissociado com vistas, ViewModels, eventos roteados e comandos, etc. além de apenas tomar todo o meu projeto em Visual Studio e reorganizar -lo ao ponto que eu não poderia realmente editá-lo visualmente mais no Blend, mas seria voltar a usar mistura para criar pequenos pedaços de XAML que eu colar no Visual Studio.

Para aqueles de vocês que estão trabalhando com aplicações mais complexas com Expression Blend, quais são suas estratégias para manter seus projetos dissociado de forma MVVM, mas ao mesmo tempo estruturado "no caminho Expression Blend" (onde você ainda pode ver e editar peças inteiras de sua aplicação de uma forma que faz sentido visualmente) de modo que você pode continuar a editar-los na GUI Mistura como eles escala?

Foi útil?

Solução

Eu tenho usado Mistura em primeiro lugar como uma ferramenta rápida prototipagem. Para este fim, eu realmente gosto. Em particular, acho que é muito útil quando eu não tenho certeza de como as coisas configurar para obter o layout / comportamento que eu quero.

Eu raramente editar minhas principais arquivos de projeto diretamente no Blend. Acho que é cria de marcação que é desnecessariamente complexo ou detalhado. Além disso, como eu ficar mais familiarizado com WPF / XAML, eu me encontrar usando Mistura cada vez menos.

Outras dicas

Eu tenho usado o Blend para a interface do usuário dos meus projetos desde a versão 1. Ser que meu objetivo é integrar plenamente o designer para o projeto, tenho arado através de quaisquer fica no caminho desse objetivo. Apesar de não estar ciente de MVVM já há algum tempo, eu, naturalmente, chegou à mesma conclusão, e têm vindo a fazer ViewModels sem saber que havia um padrão para eles. Agora, com a ajuda de outras pessoas que estão trabalhando no sentido de MVVM, está ficando melhor o tempo todo. Eu já desenvolveram 3 aplicações com interface rica e funcionalidade onde toda a interface do usuário foi feito no Blend. O artigo de leitura Josh Smith MSDN, olhar no trabalho de Jason Dolinger, e da obra de Karl Shifflett para mencionar apenas alguns.

Olhe atentamente para usar ICommand, INotifyPropertyChanged, os ObservableCollections.

Além disso, olhar para como você pode manipular os controles de seu ViewModel. Como exemplo, há ICollectionView. Suponha que você tem uma lista de animais, e você tem um conjunto de tipos que deseja filtrá-los por (aves, mamíferos, etc.)

Ao usar ICommand e ICollectionView, você poderia expor controle suficiente onde um designer pode construir uma caixa de listagem para mostrar os animais, e um menu para mostrar a lista de filtros. Há funcionalidade suficiente em ICollectionView para saber o que a seleção atual é, e se você tivesse comandos baseados em ICommand para "SortByBird", "SortByMammal", etc, em seguida, quando o designer fez o menu, ele (assumindo contexto da janela foi o seu ViewModel para Nesta janela) forneceria o designer com as opções apropriadas para vincular a.

Eu estou trabalhando atualmente com outra equipe na minha empresa explicando como meus projetos foram criados, e eles estão respondendo positivamente ao novo papel do designer usando Blend.

Eu não tenho sido capaz de usar com sucesso o final Mistura ao fim para isso.

Eu acho, no caso geral, é mais rápido para editar XAML à mão em VS (exceção seria incluir qualquer coisa com escovas não-padrão, por exemplo). Mistura é muito clique com o botão feliz, e não é muito rápido para cima.

Outra área onde Blend é realmente útil é a criação de estilos / modelos de controles existentes.

Além disso, eu não estou ainda vendido. Suas capacidades de cair quando usando datacontexts instanciado-código isso não é nenhuma ajuda lá, e ele tende a gerar marcação inútil, tamanhos estáticos e tal, que eu realmente não gosto.

Blend é ótimo para dar uma idéia sobre como as coisas pode ser feito, mas o XAML que faz é terrível e fortemente acoplados. Como você aprende lado do xaml das coisas melhores que você vai descobrir que é muito mais rápido para apenas escrever o XAML do que o uso Blend. Até chegar a esse ponto, você pode fazer as alterações na mistura, mas então você deve refatorar o xaml ele cria para torná-lo menos fortemente acoplados e tirar os elementos da interface estranho.

Eu sou um pouco tarde para essa festa, mas espero que alguém ainda pode responder. Eu ainda tenho que encontrar um resultado de pesquisa que descreve o processo para desenhar uma linha entre o designer e programador. A primeira parte é MVVM assim não há qualquer ligação entre o GUI e o subjacente "lógica de negócios", e eu estou trabalhando duro para aprender isso agora. A outra parte que eu não vi ninguém escrever sobre é, como você realmente ir sobre a criação de um projeto no Blend para que o desenvolvedor pode, basicamente, dar-lhe uma DLL GUI do tipo, e depois GUI do aplicativo muda magicamente?

Aqui está o que eu estou procurando - o desenvolvedor escreve o seu código como de costume, e também escreve uma interface gráfica muito básico que prova que tudo funciona como esperado. Enquanto isso, o designer está criando seu pequeno GUI legal com toda a usabilidade características as pessoas têm vindo a esperar. Agora, o desenvolvedor pode executar seu aplicativo com sua interface gráfica, mas, em seguida, também pode mudar para GUI do designer na mosca.

Eu acho que se ele não pode ser feito em tempo real, isso significa que, no caso ideal que o desenvolvedor teria sua solução VS incluem o XAML da solução de mistura? Então, em App.xaml apenas referência a um arquivo de início diferente?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top