visual studio que learn introduccion gratis developer .net wpf winforms visual-studio-2008 upgrade

.net - studio - Actualización de una aplicación WinForms a WPF



visual studio manual (3)

Tengo un proyecto paralelo que escribí hace unos años en WinForms. Para ayudarme mejor a aprender WPF, me gustaría volver a escribirlo en WPF. Idealmente, me gustaría modificar el proyecto actual que tengo y reescribir la interfaz de usuario en WPF en lugar de crear un nuevo proyecto.

Tengo algunos problemas para hacer eso. Hice lo siguiente (usando Visual Studio 2008 SP1):

  1. Cambió el marco de destino de 2.0 a 3.5.
  2. Se agregaron las referencias de PresentationCore, PresentationFramework y WindowsBase.

En este punto, noté que algo andaba mal. Cuando hice clic derecho en el proyecto y seleccioné Agregar | Nuevo elemento, no tuve la opción de crear una ventana de WPF: la única clase de WPF que pude crear es un control de usuario de WPF. Como tenía otros proyectos de WPF, copié App.xaml. * Y Window1.xaml. * De ese proyecto al mío, y los actualicé según fuera necesario (básicamente, solo cambié el espacio de nombres de ese proyecto al espacio de nombres de mi proyecto).

Luego eliminé Program.cs (que anteriormente contenía el método principal, que mostraba el formulario principal de WinForm) y construí el proyecto. Recibí un error que indica que no hay un método principal.

Parece que internamente Visual Studio sabe que este proyecto es realmente una aplicación WinForms, y no una aplicación WPF. En un proyecto WPF (creado al seleccionar "Aplicación WPF"), en las propiedades de la Aplicación puedo establecer la instancia de la clase Application como un objeto de inicio. En mi proyecto convertido WinForms, esa no es una opción.

Eché un vistazo rápido al archivo .csproj en un editor de texto, pero no pude encontrar nada que dijera a Visual Studio que el proyecto es realmente WinForms en lugar de WPF.

¿Qué más debo hacer para convertir mi proyecto WinForms en un proyecto "real" de WPF? ¿Tengo otra opción que no sea crear un nuevo proyecto y simplemente reemplazar mi proyecto actual?

Actualización: Eché un vistazo más de cerca a los archivos .csproj y noté que App.xaml se agregó como una página:

<Page Include="App.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page>

Sin embargo, en mi otro proyecto WPF, es una definición de aplicación. Una vez que cambié eso, pude configurar mi instancia de aplicación como el objeto de inicio y mi aplicación se ejecutaría. Sin embargo, todavía no tengo la opción de crear ningún tipo de WPF aparte de los controles de usuario.


No sé con certeza qué en el archivo del proyecto informa a Visual Studio qué tipo de proyecto se está utilizando, pero mi suposición es que "ProjectTypeGuids" es la clave.

Mis proyectos de WPF tienen esto:

<ProjectTypeGuids> {60dc8134-eba5-43b8-bcc9-bb4bc16c2548}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} </ProjectTypeGuids>

Aquí hay un enlace que encontré que describe las guías y qué tipo de proyecto representan. Notará que el guid que comienza con "60DC" coincide con la lista en el enlace para las aplicaciones WPF.


Tristemente no.

Los proyectos WPF y Windows Forms no son muy compatibles.

  • Trate de extraer tanto código de lógica inquieto en una biblioteca de clase
  • Crea una nueva solución en blanco
  • Agregar un nuevo proyecto WPF a la solución
  • Agregue el proyecto de biblioteca de clase a la solución
  • Establecer la biblioteca de clases como una dependencia del proyecto WPF
  • Recrea las ventanas en WPF

Espero que esto funcione para usted.

¡Mucha suerte con este esfuerzo!


La respuesta de Sailing Judo funcionó para convertir un proyecto de WinForms en un WPF, pero no describió en detalle lo que se necesita;

  1. Abra el archivo csproj para el proyecto que desea convertir.
  2. Busque la cadena <ProjectTypeGuids> - lo más probable es que no exista.
  3. Agregue lo siguiente dentro de la etiqueta del archivo del proyecto. Si tiene varias etiquetas PropertyGroup , use una sin un atributo Condition (por ejemplo, las propiedades predeterminadas).

    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

  4. Guardar - si tiene el proyecto abierto, VS pedirá volver a cargar el proyecto.

Por lo que veo y pruebo, ahora puedo agregar WPF Windows y WinForms fácilmente. Mis WinForms más antiguos también funcionan sin problemas.