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

domingo, 18 de abril de 2010

Controlando el cierre de sesión desde nuestra aplicación WPF

En numerosas ocasiones hemos hablado de las características básicas que debe poseer cualquier aplicación profesional de software que desarrollemos. Una de las fijas en todos los listados es la estabilidad. Cuando valoramos dicha cualidad debemos ser conscientes de que nuestras aplicaciones no se ejecutan solas ni son independientes de los devenires del los usuarios a nivel del Sistema Operativo.

Revisando las posibilidades que manejamos a la hora de mantener nuestra aplicación siempre en un estado controlado nos podemos alegrar una vez más de contar con un framework estable y maduro como es .NET.

Imaginemos el siguiente escenario:

El usuario trabaja con nuestra aplicación editando una serie de datos de un determinado registro. Por otro lado, el Sistema Operativo comienza a descargar e instalar unas actualizaciones que obligan a reiniciar. El usuario acepta el reinicio sin darse cuenta que no ha salvado los datos… (improbable, verdad? ;))

Si no contemplamos este tipo de casuísticas en nuestra aplicación, esta se cerrará y la modificación no se reflejará en el sistema de almacenamiento subyacente (base de datos, archivos…) y se terminó la historia. Otro debate es si la culpa de la pérdida es nuestra o no, pero lo que es seguro, es que existen entornos en los que esta respuesta no es aceptable…

Para controlar cosas como estas (está todo pensado…) debemos trabajar con las posibilidades que nos brinde la  clase Application de .NET. Entre otras características, esta clase nos brinda la oportunidad de interactuar con un cierre de sesión a través de un método sobrescribible o suscribiéndonos a un evento.

Vamos a ver este código:

   1: public partial class App : Application



   2:     {



   3:         private bool _editing = true;



   4:  



   5:         protected override void OnSessionEnding(SessionEndingCancelEventArgs e)



   6:         {



   7:             base.OnSessionEnding(e);



   8:             if (_editing)



   9:             {



  10:                 e.Cancel = true;



  11:                 MessageBox.Show("You can´t " + e.ReasonSessionEnding.ToString() + " with unsaved data.");



  12:             }



  13:         }



  14:     }




Estableciendo en este punto nuestras políticas, podemos determinar de una manera muy sencilla si el estado de nuestra aplicación permite realizar el cierre sin comprometer su estabilidad o datos almacenados en memoria. Si os interesa conocer el motivo del cierre de la sesión podéis consultar el valor de la propiedad ReasonSessionEnding de la clase SessionEndingCancelEventArgs



A veces cuesta muy poco dar superar lo estrictamente obligado, con lo que transmitimos una mayor sensación de esmero y profesionalidad.

lunes, 12 de enero de 2009

Incluir UserControl de Windows.Forms en WPF

Hola a todos y Feliz 2009!!



En ocasiones nos puede resultar interesante incluir un control de usuario que ya tenemos desarrollado y funcionando en nuestra aplicación WPF. esta y otras características de integración entre ambos mundo de UI permiten ir adentranos en el mundo de WPF poco a poco realizando las migraciones por pasos puesto que ambas conviven sin problemas.


Pasos para incluir UserControl de Windows.Forms en WPF:


  • Incluir las referencias a:

    -System.Windows.Forms.dll.
    -WindowsFormsIntegration.dll.

    Cae por (..Archivos de programa\Reference Assemblies\Microsoft\Framework\v3.0\)

  • Incluir la referencia al namespace desde el XAML.:

    Integración
    xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

    Control de usuario
    xmlns:my="clr-namespace:WindowsFormsControlLibrary1;assembly=WFCLTest"

  • Por fin incluir el tag WindowsFormsHost necesario para poder embeber a los controles. Sin este control como wrapped recibiriamos un error de compilación, puesto que el control de usuario de WinForm no es un 'UIElement'




Es posible también, (lo veremos en otro post) inclur un control WPF en un formulario Windows.

Un saludo.


lunes, 1 de diciembre de 2008

WPF Binding del control al propio DataContext

Alguna vez me han proguntado como se puede relacionar el propio objeto del DataContext en un Binding. Esto que en principio puede parecer un poco raro suele ser muy habitual a la hora de establecer Converters en WPF (IValueConverter).

Bueno pues el tema es de lo más simple. Supongamos que deseamos hacer un Binding del objeto del contexto a la propiedad Text de un TextBlock:

Text="{Binding Mode=OneWay, Converter={StaticResource andoniBlogConverter}}

*Notese que no se establece Path ni por propiedad ni a través de la sobrecarga del constructor de la clase Binding

Por supuesto se necesitaría un converter puesto que el objeto del contexto no es de tipo string (necesario para la propiedad Text seleccionada)

Por supuesto necesitariamos el Static Resource:

andoniNamespace:AndoniBlogConverter x:Key="andoniBlogConverter"


y la referencia al namespace en la declaración del UserControl:

xmlns:andoniNamespace="clr-namespace:Andoni.blog.ExampleConverter"

Espero que les sea de ayuda.

Bueno, un saludo



lunes, 19 de mayo de 2008

En que ando metido...

Hace tiempo que no cuento nada por aqui, así que voy a comentaros en que investigaciones ando metido ...

  • Entity Framework
  • WPF
  • WCF
  • Mock
  • SCRUM
  • PoliceInjection
  • MVC con comandos en WPF
  • JQuery
  • ...
Ya os iré constando cosillas interesantes.

Saludos

lunes, 24 de marzo de 2008

Versiones de ASP.NET

Con ASP.NET 3.5 Microsoft espera continuar su éxito en el refinamiento y mejora de ASP.NET.
Las buenas noticias es que Microsoft no ha eliminado o modificado funcionalidades. (Manteniendo la compatibilidad hacia atrás) El enfoque de la mayoría de los cambios y funcionalidades de alto nivel incorporados, es hacer su programación más productiva. (Eso esperemos al menos ;))

De cualquier manera, han existido cuatro liberaciones mayores de ASP.NET:
  • ASP.NET 1.0: La primera de las liberaciones creó el núcleo de la plataforma ASP.NET e introduce un amplio rango de funcionalidades esenciales.

  • ASP.NET 1.1: La segunda liberación añadió mejoras de rendimiento y corrección de errores pero no nuevas funcionalidades. (Lógico en los albores...)

  • ASP.NET 2.0: La tercera liberación recopiló una buena cantidad de funcionalidades nuevas, las cuales fueron creadas sobre la fontanería existente en ASP.NET. El énfasis general se centró en proveer a los desarrolladores con "regalitos" profabricados que pudiesen ser usados sin escribir mucho (o nada) de código. Algunas de estas nuevas funcionalidades incluidas de fabrica fueron en soporte para la navegación de sitios Web, características de temas para estandarizar el diseño de las páginas Web y una manera más fácil de recuperar la información de una base de datos.

  • ASP.NET 3.5: Esta cuarta liberación mantiene el mismo motor básico que ASP.NEt 2.0, pero añade algunas florituras y dos cambios dramáticos. (¡Como suena eso de importante!)

    Las mejora más significativa es el ASP.NET AJAX toolkit, el cual otorga a los desarrolladores Web mejores herramientas para crear sitios Web de respuesta rápida que incorporen ricos efectos normalmente vistos en aplicaciones de escritorio. (como por ejemplo el drag-and-drop y autocompletar)

    La otra innovación es el soporte para LINQ, un conjunto de mejoras del lenguaje incluidas en .NET 3.5 que permiten realizar búsquedas en datos de memoria de la misma manera que se consulta a una base de datos.

Nota:
Si se pregunta que ocurre con el ASP.NET 3.0, bien pues... no existe!

Microsoft empleó el nombre .NET 3.0 para liberar un conjunto de nuevas tecnologías, que incluían el Windows Presentation Foundation (WPF), Windows Workflow Foundation (WF) y Windows Communication Foundation (WCF), pero no incluyó ninguna actualización de la versión de ASP.NET

Un saludo.

jueves, 13 de marzo de 2008

Diferencias entre .NET Framework 3.0 y .NET Framework 3.5

Para aclarar un poco la cosa, digamos que el Framework 3.0 es esencialmente un add-on/plugin para el Framework 2.0 para añadir las funciones básicas para que las aplicaciones puedan engancharse con WPF, WCF, y pre LINQ.

.NET Framework 3.0, llamado antiguamente WinFX incluye un nuevo conjunto de APIs de código manejado que son una parte integral de los sistemas operativos Windows Vista y Windows Server 2008. También se encuentra disponible para Windows XP SP2 y Windows Server 2003 como descarga.

No hay cambios mayores de arquitectura en esta release; .NET Framework 3.0 emplea el Common Language Runtime del .NET Framework 2.0. A diferencia de releases previas del .NET no hay una release de .NET Compact Framework homologa.

Por su parte, el .NET Framework 3.5 que ha sido liberado por Microsoft recientemente es una release completa. Dicho Framework solo correrá sobre Windows XP SP2 o posterior y el soporte para LINQ es nativo.

Algunas características a tener en cuenta son:

  • Esta versión del Framework emplea la versión 2.0 del CLR (el mismo modelo que usa el .NET Framework). Sin embargo, instala el .NET Framework 2.0 SP1, el cual añade algunos métodos y propiedades, requeridos por las características .NET Framework 3.5 como LINQ a las clases de la BCL del .NET Framework 2.0. Dichos cambios no afectan a aplicaciones escritas para la versión 2.0 del Framework.

  • Tanto el soporte completo para los tipos de proyectos del .NET Framework 3.5, como compilaciones para .NET Framework 3.5 están incluidas en el Visual Studio 2008
  • El código fuente de la BCL (Base Class Library) de esta release será liberada bajo la licencia Microsoft Reference License. (Sí, han leído bien!!)

  • .NET Framework 3.5 SP1, con codename "Arrowhead", mejorará el soporte para aplicaciones ocasionalmente conectadas y provee soporte built-in para el Microsoft ASP.NET MVC Framework.

  • .NET Compact Framework 3.5 será liberado a la vez que esta actualización para proveer por ejemplo LINQ, HTTP compression y mejoras para el soporte de audio para dispositivos móviles.
Espero que les sirva de ayuda.

Un saludo

Windows SDK

Una de las características necesarias (pero no suficientes) de todo buen desarrollador de Software es la disposición a aprender a trabajar con nuevas tecnologías, mejores, más potentes, que modifican los hábitos y patrones de trabajo. (En caso contrario valore la posibilidad de dedicarse a la ebanistería... ;))

La rueda de Microsoft no deja de girar y se avecinan tiempos de evolución- revolución con la nueva versión del Microsoft .NET Framework.

Para que se hagan una idea de por donde van a ir, o mejor dicho, ya van, los tiros vamos a explicar algunso aspectos importantes del nuevo panorama.

El Windows SDK contiene todas las APIs para desarrollar la siguiente generación de aplicaciones Windows, incluidas las dirigidas a Windows Vista, y provee los cimientos para el desarrollo de software para las plataformas de cliente y servidor de Windows para el futuro inmediato. (más o menos inmediato que todavía hay por ahí quien desarrolla las aplicaciones en Access...)

El Windows SDK se centra en el .NET Framework 3.0 que contiene las clases con las que ya está familiarizado del .NET Framework 2.0 más WPF, WCF, y WWF.

Estas siglas (no tiene nada que ver con el Pressing Catch!) hacen referencia a los siguientes conceptos:
  • Windows Communication Foundation
  • Windows Workflow Foundation
  • Windows Presentation Foundation
Que veremos más en detalle en siguientes posts.

Un saludo