tutorial net ejemplos asp c# wpf user-interface windows-runtime window

net - wpf c# tutorial



GUI de Windows: WPF o WinRT(2015+) (9)

Estoy tratando de obtener una visión general de las diferentes tecnologías, para utilizarlas al crear GUI en el mundo de Windows.

Por contexto, estoy construyendo un pequeño juego de plataformas multijugador en 2D. (Solo para fines de aprendizaje ...)

Mi maestro dice que piensa que WPF es el camino correcto, pero parece que solo lo compara con Windows Forms.

¿Tengo entendido que aquí en 2015, Windows Forms está totalmente muerto?

En estas otras preguntas de apilamiento, dicen que WinRT + XAML es para la construcción de GUI de Metro (¡cosa de mosaicos de Windows 8!), Y parece que WPF es algo utilizado solo para escritorio en Windows 7/8 y están estrechamente relacionados con Silverlight.

¿Cómo se compara Windows 8 Runtime (aplicaciones WinRT / Windows Store / Windows 10 Universal App) con Silverlight y WPF?

  • El escritorio es donde viven las aplicaciones antiguas (rojo. PMA).
  • La nueva clase de aplicaciones, aplicaciones Metro, se puede construir de varias maneras, incluso mediante VB.NET, C # o C ++. Estas tres opciones de idioma pueden usar XAML para construir la interfaz de usuario. La alternativa es usar JavaScript / HTML5 / CSS para el desarrollo de la interfaz de usuario y el código de la aplicación.

Mi verdadera pregunta es: ¿no hay UNA buena manera de construir GUI en el mundo de la ventana?

Y si no, qué tecnologías se deben usar en Windows 7, Windows 8 (Escritorio y Metro), Windows Phone, (¡Y Windows 10!), E incluso x-box.

¿Se compara con diferentes tecnologías de esta manera?

¿En qué crees que es lo correcto para invertir tiempo?


Ahora es abril de 2016 y todavía no hay una respuesta clara a esto. Estamos desarrollando una aplicación de escritorio de monitoreo de rendimiento en tiempo real muy moderna que tiene que representar múltiples gráficos y pantallas, entremezclados con texto y varios otros gráficos. Nuestra aplicación es C #, WPF con .NET Framework 4.5.2, pero todavía estamos escribiendo algunos componentes usando WinForms y GDI + para obtener un rendimiento aceptable. Simplemente no lo hemos logrado con WPF. Incluso hemos desarrollado un par de pantallas en la aplicación con DirectX, pero eso agrega mucha complejidad que solo algunos del equipo pueden soportar. La simplicidad y la velocidad pura que podemos obtener al alojar una pantalla WinForms dentro de WPF y la velocidad de GDI + nos dan lo que necesitamos a la costosa estructura de View / ViewModel, además de tener que lidiar con varios problemas de espacio aéreo. Nuestra aplicación es bastante especializada y me encantaría deshacerme de WinForms por completo, pero desafortunadamente esto todavía no es posible en nuestro caso. Para un rendimiento puro, deberá utilizar DirectX o WinForms.


Aquí hay mucho, pero aquí va:

  • ¿Windows Forms (Winforms) está muerto ? No. Todavía está activamente apoyado. Dicho esto, es una tecnología horrible para trabajar (al menos una vez que conoces la magia de WPF)
  • Si desea crear una aplicación de escritorio (clásica, no Metro) atractiva y bien diseñada, WPF es la respuesta en términos puramente .NET. Puede usar las API de WinRT (como sus clases de socket) pero no puede ejecutarlas en sistemas operativos antes de Windows 8. La interfaz de usuario sigue siendo WPF.
  • Las aplicaciones WinRT son para la Tienda Windows 8 (también están disponibles en la Tienda Windows 10). No puede usar WPF aquí, o WinRT en el escritorio, por lo que el lugar donde lo implementa determina lo que usa. Tiene razón en su comprensión de los idiomas / tecnologías disponibles.
  • Windows Phone 8 usa un tiempo de ejecución modificado de WinRT (esto ha cambiado en Windows 10). Para Win8 / WP8, puede usar aplicaciones "universales" para compartir la mayor parte del código entre una aplicación WinRT estándar y una aplicación de Windows Phone.
  • Windows 10 usa la Plataforma universal de Windows (UWP) que se basa en .NET Core. El código desarrollado para Windows 10 también se puede usar en Xbox One, Windows Phone 10 y HoloLens. WPF sigue siendo para aplicaciones de escritorio "estándar".
  • XBox es complicado. XNA se va, y Microsoft parece estar alejándose del contenido creado por la comunidad para la plataforma. Dicho esto, Unity puede implementarse en XBox, y creo que el desarrollo estándar de DirectX (C ++) funciona para ello. Las aplicaciones de la Plataforma universal de Windows también se pueden implementar en Xbox One, y esta parece ser la estrategia de Microsoft en el futuro.

En cuanto a en qué gastar tiempo, eso depende de lo que esté apuntando :). Aprender WPF / UWP + XAML le brindará muchos beneficios si desea mantenerse "actualizado" en el desarrollo de .NET GUI, así que eso es lo que yo buscaría. WPF tiene la mayoría de las características, por lo que al comenzar allí solo tiene que encontrar soluciones para lo que falta en UWP (o cualquier otra tecnología basada en XAML).

Si hace eso, asegúrese de aprender el patrón MVVM (Modelo-Vista-Vista Modelo). Funciona realmente bien con las tecnologías basadas en XAML y le permite compartir mucha lógica entre sus aplicaciones WPF y UWP. La misma lógica también se puede usar si eventualmente desarrolla aplicaciones Xamarin para iOS / Android, etc.

Tenga en cuenta que para un verdadero desarrollo de juegos, querrá un marco de juego real (como Unity3D o incluso XNA). Puedes hacerlo en WPF, y esa es una mejor opción que Winforms, pero ninguno de los dos está realmente destinado a juegos.


Es un hilo bastante antiguo, pero como me encontré con esto a través de Google (por interés), tal vez alguien más podría llegar aquí también. Esta es una pregunta que se hace una y otra vez por los nuevos programadores. Así que me gustaría responder algunas cosas también, ahora que Windows 10 se lanzó oficialmente.

En primer lugar, ya no se debe comenzar con Windows Forms. Es la tecnología más madura por ahora, pero no habrá más desarrollo de Windows Forms, ahora solo está en la etapa de mantenimiento. WPF se desarrolla activamente (la última vez que leí). Pero ahora, las aplicaciones universales de Windows (WinRT one) ya no necesitan usarse en pantalla completa, y pueden usarse en modo de ventana al igual que otras aplicaciones de escritorio (WPF y WinForms). Esto aumenta mucho su usabilidad en computadoras que no son tabletas. Creo que este será el futuro para las aplicaciones de escritorio también. Aunque, los softwares de WPF son las aplicaciones de escritorio tradicionales (sin permisos, solo UAC). De cualquier manera, no importa si aprende el desarrollo WPF o WinRT (usando .Net), terminará aprendiendo ambos. Ambos son XAML + C # (o algún otro lenguaje .Net). Estaba aprendiendo WPF cuando WinRT salió con Windows 8. Me sentí como en casa, solo unos pocos cambios menores a los que te acostumbras muy pronto. Sin embargo, no estoy seguro sobre el escenario MVVM (enlace de datos) en WinRT. Todavía estoy aprendiendo ese aspecto de WPF.

La ventana 10 acaba de lanzarse. Windows 8 / 8.1 no tuvo tanto éxito como Windows 7. Por lo tanto, si desea crear una aplicación que tenga una audiencia más amplia, debe usar WPF por ahora. Pero en un futuro próximo, WinRT será el camino a seguir.

Para su pregunta, "qué tecnologías se deben usar en Windows 7 , Windows 8 (Escritorio y Metro), Windows Phone (¡y Windows 10!) E incluso x-box", la respuesta única es Windows Universal Apps. Esta es la razón exacta por la que se desarrolló este marco. Una tecnología que se utilizará para desarrollar aplicaciones para todos los dispositivos. Computadora de escritorio, tableta, teléfonos (incluido Android con Xamarin incluido con Visual Studio 2015), Xbox e IoT (Internet de las cosas).


Este es un hilo antiguo pero importante con el progreso actual del marco .NET, las características de c # y un mayor enfoque en c # como una opción de desarrollo de juegos.

WPF casi nunca se elige como plataforma de juego ac # con toda honestidad. Los problemas de espacio aéreo de WPF asustaron a la gente bastante rápido. No creo que muchos (si los hay) títulos principales o motores de juegos principales sean compatibles con WPF como plataforma objetivo debido a esto. ¡WPF es una gran plataforma para lanzadores de juegos!

WinForms, aunque ahora está en modo de mantenimiento, seguirá siendo una opción válida en los próximos años. Está probado y estable. Por lo que he visto, incluso en 2017, WinForms sigue siendo la plataforma más común elegida para el desarrollo de juegos basado en c #.

Si observa los datos de Steam Hardware Survey , puede ver que al momento de escribir esta respuesta (julio de 2017), Windows 10 de 64 bits es ahora la plataforma de juegos de PC dominante con una participación de mercado del 50%, seguido de Windows 7 de 64 bits con 32% y Windows 8.1 de 64 bits a casi el 7%. La cuota de mercado de todas las demás plataformas del sistema operativo es tan pequeña que apenas vale la pena considerar algo más que estas tres.

Siendo ese el estado actual de los juegos de PC, WinForms es el denominador más común para apuntar a las 3 principales plataformas de PC. Mirando hacia el futuro, UWP será la mejor plataforma objetivo para el desarrollo de juegos de C #, ya que Windows 7 y 8 pierden una importante participación de mercado en Windows 10, a menos que aparezca una nueva plataforma que lo reemplace. Entonces eso es solo por los números.

Si la elección se basa en el mejor nivel de compatibilidad por plataforma de sistema operativo en lugar de admitir la cuota de mercado máxima, las opciones serían más como:

  • Windows 10: UWP
  • Windows 8.1: WinRT o la Tienda Windows
  • Windows 7: WinForms

La mayoría de las otras respuestas se centran en el desarrollo de aplicaciones estándar de Windows, pero el desarrollo de juegos es un ámbito muy diferente y diferentes factores influirán en sus elecciones, como el sistema operativo de destino y cuál es la mejor opción de API gráfica o motor de juegos.


He trabajado con tecnologías de Microsoft durante 10 años. Lo más importante que aprendí es no solo escuchar lo que Microsoft te ofrece. Cuando Microsoft dice que este es el futuro, tiene un 50% de posibilidades de equivocarse. Microsoft seguramente hará lo mejor que pueda para promocionar los productos en los que invirtió, pero eso no significa que deba seguirlo. Mira lo que sucede con WCF y Silverlight.

Aunque WPF es una plataforma muy agradable para aprender, tiene una gran curva de aprendizaje. No creo que ningún desarrollador con menos de 5 años de experiencia en programación pueda hacer WPF correctamente.

Al seguir el patrón MVVM, encontrará que hacer algo relativamente fácil en WinForm puede ser muy desafiante en WPF. Al igual que el color de una celda en función de alguna condición después de una actualización, o desplazar una fila en la vista y resaltarla.

Por supuesto, puedes decir que no tienes que hacer MVVM. Simplemente ponga su código en el código detrás y haga que funcione. Sí, eso funcionará, pero ¿qué sentido tiene usar WPF? ¿Por qué no solo usar Win Form?


Me encontré con esta pregunta hace un año. Llegué a la conclusión de que si XAML, WPF o WinRT son el entorno de desarrollo correcto para empezar.

Recomiendo encarecidamente usar .Net Framework para la capa de datos (incluidos los servicios web y la capa RESTful (JSON)) y HTML5 / CSS3 puro y Javascript para su capa de presentación web.

Dentro de Windows 10 puede integrar cualquier aplicación web como una aplicación de metro recién sacada de la caja.

WinRT, XAML, WPF y otras cosas similares se ejecutan solo en Windows y tienen muchas limitaciones.

Entonces, después de un año, todavía estoy muy contento con mi decisión de no usar WinRT o XAML para mi nuevo proyecto.


Mis dos centavos ... si quieres verdaderas aplicaciones universales, es decir, programas que pueden ejecutarse en CUALQUIER sistema operativo de escritorio, incluido Windows, WinForms sigue siendo el camino a seguir. Solo asegúrese de mantener la compatibilidad con CLR, y puede implementar en Mac y Linux a través de Mono. Un gran beneficio. XAML puede ser genial, pero no se transferirá a otros sistemas operativos.

Personalmente, me parece aterrador el modelo de negocio de UWP sandboxed (quicksanded?); Contrarresta la apertura que Windows ha representado desde el principio.


Trataré de responder solo una de sus preguntas:

¿Windows Forms está totalmente muerto?

No, la tecnología de formularios de Windows no está muerta. Te diré por qué. WPF y XAML es una tecnología muy completa y compleja y puede crear una interfaz de usuario muy agradable. ¡Pero! Esta tecnología requiere un conocimiento profundo. Para diseños básicos, no necesita tanto conocimiento, pero para algunos diseños avanzados debe tener un conocimiento profundo y cuando comencé con esta tecnología y pasé mucho tiempo buscando algunos consejos en google. Entonces, cuando necesito algunos formularios simples para la entrada del usuario, siempre elijo la tecnología de formularios Windows Forms, que es muy simple y directa. Esta es también la razón por la cual esta tecnología tuvo mucho éxito cuando vino al mundo. Cuando comienza con WPF, también necesita saber qué es el patrón de diseño MVVM y algunos programadores no experimentados se confunden con eso.


WinRT ha estado en el escritorio durante mucho tiempo, estoy escribiendo WinRT, que se ejecuta en mi escritorio. Y en Windows 10, esas aplicaciones admitirán ubicaciones no acopladas (con ventanas como las conoce tradicionalmente).

No recomendaría WinForms o WPF a nadie que empiece hoy. Deben aprender WinRT / XAML principalmente. Y aprenda algo de Win32 / .net según lo necesite, según el idioma que elija.

"Dicen que WinRT + XAML es para la construcción de la GUI de Metro (cosa de los mosaicos de Windows 8)" - Esto es una abstracción tan excesiva que es inútil. WinRT es un tiempo de ejecución, como Win32, no es solo para GUI, así que lo que "dicen" es BS completo. XAML es una capa de interfaz de usuario (al igual que XAML en WPF), pero decir que Metro GUI también está mal, ya no existe Metro GUI. XAML es la capa de IU de Windows. Y "Windows 8 azulejos cosa!" es expresivo de la visión del túnel de ciertas personas. Sería como si yo dijera que Win32 es una cosa del menú de inicio. Puedes ver lo ridícula que es esa afirmación.