visual tutorial studio examples español ejemplos application aplicacion c# .net wpf winforms xaml

c# - tutorial - wpf vs windows forms



¿Qué debería saber un desarrollador de C#antes de usar WPF (6)

Soy más un administrador de sistemas y un administrador de sitios web que un desarrollador, pero en algún momento desarrollo, incluido C #, principalmente usando Winform (y opcionalmente GTK +).

Hace algunas semanas comencé un proyecto de WPF, y parece realmente poderoso, ¡pero al principio me siento como una gallina que encontró un cuchillo! ¡Hay tanta diferencia!

stackoverflow abunda sobre un tema como ese, y he leído cuidadosamente algunos que son similares como:

  • ¿Funciones ocultas de WPF y XAML?
  • ¿Qué debería saber un desarrollador experto en C # / .Net / WPF?

Pero, cuando alguien comienza con WPF de Winform, ¿cuáles son las diferencias a las que debe prestar atención?

[EDITAR]

  • ¿Qué hay de algunos consejos / enlaces para LINQ con WPF?
  • ¿Qué pasa con algunos consejos / enlaces WPF Navigation?

Gracias a todos, pero todo esto es un poco difuso, así que hice una compilación de recursos y agregué algunas cosas por mi cuenta, por favor díganme lo que piensan (o mejorar, lo hago Wiki de la comunidad)

Extrañamente, nadie ha hablado sobre LINQ, que parecía ser un elemento central de esta tecnología.

Otra cosa que parece importante saber dado el tiempo que perdí, es no usar el sistema de navegación WPF que parece no funcionar correctamente de numerosas fuentes que he leído. Entonces, parece importante usar un marco de navegación, como Magellan .

Y el sistema de eventos enrutados parece ser un punto importante a considerar en WPF, si alguien tiene algunos recursos interesantes al respecto, por favor agréguele a esta publicación.

RTFM

Software

Publicaciones de blog

Videos

El Proyecto de Código

Libros:

Otros temas de desbordamiento de pila

  • ¿Funciones ocultas de WPF y XAML?
  • ¿Qué debería saber un desarrollador experto en C # / .Net / WPF?
  • Preguntas que cada buen desarrollador de .NET debería poder responder.

Estoy de acuerdo con Arseny, aprender MVVM es fundamental para aprender WPF correctamente. No es una cuestión de nicho: cuando se aplica correctamente, puede hacer que su código sea más limpio, más simple y promueve el desacoplamiento y las pruebas unitarias.

Aquí hay un video muy agradable que explica tanto el concepto como la implementación: Jonas Follesø explica el patrón de diseño de MVVM . En el video, el tipo está hablando de Silverlight, pero la implementación en WPF es prácticamente idéntica.

Una vez que haya visto el video, y esté satisfecho con los principios básicos de WPF, podría empeorar mucho más que adoptar un marco que le quite la mayor parte del trabajo pesado y las cañerías. Lo recomiendo mucho a Caliburn Micro . Esto lo llevará por el camino de las mejores prácticas al animarlo a usar MVVM, pero también se encargará de gran parte de los detalles de codificación para usted. La documentación en el sitio es un poco delgada en el terreno, pero hay una serie de tutoriales que se están agregando constantemente.

Por ejemplo, al seguir MVVM normalmente tendrías una Vista (por ejemplo, una ventana) y un Modelo de Vista (una clase C #). Si tenía un cuadro de texto en la vista que contenía un número de orden, tendría una propiedad correspondiente en su ViewModel llamada OrderNumber. Usando una expresión de enlace WPF:

<TextBox x:Name="OrderNumber" Text="{Binding OrderNumber}" />

el cuadro de texto estaría vinculado a la propiedad en su ViewModel para que cuando el cuadro de texto o la propiedad cambia, el otro se actualice automáticamente. Usando un marco como Caliburn Micro no tiene que escribir ninguna expresión de enlace, usa un enfoque simple basado en convenciones. En el ejemplo anterior, si su cuadro de texto se llamaba OrderNumber y su propiedad ViewModel se llamaba OrderNumber, Caliburn supone que deben ser lo mismo y se vincula automáticamente por usted.

<TextBox x:Name="OrderNumber" />

Como se mencionó anteriormente, su XAML se vuelve mucho más simple y lo deja enfocado en hacer el trabajo. Desearía haber encontrado un framework como este anteriormente antes de comenzar a producir muchas de mis propias clases ViewModelBase, ViewLocaters, etc.


Lo más importante que un desarrollador de Winforms / C # debe saber / aceptar es que WPF es muy diferente de las formas de winforms y Winforms no es la forma correcta de hacer las cosas en WPF.

He visto a muchos desarrolladores de WinForms usar events / delegates y threads para resolver todos y cada uno de los problemas en lugar de usar el Binding , commands , triggers , etc.




WPF es completamente diferente de otros sistemas.

Tengo algunos años de WinForms, Win32 y experiencia en programación web, y creo que mi experiencia en programación web fue de lo más útil.

En cuanto a los libros, " Windows Presentation Foundation Unleashed " de Adam Nathan, Sams Publishing me ha ayudado tremendamente.