Cimbalino Windows Phone Toolkit

Cimbalino-Windows-Phone-ToolkitIntroducción

En el desarrollo de una aplicación tenemos que tener en cuenta muchos factores, su contenido, su diseñoo su usabilidad entre otros factores. Pero por debajo de todo eso hay una base aun mas importante, el código. Como desarrolladores tenemosque esforzarnos por realizar un código de calidad acompañado de test y realizando un esfuerzo en cumplir buenas practicas con el objetivo en mente de tener un código facilmente ampliable, fácil de testear e incluso porque no, fácil de portar a otras plataformas. Sin embargo, en el proceso a este fin nos encontramos con piedras innecesarias en el camino. En el desarrollo de una aplicación Windows Phone siguiendo elpatrón MVVM entre otras buenas prácticas nos encontramos con que el ApplicationBar no soporta bindings, el LongListSelector tampoco en su elemento seleccionado, etc.

¿Y si pudieramos tener las cosas más fáciles?

Cimbalino Windows Phone Toolkit

Con ese objetivo en mente llega Cimbalino. Es un completo conjunto de herramientas destinadas a ahorrarnos tiempo y esfuerzo al desarrollar aplicaciones para Windows Phone.

El Toolkit esta dividido en proyectos:

  • Cimbalino.Phone.Toolkit: Base del Toolkit, contiene los servicios base del patrón MVVM, converters, helpers y metodos extensores además de la bindable Application Bar.
  • Cimbalino.Phone.Toolkit.Background: Servicios para los background agents compatibles con MVVM.
  • Cimbalino.Phone.Toolkit.Camera: Servicios para acceder a la cámara compatibles con MVVM.
  • Cimbalino.Phone.Toolkit.Controls: Controles (se necesita el Windows Phone Toolkit).
  • Cimbalino.Phone.Toolkit.DeviceInfo: Servicios para acceder a la información del dispositivo compatibles con MVVM.
  • Cimbalino.Phone.Toolkit.Location: Servicios para utilizar la localización compatibles con MVVM.
  • Cimbalino.Phone.Toolkit.MediaLibrary: Servicios para acceder a la librería Media compatibles con MVVM.
  • Cimbalino.Phone.Toolkit.PhoneDialer: Servicios para acceder a las funciones del teléfono compatibles con MVVM.
  • Cimbalino.Phone.Toolkit.UserInfo: Servicios para acceder a la información del usuario compatibles con MVVM.

NOTA: El Toolkit es compatible con Windows Phone SDK 7.1.x y Windows Phone 8.0.

Instalando el Toolkit

El Toolki lo tenemos disponible en NuGet por lo que podemos instalarlo usando Nuget Package Manager.

En las referencias del proyecto hacemos clic derecho y seleccionamos la opción Manage NuGet Packages …

Ejemplo Cimbalino 01

Manage NuGet Packages …

En la ventana modal que nos aparece, en la parte superior derecha donde podemos realizar una búsqueda, buscamos por “cimbalino”:

Ejemplo Cimbalino 02

Buscando “cimbalino”

NOTA: La primera opción incluye el Toolkit al completo. Sin embargo, como podemos apreciar en la captura anterior, podemos descargar por partes, solo aquellos componentes que nos interesen.

Seleccionamos el primero de los elementos y pulsamos el botón Install. Tras un breve periodo donde se procede a descargar e incluir las librerías en las referencias del proyecto, tendremos el siguiente resultado:

Ejemplo Cimbalino 03

Librerías instaladas y listas para usar

Contenido

Acciones

  • BingMapsAction
  • BingMapsDirectionsAction
  • ClipboardAction
  • ConnectionSettingsAction
  • EmailComposeAction
  • Etc

Behaviors

  • ApplicationBarBehavior
  • MultiApplicationBarBehavior
  • SafeBehavior
  • Etc

Converters

  • BooleanToBrushConverter
  • BooleanToIntConverter
  • BooleanToStringConverter
  • BooleanToVisibilityConverter
  • NegativeBooleanConverter
  • Etc

Extensiones

  • ByteArrayExtensions
  • DependencyObjectExtensions
  • DispatcherExtensions
  • EnumExtensions
  • FrameworkElementExtensions
  • Etc

Helpers

  • ApplicationManifiest
  • MutexLock
  • NamescopeBinding
  • Etc

Servicios

  • AddressChooserService
  • ApplicationLifecycleService
  • ApplicationManifestService
  • ApplicationProfileService
  • ApplicationSettingsService
  • AsyncStorageService
  • BingMapsService
  • ClipboardService
  • ConnectionSettingsService
  • DeviceStatusService
  • EmailAddressChooserService
  • EmailComposeService
  • LauncherService
  • LockScreenService
  • MapDownloaderService
  • MapsDirectionsService
  • MapsServices
  • MarketplaceDetailService
  • MarketplaceHubService
  • MarketplaceReviewService
  • MarketplaceSearchService
  • MessageBoxService
  • NavigationService
  • PhoneNumberChooserService
  • SaveAppointmentService
  • SaveContactService
  • SearchService
  • ShareLinkService
  • ShareMediaService
  • ShareStatusService
  • VoiceCommandService
  • WebBrowserService

Lo utilizamos!

vamos a crear una Aplicación de ejemplo para utilizar y ver superficialmente las posibilidades del Toolkit:

Creamos un proyecto desde la plantilla más básica para concentrar nuestra atención en el Toolkit que nos ocupa en esta entrada.

El ApplicationBar de Windows Phone, desde sus orígenes, es un objeto que no deriva de la clase FrameworkElement. Esto quiere decir que no soporta estilos o plantillas pero lo que es más importante, tampoco soporta binding en sus propiedades. Esto provoca problemas al trabajar utilizando el patrón MVVM, no podemos acceder directamente a los comandos de la ViewModel establecida como DataContext de la página.

Del listado anterior de contenido ya hemos visto que hay behaviors para el ApplicationBar que nos ayudan a resolver este problema con suma facilidad.

Vamos a utilizar el behavior. Para utilizarlo, lo primero que debemos hacer es añadir dos namespaces en nuestra vista:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cimbalinoBehavior="clr-namespace:Cimbalino.Phone.Toolkit.Behaviors;assembly=Cimbalino.Phone.Toolkit"

A continuación, definimos el behavior:

<i:Interaction.Behaviors>
     <cimbalinoBehavior:ApplicationBarBehavior>
          <cimbalinoBehavior:ApplicationBarIconButton
               Text="{Binding LocalizedResources.Message, Source={StaticResource LocalizedStrings}}"
               IconUri="../Toolkit.Content/ApplicationBar.Check.png"
               Command="{Binding ShowMessageCommand}"/>
          <cimbalinoBehavior:ApplicationBarBehavior.MenuItems>
               <cimbalinoBehavior:ApplicationBarMenuItem
                    Command="{Binding ShowMessageCommand}"
                    Text="{Binding LocalizedResources.Message, Source={StaticResource LocalizedStrings}}"/>
          </cimbalinoBehavior:ApplicationBarBehavior.MenuItems>
     </cimbalinoBehavior:ApplicationBarBehavior>
</i:Interaction.Behaviors>

NOTA: El behavior puede aplicarse directamente a un PhoneApplicationPage o a su elemento LayoutRoot (principal) para conseguir una ApplicationBar bindeable permitiendo mantener la consistencia en el patrón MVVM.

Podemos además de bindear el comando a ejecutar al pulsar el botón, los textos e incluso una propiedad para controlar la visibilidad.

El comando a ejecutar a su vez puede aprovechar cualquiera de los servicios que vimos previamente en el listado anterior. En nuestro ejemplo, bastará con añadir la dependencia en nuestro Ioc:

_container.RegisterType<IMessageBoxService, MessageBoxService>();

Definirlo en el constructor de nuestra ViewModel:

private readonly IMessageBoxService _messageBoxService;

public MainViewModel(IMessageBoxService messageBoxService)
{
     _messageBoxService = messageBoxService;
}

Y por último, utilizarlo directamente:

private ICommand _showMessageCommand;

public ICommand ShowMessageCommand
{
     get { return _showMessageCommand = _showMessageCommand ?? new DelegateCommand(ShowMessageCommandDelegate); }
}

public void ShowMessageCommandDelegate()
{
     _messageBoxService.Show(Resources.AppResources.Cimbalino);
}

Como hemos podido ver a lo largo del artículo, Cimbalino es un completo Toolkit destinado a acelerar y facilitar el desarrollo de aplicaciones Windows Phone. Muy buenas implementaciones de una gran cantidad de acciones, helpers, behaviors, etc. que os recomiendo probar. Podéis descargar el ejemplo realizado del siguiente enlace:

Como hemos podido ver a lo largo del artículo, el Toolkit es bastante amplio ofreciendo una cantidad de opciones muy interesantes permitiendo realizar y resolver tareas muy diversas. Retomaremos en futuras entradas este Toolkit para ver como notificar de actulizaciones de la aplicación publicada entre otros aspectos de interes.

Permaneced atentos!

Más información

Un pensamiento en “Cimbalino Windows Phone Toolkit

  1. Pingback: [Windows Phone 8.1] Cambios en controles | Javier Suárez Ruiz | Blog

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s