visual tutorial studio pagina examples español application aplicacion .net wpf

.net - tutorial - wpf visual studio 2017



¿Qué es lo que más le resultó difícil de entender al aprender WPF[cerrado]? (12)

Qué poco de WPF hiciste

  • encontrar el más difícil de entender
  • o incomprendido por más tiempo

y cómo lo entendiste al final (proporciona enlaces, etc.).

(Estoy pidiendo esto para guiar mi aprendizaje de WPF)


Dependency Properties tomó un tiempo. Aquí hay un buen artículo , y otro que me ayudó con este nuevo concepto.

El segundo artículo contenía el siguiente párrafo que realmente aclaraba algunas preguntas que tenía.

Un valor clave del sistema Dependency Properties era la capacidad de crear propiedades que notificasen automáticamente a cualquier parte interesada registrada cada vez que cambiara el valor de la propiedad. Esta implementación libre, indolora y automática del patrón de observador es tremendamente poderosa y reduce en gran medida la carga del programador cliente (de hecho, el sistema de enlace de datos depende de ello).

En términos más generales, también he encontrado que la experiencia previa con el desarrollo web (en particular la IU del navegador) es muy útil para "obtener" WPF. Se trata más de la mentalidad que le permite llevar a WPF, en comparación con alguien que solo haya trabajado alguna vez con Windows Forms u otras aplicaciones de clientes enriquecidos.

Algunos paralelos más obvios del mundo de la web son CSS, diseños fluidos, animación jQuery, borboteo / enrutamiento de eventos y simplemente estar cómodo con los extensos modelos de objetos de navegador y DHTML.


Diría que los puntos más difíciles cuando comencé a aprender WPF fueron:

  • Estilos y plantillas: me tomó un tiempo entender cuándo usarlos y cómo interactúan entre ellos.
  • Enlaces complejos con RelativeSource , convertidores ...
  • Disparadores: Todavía me confundo a veces sobre dónde debería usar DataTrigger s, Trigger s o EventTrigger s ...
  • Mecanismos de propiedades de dependencia y propiedades asociadas
  • La forma en que funcionan los eventos enrutados

Hay muchas cosas pequeñas que pueden parecerle difíciles al principio si tiene experiencia con Windows Forms. Necesita desaprender muchas cosas y cambiar a un modelo mental muy diferente de la estructura de la interfaz de usuario.

Al principio comencé a codificar como lo hice en Windows Forms, con muchos códigos subyacentes, pero definitivamente esa no era la manera correcta. El patrón MVVM realmente me ayudó a entrar en la "filosofía" de WPF ...

Mi principal fuente de documentación para aprender WPF fue, por supuesto, MSDN, donde puedes encontrar la mayoría de las respuestas si sabes cómo buscarlas. También aprendí muchas cosas en los siguientes blogs:



La mayor molestia es: no puedes conseguir que otro desarrollador trabaje en la aplicación WPF hecho por un profesional. Este no es el caso con WinForms y Asp.net donde cualquiera puede trabajar con muy pocos problemas. Este es un problema importante.


Las diferencias en la sintaxis de enlace fue uno; es decir, cuándo usar Binding y cuándo usar StaticResource / DynamicResource. Cuando estaba aprendiendo por primera vez sobre WPF, no dejaba de confundir a los dos.

Las diferentes formas de DP y las propiedades adjuntas también fueron difíciles de entender al principio.


Lectura de libros y comprensión de las cosas es una cosa y su aplicación en su proyecto es otra. Estaba creando un control de lista de contactos relativamente simple al igual que en Outlook y encontré muchas curvas de aprendizaje pequeñas pero notables.

  1. En primer lugar, la plantilla parece simple a medida que estás leyendo, pero se vuelve más complicado cuando juegas con ella. Simplemente establecer el color de fondo de un control de usuario cuando se enfoca un cuadro de texto fue desafiante. Resultó que tenía que usar DataTrigger (¿quién lo hubiera pensado?).
  2. Usar un contenedor como un ItemsPanel de ItemsPanel para el cuadro de lista de repente se convirtió en un desafío ya que no estaba arreglando los elementos (hay que jugar con él).
  3. Definitivamente RelativeSource en enlace.

Básicamente, ser capaz de vincular controles en su plantilla (de padre a hijo y viceversa) es una buena curva de aprendizaje.

Mi consejo. Escribe una aplicación pequeña y verás que las cosas se unen.


MMVM es algo bastante complicado de aprender. Sin embargo, creo que es una de las mejores cosas sobre WPF. Se requiere mucho estudio para obtenerlo porque hay muchos escenarios en los que es un poco difícil de implementar.

Como Thomas señaló, existe un gran material por parte de Josh Smith y otros. Tenga cuidado, aunque WPF es muy fácil de estudiar, pero tiene que usarlo, por ejemplo, escribir una aplicación para ver varios escenarios en la práctica.


Todavía no puedo especificar la propiedad del objetivo en animación sin hoja de referencia:

<DoubleAnimation Storyboard.TargetProperty= "(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" To="1.2" Duration="0:0:.2" />


Tomemos desde la vista de principiantes. Estoy usando un editor simple como KaXML o Sharpdevelop para el desarrollo de WPF. y descubro que no puedo continuar con el desarrollo de la base de datos sin el componente de cuadrícula de la base de datos. Entonces no es como formularios de Windows . Comience a buscar el componente de cuadrícula de base de datos comercial. y en defensa la gente dirá que no es la cosa más difícil o la limitación.

Tienes que trabajar con archivos C # u otros archivos de idiomas admitidos por .NET Framework para el desarrollo de aplicaciones serias. Si eso no es problemático entonces, ¿por qué necesito usarlo en primer lugar? Estoy contento con C # ¿por qué necesito usar WPF?

Las cosas más difíciles hasta ahora:

  1. El enlace de datos,
  2. Dependencia de otro idioma (C # por ejemplo),
  3. Capacidad de gráficos.

Templating de datos (y plantillas de control para el caso).

En la superficie, es bastante sencillo, pero una vez que comienzas a tratar de configurar el enlace entre diferentes archivos XAML, puede ser muy confuso.

Supongo que finalmente logré obtener una comprensión decente a través de muchos documentos de MSDN, pero además, de prueba y error. Jugar con cosas es generalmente la mejor manera de aprender cualquier tecnología.


Lo siento, esto se hizo tan largo ... espero que sea útil. Una cosa que mencionaría es que estos son los conceptos / cosas que me hicieron tropezar, no estoy seguro si lo usaría como una lista detallada de qué estudiar si recién está empezando. Me sumergía en algunos books , leía muchos blogs ( Josh Smith , Dr. WPF ) y, en general, me sumergía y probaba cosas en pequeños proyectos.

Conceptos básicos

  • Los árboles lógicos y visuales (enlaces: 1 )

    Comprender los diferentes árboles en WPF. En particular, comprender el árbol lógico frente al árbol visual y cómo los elementos en el árbol lógico se expanden en el árbol visual a través de plantillas de datos, plantillas de control, etc.

  • The Dependency Property System (enlaces: 1 , 2 )

    Comprender todo el sistema de propiedad de la dependencia en WPF es mucho más grande de lo que parece. Claro, es fácil crear una propiedad de dependencia rápida y luego usarla para potenciar otros conceptos de WPF, como el enlace de datos y la animación, pero luego comienza.

    Hay propiedades de dependencia normales y luego hay propiedades de dependencia adjuntas. Hay muchas maneras diferentes de registrarlas todas y varias opciones de metadatos diferentes que puede establecer.

    Entender por qué se llama propiedad de dependencia, para el caso, me llevó algo de tiempo. Es decir, entender que el valor de la propiedad proviene de muchas fuentes diferentes (la propiedad depende de estos proveedores de valor) y que hay un orden de precedencia / algoritmo de cómo se establece el valor final de la propiedad en un momento determinado.

  • Eventos enrutados (enlaces: 1 , 2 )

    Comprender cómo pueden burbujear, enrutar o dirigir. Comprender que también puede haber adjuntado eventos enrutados (en lugar de simplemente asociar un controlador de eventos a un evento que ha enrutado el árbol visual).

    Consejos

    El capítulo 3 en WPF Unleashed de Adam Nathan es un capítulo impresionante que cubre estos nuevos e importantes conceptos y uno que deberías leer, trabajar en un proyecto y luego volver a leer.

    Los snippets del Dr. WPF son una excelente forma de conocer las propiedades de dependencia, los eventos enrutados y los comandos.

Conceptos gráficos (enlaces: 1 )

  • Resolución Independencia (enlaces: 1 , 2 )

    WPF ofrece todos los beneficios de la independencia de resoultion (especificas todo con los píxeles independientes del dispositivo) pero esto también te trae algunos dolores de cabeza que debes resolver. Lo más notable es hacer que las cosas se vean nítidas cuando lo desee aprovechando el ajuste de píxeles, estableciendo pautas, etc.

  • Modo retenido vs. modo inmediato

    WPF tiene un subsistema de dibujo en modo retenido, lo que significa que realiza un seguimiento de las instrucciones de dibujo y las almacena en caché para su uso posterior. Esto puede ser un problema de rendimiento si intentas crear algo que tenga muchas imágenes que se actualicen todas a la vez.

  • Controles, Elementos, Visuales (enlaces: 1 )

    Comprender qué hace cada cosa en la jerarquía de WPF por usted y comprender el peso que aporta en el rendimiento. En particular, ¿usa un Control que puede reimprimir, restilar y más ... o necesita algo ultra ligero (como la programación contra la capa Visual) para poder manejarlo con fuerza y ​​rapidez?

    Consejos

    Chris Sells e Ian Griffiths tienen un gran apéndice al final de su libro Programming WPF que habla sobre los diferentes tipos en la API de WPF, dónde encajan en la jerarquía y qué valor aportan.

Patrones de WPF

  • Model-View-ViewModel (MVVM) Patrón (enlaces: 1 )

    El patrón MVVM ya se mencionó como ayuda para comenzar a hacer las cosas de la manera WPF. No puedo estar más de acuerdo. En lugar de llenar los controles con los datos, usted comienza a transformar los datos en imágenes (a través de plantillas de datos).

  • Patrón de comportamiento de propiedad anexado (enlaces: 1 , 2 , 3 )

    WPF es extensible como ninguna otra API. Utilizando las propiedades adjuntas, puede incorporar comportamientos adicionales de una manera muy elegante y donde pensó que podría haber estado atascado.

WPF! = Windows Forms

Sé que alguien ya mencionó esto, pero quiero estar de acuerdo enfáticamente. Hay tantos conceptos nuevos y diferentes, que realmente tiene que desaprender algunas cosas y abordar problemas desde un ángulo completamente diferente. Como ejemplo, Windows Forms es un subsistema de dibujo de modo inmediato, mientras que WPF es un modo retenido (arriba).

Las muchas, muchas formas de hacer las cosas en WPF

Esto es algo divertido de mencionar, pero debido a que hay tantas maneras de hacer algo en WPF, es casi paralizante. ¿De qué manera es la forma correcta de hacer las cosas? ¿Es esto? ¿Es eso? Tuve que superar el miedo de hacerlo de la manera equivocada, solo para saltar y aprender de mis errores.


WPF no es WinForms. La mayoría, si no todas, de las estrategias comunes que utiliza para realizar tareas en WinForms son la forma incorrecta (o menos eficiente) en WPF. Comandos, propiedades de dependencia, enlace, plantillas, etc., todo será menos útil si adoptas una mentalidad de WinForms.

Actualmente estamos en el desarrollo de una gran aplicación de visualización. Como experimentados programadores WinForms, nuestro primer corte en la visualización de datos multidimensionales precalculaba miles de elementos visuales. Un control deslizante atravesaría las dimensiones de los elementos visuales mediante una devolución de llamada. No se cargarán datos más allá de la configuración inicial. Esto tuvo un rendimiento muy pobre.

Cambiando a miles de enlaces con convertidores de datos, en solo unos pocos cientos de elementos visuales, con los datos cargados y recalculados sobre la marcha. Esto dio como resultado una mejora en el orden de magnitud del rendimiento. Era casi inconcebible que miles de enlaces fueran más rápidos que miles de elementos visuales precalculados, pero tal es el caso de WPF.

" De WinForm a WPF: una guía de referencia rápida " puede ser útil.