jueves, 8 de abril de 2010

Diferencias entre un User Control y un Custom Control, WPF 4.0

Estos días, estoy investigando bastante el tema de WPF, haciendo la migración en mi cabeza desde Windows Forms a esta nueva tecnología de Interfaz Gráfica. Ahora mismo, tengo varias vías de investigación, debido a que estoy utilizando esta tecnología para un proyecto de la universidad y para un proyecto profesional.

Precisamente en este último, me ha surgido la necesidad de crear un Control, y me he encontrado con que en WPF existen 2 tipos de "Custom Control", uno llamado User Control y otro Custom Control, a simple vista, la diferencia entre ellos no es muy grande, únicamente que cuando abres el User control te permite editar un fichero XAML y cuando es un Custom, tienes simplemente el código C#.

Por lo tanto me puse a buscar por internet las diferencias entre estos dos tipos y este es el resultado.


 

User Control:




Cuando seleccionamos el User control en el menú nuevo de Visual Studio, lo que se nos genera es la pantalla de arriba, en la que como vemos tenemos un fichero XAML, editable como cualquier aplicación normal WPF. Como podéis ver en la imagen, yo he añadido un Combobox, con el propósito de hacer un LookupCombo.

Al encontrarme con esta problemática, decidí buscar información por internet, y encontré un blog donde nos explica la diferencia de una manera fácil y sencilla,

A continuación voy a hacer un resumen de lo que el autor dice acerca de los User Controls:

  • El User Control, se puede entender como la composición de otros controles para formar uno solo, de hecho en muchos libros, se compara la creación de un User Control con la de una aplicación normal de WPF, esto es debido a que en términos de programación es lo mismo.
  • Como podemos ver en la imagen, tenemos el XAML y un archivo .cs, como cualquier aplicación, el archivo .cs extiende el comportamiento del código XAML, añade propiedades, etc...
  • Es el control más fácil de crear, debido a que el XAML encapsula todo, los controles, los estilos, los templates, animaciones, etc…
  • Propiedades importantes de un User Control:
    • Su propósito es el de aunar controles en uno solo.
    • No soporta la modificación de su tema, es decir, no puede tener uno distinto del de la aplicación.
    • Por lo tanto, es mejor utilizarlo solo en una aplicación, en caso de que necesitemos cambiar el estilo


 

Custom Control:




En esta ocasión, seleccionamos el Custom Control, como podemos ver, a simple vista la diferencia radica en la falta de código XAML, por lo tanto necesitamos crear los controles que vayamos a utilizar mediante C#.

Al igual que con el User Control, voy a hacer un resumen de la información encontrada acerca de los Custom Controls:

  • Este "control", te proporciona una mayor capacidad de maniobra, a la hora de modificar propiedades y de conseguir que tu control haga lo que tú quieras. En el custom control, deberemos añadir los controles mediante código, para luego extender su funcionalidad.
  • Por otra parte también es necesario que definir el tema del control, que se guardará como ResourceDictionary en la carpeta Themes/Generic.xaml
  • La creación de un Custom Control, es una tarea mucho más laboriosa, pero que nos permite hacer mucho más, por lo tanto es la mejor opción si ya llevas un tiempo con WPF
  • Propiedades importantes del Custom Control:
    • Su propósito es mejorar los controles existentes.
    • Permite el uso de temas diferentes al de la aplicación.
    • Es la mejor opción para las compañías third parties, debido a la segunda opción.


 

¿Cuál utilizar?

Esta pregunta no tiene una respuesta clara, puesto que depende de muchas cosas, en especial de 2:

  • La habilidad con WPF.
  • Lo que se necesite.

Para alguien que sea nuevo en la tecnología, lo más fácil será utilizar un User Control, pero en cambio puede ser que no le sirva para lo que quiera hacer y por lo tanto se tenga que poner a investigar acerca de la creación de los Custom Control.

En cambio para alguien que sea experto en WPF, no tiene que olvidar que aunque a simple vista pueda parecer más potente utilizar un Custom Control, el User Control es una alternativa muy buena si la funcionalidad requerida es la unión de 2 controles existentes. Si algo lo puedes hacer fácil, para que te vas a complicar xD.

La respuesta a esta pregunta como en muchas otras está en las necesidades de cada uno, así que os lo dejo a vuestra elección.


 

Un saludo


 

MtCantero


 



Bibliografía:
http://wangmo.wordpress.com/2007/09/28/user-controls-vs-custom-controls/

4 comentarios:

  1. Vaya, vaya, así que te ha dado por los blogs eh...interesante, aunque esta entrada no sea de mi especialidad. Las demas me han gustado bastante, la verdad, sobre todo la de Amy (yo también sigo a esta chica) y la de historia. En fin corazón, voy a hacerme tu seguidora. A ver si tu también te pasas de vez en cuando por mi blog bicho. Un besín

    ResponderEliminar
  2. Que es esa imagen que pusiste?, hace parecer sucia la pantalla, gracias, muy buen aporte

    ResponderEliminar
  3. Buen día, mi nombre es Eduardo y hago software en forma independiente.

    Estoy intentando migrar una aplicacion.

    Lo que tengo que hacer en esta ocacion es:

    Tomar una grilla y extender funcionalidad, luego desde la aplicacion, debo usar eso que construya y usarlo en casi toda la aplicacion.

    Que me recomendas, yo queria usar un User Control.

    ResponderEliminar