vtortola.NET Logo
Gestor de ventanas (Window Manager) en Silverlight 2

Gestor de ventanas (Window Manager) en Silverlight 2

por vtortola domingo, 08 de febrero de 2009

silverwindow He creado un pequeño gestor de ventanas como libreria para Silverlight 2, que permite añadir cualquier FrameworkElement embebido en una ventana, que se puede mover (desde la barra de título), redimensionar (desde la esquina inferior derecha),  colapsar (botón _) y cerrar (botón X). Además las ventanas pueden ser ordenadas en cascada ó en mosaico.

La clase se llama SilverWindowManager, hereda de Canvas, y lo que hace es crear unos elementos llamados SilverWindow, que son UserControl, y conectar 5 eventos entre ventana y escritorio, dos del "escritorio" a la ventana para que se puedan realizar las acciones de mover y redimensionar, y 3 de la ventana al escritorio para informar cuando se activa ó cierra una ventana. SilverWindow usa el FrameworkElement que se le pasa en el constructor para rellenar su espacio de trabajo. Cualquier FrameworkElement es bueno, desde por ejemplo MediaElement para poner un video, como un UserControl, de hecho lo que este ejemplo abre cada vez es una nueva instancia de un UserControl llamado DummyUserCtrl que tiene un color de fondo aleatorio.

Hay una cosa con la que no estoy muy contento, y es el comportamiento de redimensionar, primero porque parece que redimensiona a menos velocidad de la que se mueve el puntero y no consigo ver por que, y segundo porque al moverse el puntero fuera de la zona de redimensionamiento mientras esta redimensionando, hace que el evento MouseLeftButtonUp pase en cualquier sitio... y al ser incomprensiblemente de tipo Direct en lugar de Bubbling (su homólogo en WPF también es Direct, pero además tiene un MouseUp de tipo Bubbling), si se libera sobre un TextBox ó Botón parece que se queda la acción enganchada hasta el siguiente "mouse up" porque el evento se corta en ese control. Asi que si alguien le echa un vistazo al código y ve el porque de estos problemas... le estaria muy agradecido si me lo dice :D

El diseño no es muy allá, pero es que ni todavía me he puesto a utilizar Expression Blend 2... ni todavía estoy muy puesto en cuestiones de diseño gráfico :D

Esta es mi 4º experimento con Silvelight 2, y la verdad es que esta bastante limitado con respecto a su hermano mayor WPF(con el que batallo dia a dia), se echan mucho de menos los estilos implícitos, los triggers, las opciones de databinding como ElementName y RelativeSource, la distribución de eventos, el botón derecho y central del ratón... los triggers... y supongo que habrá más cosas que no están... ya los iré echando en falta :P Pero bien lo vale por lo pequeño que es el runtime, me gusta bastante :D

Actualmente calificado 5.0 por 6 persona(s)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C# 3.0 | .NET 3.5 | Silverlight 2

Related posts

Comentarios

febrero 16. 2009 02:04

Gravatar

Hola Vicente, me ha gustado mucho tu idea; te planteo el siguiente escenario de aplicación: un conjunto de ventanas flotantes sobre un div de Google Maps o Virtual Earth usando el 100% del area. En estos casos se necesita que los eventos de mouse pasen directa o indirectamente al div del mapa, para no perder la funcionalidad de navegación. Has contemplado esa opción?
Saludos, PV

pvila

febrero 17. 2009 13:05

Gravatar

Hola,

Todavia no me he puesto a trabajar con el combo Javascript/Silverlight. Tengo aqui un libro que habla bastante del tema y espero ponerme con ello en breve, seria interesante...

vtortola ie

marzo 25. 2009 03:33

Gravatar

Me parece genial lo que has hecho, enhorabuena

Tomás Crespo es

marzo 29. 2009 09:16

Gravatar

Gracias :)

vtortola ie

Comments are closed

Powered by BlogEngine.NET 1.1.1.8
This theme is a variation of Mads Kristensen by Valeriano Tórtola

Valeriano Tórtola

Personal Ver perfil
E-mail Enviar correo
LinkedIn LinkedIn
Fotos Fotos
MCPD

Publicidad

Posts recientes

Disclaimer

Las opiniones mostradas aqui son mis opniones y no representan el punto de vista de mi empresa en ninguna forma.

Creative Commons License

Esta obra está bajo una licencia de Creative Commons

Locations of visitors to this page

© Copyright 2010

Sign in

Calendario

<<  julio 2010  >>
lumamijuvido
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Ver en calendario extendido