Qual é a maneira mais fácil de atualizar um grande C # winforms aplicativo para WPF

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

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu trabalho em uma grande aplicação C # (aproximadamente 450.000 linhas de código), estamos constantemente a ter problemas com a pilha de desktop e vazamentos de identificador GDI. WPF resolve esses problemas, mas eu não sei qual é a melhor maneira de atualizar (eu espero que isso vai levar um longo tempo). A aplicação tem apenas algumas formas, mas estes podem conter muitos conjuntos diferentes de facilidade de controles que são determinados através de programação.

Este é um aplicativo interno da empresa para que os nossos ciclos de lançamento são muito curtos (normalmente três semanas ciclo de lançamento).

Existe algum caminho de atualização gradual ou temos de aproveitar o sucesso em um esforço maciço?

Foi útil?

Solução

Você pode começar criando uma série WPF.

Em seguida, você pode usar o controle para hospedar seu aplicativo atual. Então, sugiro a criação de uma biblioteca de seus novos controles em WPF. Um de cada vez, você pode criar os controles (sugiro tornando-os controles personalizados, não usercontrols). Dentro do estilo para cada controle, você pode começar com o uso do controle para incluir o controle Windows Forms "velhos". Então você pode tomar seu tempo para refatorar e recriar cada controle como WPF completa.

Eu acho que ainda vai levar um esforço inicial para criar seus invólucros de controle e projetar uma série WPF para o aplicativo. Eu não tenho certeza que o tamanho da aplicação e ou a complexidade dos controles de usuário, então eu não tenho certeza de quanto esforço que seria para você. Relativamente falando, é significativamente menos esforço e muito mais rápido para que você obtenha aplicativo instalado e funcionando em WPF desta forma.

Eu não apenas fazer isso e esquecê-la embora, como você pode executar em problemas com controles sobrepostos uns aos outros (Windows Forms não joga bem com WPF, especialmente com transparências e outros recursos visuais)

Por favor, nos atualizar sobre o status do projeto, ou fornecer mais informações técnicas, se você gostaria orientação mais específica. Thanks:)

Outras dicas

Você usa um monte de controles de usuário para as peças? WPF pode hospedar controles de winform, assim que você poderia Piecewise trazer peças para a forma principal.

WPF permite janelas incorporar formas controles de usuário em um aplicativo WPF, o que pode ajudá-lo a fazer a transição em etapas menores.

Dê uma olhada na WindowsFormsHost classe na documentação do WPF.

Eu assumo que você não está apenas looing para um ElementHost para colocar o seu vasto aplicativo WinForms. Isso não é de qualquer maneira uma verdadeira portabilidade para WPF. Considere as respostas sobre este Tópico Quais são os obstáculos maiores para superar a migração do WinForms para WPF? , será muito útil.

Há um white paper muito interessante sobre a migração de um aplicativo 2.0 winform .NET para WPF, consulte evoluindo para um 3,5 aplicativo .NET

Paper abstract: Neste artigo, eu estou indo para delinear alguns dos processos de pensamento, decisões e questões que teve de enfrentar quando a evoluir um aplicativo do Microsoft .NET a partir 1.x / 2.x para 3.x. Vou olhar como nós ajudou nosso cliente a adotar a nova tecnologia, e ainda manteve um calendário de lançamento aceitável para o negócio.

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