WPF es un cambio de juego para mí. La aplicación insignia de mi empresa es un programa WinForms cuya interfaz de usuario se compila dinámicamente en tiempo de ejecución a partir de los metadatos. Fue todo un esfuerzo de seis meses, en total, para obtener la interfaz de usuario, incluso estable, y mucho menos atractivo. Todavía hay algunos errores que no he podido solucionar, en gran parte porque el código de la interfaz de usuario está irremediablemente entrelazado con el código del modelo de datos.Y no me hagas comenzar a usar los mangos de las ventanas.
Ahora que el sistema ha estado en producción durante un año más o menos, los clientes vienen a mí con solicitudes como, "Nos gustaría poder reordenar la información en esta pantalla arrastrando y soltando" y "Puede obtenemos esta información para mostrar en una cuadrícula en esta parte de esta pestaña? " y - mi favorito - "¿Podemos obtener el corrector ortográfico y el texto automático?" Esas solicitudes van a una cartera de pedidos que se está demorando bastante.
Me ha tomado bastante tiempo descubrir cómo refabricar el diseño de la aplicación para que pueda soportar una interfaz de usuario de WPF. (De hecho, eso es considerable subestimación. He estado lidiando con esto de manera intermitente durante un año y medio, y solo comencé a sentirme atraído una vez que rompí los libros de WPF de los que estaba trabajando y aprendí MVVM .) Una vez que lo hice, los resultados son espectaculares.
El código es mucho más simple. Hay mucha menos lógica para depurar. Todo en la interfaz de usuario es mucho más rápido, lo cual es importante porque la razón principal por la cual esta es una aplicación de escritorio en primer lugar es que necesitábamos una interfaz de usuario muy sensible. Mi programa puede crear miles de controles de UI sin tener que preocuparse por los identificadores de ventanas. La facilidad con la que puedo cambiar la apariencia del programa es asombroso.
(Un ejemplo: la interfaz de usuario presenta DataRow
s con una variedad de plantillas. Dado que una pantalla determinada puede tener docenas de filas y el cursor es algo pequeño, es útil para que el usuario sepa, de un vistazo, en qué fila está el cursor. Me tomó diez minutos implementar los estilos que ahora hacen que esta accesibilidad visual esté disponible en todas partes en mi aplicación. Eso es menos tiempo de lo que me llevaría a estimar esa característica si quisiera agrégalo a mi aplicación WinForms. De acuerdo, habría demorado mucho más tiempo si no se hubiera podido hacer agregando dos estilos. WPF no es realmente mágico.)
¿Hay inconvenientes? Como a la Sra. Palin le gusta decir, te apuesto. Examine algunas de las preguntas que hice en SO - la que está sobre how a no-op value converter changed the behavior of data binding es buena. Todo el enfoque de depurar enlaces es bastante frustrante, especialmente porque es muy fácil tener errores vinculantes y ni siquiera saberlo. (Ahora mantengo mi ventana de Salida en la pantalla en todo momento solo para que si hay algún error vinculante mientras estoy probando, el movimiento de los mensajes que se registran me llame la atención.) Sería bueno poder obtener una traza de pila real cuando su ventana arroja un XamlParseException
. No me hagas hablar, podría hablar toda la noche.
¡Y las herramientas! Las herramientas visuales de Visual Studio para construir UI WPF son completamente inútiles para mí. Tengo Blend, y lo he usado para volver a crear la plantilla de un control, pero en general me parece que usar Blend es como intentar correr a través de un pantano lleno de tapacubos y alambre de empacado. Estoy seguro de que es realmente increíble si todo lo que sabes es Blend, pero si lo que aprendiste primero es el modelo de objetos de WPF y XAML, el comportamiento de Blend es bastante misterioso. Los editores de XML en Visual Studio y Kaxaml me dan tristeza, y la funcionalidad WFF de Resharper es, digamos, un trabajo en progreso. Mucho, mucho prefiero las herramientas para WinForms que me permiten construir sin problemas y rápidamente el lento, peculiar e inamovible nido de códigos que estoy empezando a detestar.
"También estoy un poco preocupado de que WPF esté de moda por un par de años más y luego Microsoft se cansará de eso". Por otra parte, Microsoft ya está "cansado" de Windows Forms. – itowlson
@itowlson: no hay problema. Me gusta mucho SO, pero algunas personas aquí necesitan una vida. ¿Por qué las personas aquí son tan rápidas para cerrar preguntas? ¿Obtienes puntos cuando votas para cerrar una pregunta? No lo entiendo –