Pregunta

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 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 tenía una opción para crear una ventana de WPF: la única clase de WPF que podría crear es un Control de usuario de WPF. Como tenía algunos otros proyectos de WPF, copié App.xaml. * Y Window1.xaml. * De ese proyecto al mío, y los actualicé según fue 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 Main, que mostraba el formulario WinForm principal), y construí el proyecto. Recibí un error que indica que no hay un método Main.

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 & Quot; Aplicación WPF & Quot;), en las propiedades de la Aplicación puedo establecer la instancia de la clase Aplicación como un objeto de inicio. En mi proyecto convertido de 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 le 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 " real " Proyecto WPF? ¿Tengo otra opción además de 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 cambie eso, podría configurar mi instancia de Aplicación como el objeto de inicio, y mi aplicación se ejecutaría. Sin embargo, todavía no tengo una opción para crear ningún tipo de WPF que no sean los controles de usuario.

¿Fue útil?

Solución

No sé para cierto qué en el archivo del proyecto informa a Visual Studio qué tipo de proyecto se está utilizando, pero supongo que es " ProjectTypeGuids " es 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 que representan. Notarás que la guía comienza con & Quot; 60DC & Quot; coincide con la lista en el enlace para aplicaciones WPF.

Otros consejos

La respuesta de Sailing Judo funcionó para mí para convertir un proyecto 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 de proyecto. Si tiene varias etiquetas PropertyGroup, use la que no tenga 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 le pedirá que vuelva a cargar el proyecto.

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

Tristemente no.

Los proyectos WPF y Windows Forms no son muy compatibles.

  • Intenta extraer tanta irritabilidad código lógico en una biblioteca de clases
  • Crear una nueva solución en blanco
  • Agregar un nuevo proyecto WPF a la solución
  • Agregue el proyecto de biblioteca de clases al solución
  • Establecer la biblioteca de clases como una dependencia de el proyecto WPF
  • Recrea las ventanas en WPF

Espero que esto funcione para ti.

¡Mucha suerte con este esfuerzo!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top