Mostrando entradas con la etiqueta WPF. Mostrar todas las entradas
Mostrando entradas con la etiqueta WPF. Mostrar todas las entradas

martes, 20 de abril de 2010

Extender Propiedades de un Control en WPF

Continuando con el trabajo sobre WPF, he tenido la necesidad de extender las propiedades de los User Controls que he ido creando, con el objetivo de que estos se ajustaran todavía más a mis necesidades.

Para ello, tenemos varias opciones en la siguiente web, con código para poder ver algunos ejemplos:

http://blogs.msdn.com/wpfsdk/archive/2009/09/16/wpf-designer-sample-code-is-posted.aspx

De entre todas ellas, me decidí por la que se llama: "Custom Dialog Property Value Editor", que consiste en añadir una propiedad nueva a tu control y crear un diálogo para controlarla



Aunque existe un ejemplo que podemos descargarnos en la web que he puesto antes, he preferido hacer un pequeño tutorial para los novatos como yo, con la finalidad de hacerlo más comprensible, puesto que al menos a mí me ha parecido algo complicado crear las propiedades desde cero.

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/