Vanguarsoft Developers blog

Ing. Javier Leal – Coordinador de Requerimientos en Traetelo.com / Traiter Lourted – VENEZUELA


Deja un comentario

Windows 10 a sido anunciado….

Microsoft presenta el nuevo Windows 10

Hola amigos internautas tiempo sin publicar en mi blog y que mas que hacerlo este día histórico donde muchos desarrolladores deben estar atentos ya que ya ha sido anunciado lo que creíamos que seria Windows 9, pero no se llamara Windows 10.

 

Una de las características que mas resaltan que que ya se habían escuchado rumores es que el Sistema Operativo de Microsoft será todo el uno, por lo tanto ya es fácil decir que Windows 10 será el próximo sistema Operativo Móvil de Microsoft y Adiós Windows Phone.

 

Windows 10 será compatible con toda la familia de dispositivos para tener un todo en uno.. como podemos ver en la imagen que pudimos obtener de  el sitio web de www.abc.es, donde pudimos leer que el encargado de la presentación fue Terry Myerson, Jefe de Windows y lo realizo en un peque;o escenario de San Francisco jugando un poco con la audiencia debido a la sorpresa del nuevo nombre del Sistema Operativo.

 

Otras característica que fue esperada es de nuevo la aparición de Menú inicio, como se había filtrado hace algunos meses mostrando la combinación del menú de Windows 7 con los accesos directos de Windows 8, también se conservaran algunas características táctiles de Windows 8 de manera mas amigable.

 

Windows 10 será lanzado a finales de 2015 pero ya mañana primero de Octubre tendremos la versión técnica para desarrolladores y podremos probarla… pues la idea de este nuevo sistema es que nuestro código funcione para móviles, tabletas y ordenadores a la vez… Ahora a probarlo, para finaliza les dejo un video que muestra algunas características interesantes


Deja un comentario

Uso de los Objetos Dictionary

dictionary-locals

Buenos Días tecnólogos hoy les traigo como usar los Diccionarios que son una herramienta muy útil para crear Código dinámico en tus aplicaciones, mucho de nosotros desarrolladores estamos acostumbrados a crear Entidades con sus propiedades para luego a estas entidades utilizarlas para Insertar, Mostrar Valores, Obtener Listas de dicho Objeto a partir de una consulta SQL y creamos tantas entidades como tablas tengamos para crear nuestro sistema lo que no permite que nuestro sistema sea Dinámico, no podemos reutilizar consultas ni adicionar campos por que implicaría una entidad nueva o una modificación fuerte de código.

Estas practicas ya muchos desarrolladores las han mejorado con herramientas de distintas formas y una de ellas muy útil es crear Diccionarios donde nuestras entidades estáticas pasan a ser Dinámicas ya todo depende de lo que incluye el diccionario de datos pero como podemos aplicar esta lógica?

Concepto por MSDN

Representa una colección de claves y valores.

Namespace: System.Collections.Generic

Primero que nada vamos a declarar una Variable de tipo Diccionario:

Se debe declarar de esta manera:

Dictionary<TKey, TValue> Nombre

Donde:

TKEY: Es el tipo de dato que utilizaras para el KEY puede ser un Entero, Una Cadena String que es lo mas Habitual pero en si esto puede ser lo que quieras.

TVALUE: es el tipo de datos del valor que va a estar ligado al Key Anterior puede ser de cualquier tipo normalmente es un Object así permitirá almacenar en este cualquier tipo de Objeto.

Nombre: Nombre de la variable para utilizarla en código.

Ejemplos:

Dictionary<string, Object>

Dictionary<int, string>

Dictionary<Object, Object>

Dictionary<string, string>

En nuestro caso Utilizaremos el mas habitual y que nos permita crear una Entidad Dinámica.

Dictionary<string, Object> DinamyObj = new Dictionary<string, Object>();

En esta modalidad puedes almacenar lo que sea en este objeto y sabrás donde esta cada cosa que adiciones dentro de ella a través de su Key.

Para Adicionar utiliza el Método Add que permite agrega la clave y el valor especificados al diccionario.

Ejemplo Adicionar la Fecha Actual,un valor Booleano Un string o entero:

DinamyObj.Add(“FechaActual”,DateTime.Now());

DinamyObj.Add(“Nombre”,”Javier Leal”);

DinamyObj.Add(“Edad”,25);

DinamyObj.Add(“Activo”,true);

Si puedes Adicionar Obviamente puede Eliminar Valores para ello en el Método Remove

DinamyObj.Remove(“Edad”);

O el Método Clear en caso de querer Eliminar todos los valores.

DinamyObj.Clear();

 

Además de esto hay Métodos donde puedes buscar verificar si un valor en especifico tales son los casos de los Métodos ContainsKey Determina si la colección Dictionary contiene la clave especificada y el ContainsValue Determina si la colección Dictionary contiene un valor específico.

Ejemplo:

DinamyObj.Containskey(“Apellido”); Devuelve: False

DinamyObj.ContainsValue(25); Devuelve: True

DinamyObj.Containskey(“Nombre”); Devuelve: True

DinamyObj.ContainsValue(False); Devuelve: False

 

A este tipo de objetos podemos hacerle un recorrido para conocer o listar todas sus claves o sus valores para acceder a esos valores

Ejemplo:

DinamyObj.Keys Devuelve: Un diccionario con los valores de las claves

DinamyObj.Values Devuelve: Un diccionario con los valores

 

Luego de que estos objetos ya están creados se puede editar y asignar de esta manera por ejemplo para cambiar el valor de edad seria:

DinamyObj[“Edad”] = 27;

y para escribirlo en un control por ejemplo en un texto seria

TXTEdad.Text = DinamyObj[“Edad”].ToString();

Cabe destacar que hacemos conversión de String debido a que el devuelve es un Object entonces si estamos por ejemplo devolviendo un valor Bool como es caso del valor Clave Activo a un control CheckBox seria

Check.IsChecked = Convert.ToBoolean(DinamyObj[“Edad”]);

A su vez también es importante para cuando estamos aplicando en Patrón MVVM en nuestros proyectos saben enlazar estos Objetos a través de enlaces Binding, Ejemplo asignando un valor a un Textbox y un check

<TextBox> Text="{Binding DinamyObj[Nombre], Mode=TwoWay}"/>

<CheckBox> IsChecked ="{Binding DinamyObj[Activo], Mode=TwoWay}"/>

Por ultimo estos objetos como todos podemos agregarlos a colecciones para tener listas de diccionarios que pueden ser enlazados de igual manera que que cualquier colección

List<Dictionary<string, Object>> ListDictionary

Espero que le saquen provecho a la información pueden buscar mas información por la Documentación Original.

http://msdn.microsoft.com/en-us/library/xfhwa508(v=vs.95).aspx


Deja un comentario

Demos Windows Phone 8 Demostración

safe_imageBuenos días amigos el día de hoy estuve participación en el tecno maratón Venezuela y en dicho webcast me comprometí a colocar los ejemplos dados en dicha charla y aquí pago mi deuda coloco el enlace para descargar el demo.

Adicional a ello también adiciono un interesante ejemplo de como acceder a la agenda y contactos del teléfono…

https://www.dropbox.com/home/Para%20difundir?select=DemoTecnomaraton.rar


Deja un comentario

Detectar si tienes conexión en una App Windows Phone o Windows 8

Buenos días en esta oportunidad les traeré un truco Interesante. Muchas veces en tus aplicaciones dependen de una conexión de internet si este es tu caso debería de validar si la aplicación cuenta con conexión o no para evitar errores en la ejecución de la misma y vamos a mostrar como hacerlo en Silverlight para Windows Phone y en aplicaciones para Windows 8.

 

En Windows Phone podemos detectar el estado de la conexión de una forma sumamente sencilla. En el namespace System.Net.NetworkInformation tenemos la clase NetworkInterface que nos permite fácilmente comprobar si hay conexión lo podemos ver en el siguiente codigo:

if (NetworkInterface.GetIsNetworkAvailable())

{

// Hay conexión.

}

else

{

// No hay conexión.

}

Existen problemas en el Método anterior. Si ejecutas desde el emulador el método anterior siempre devuelve true, es decir, siempre hay conexión. Sin embargo, en el dispositivos físicos funciona. Podemos realizar en el método anterior una pequeña modificación para poder realizar las pruebas cuando no hay conexión:

private bool IsNetworkAvailable()

{

#if DEBUG

return false;

#endif

if (NetworkInterface.GetIsNetworkAvailable())

return true;

else

return false;

}

En Windows 8 no tenemos disponible el método GetIsNetworkAvailable. Sin embargo, pero si tenemos el namespace Windows.Networking.Connectivity y la clase NetworkInformation para poder realizar la misma tarea. Podemos subscribirnos a un evento de la clase NetworkInformation ya mencionada llamadoNetworkStatusChanged que se lanzará cada vez que hay cambios en la red (pasamos de tener internet a no tenerlo o viceversa):

NetworkInformation.NetworkStatusChanged += NetworkInformationNetworkStatusChanged;

 

void NetworkInformationNetworkStatusChanged(object sender)

{

if (NetworkInformation.GetInternetConnectionProfile() == null)

//No hay conexion

else

//Hay conexion

}

Hemos utilizado el método GetInternetConnectionProfile que nos indica el tipo de perfil utilizado por la aplicación. En caso de ser null, no tenemos conexión a internet.


Deja un comentario

Programar Baldosas en Windows Phone 8

Una de las características más resaltantes que están a primera vista al momento de ver Windows Phone 8.0 es el cambio que ha tenido en su escritorio principal, donde cada baldosa que se visualiza representa una aplicación.

clip_image002A diferencia de Windows Phone 7.1 que tenía dos tipos de Baldosas y se podían programar para enviar una notificación y tener acceso directo a esa información desde la aplicación. Para ello se utilizaba la clase ShellTile. Donde se podría programar el titulo la imagen y texto a mostrar de la parte de frente y detrás de la baldosa. En la parte de atrás de la baldosa se podía navega a una página segundaria y filtrar datos por QueryString y esto se convertiría en un acceso directo a la información.

En Windows Phone 8 tenemos tres nuevas clases y tres tipos de Baldosas que podemos programar estas son las clases FlipTileData, CycleTileData e IconicTileData los tamaños de las baldosas ahora son Pequeño Mediano y Grande.

Y que puedes hacer de nuevo con estas nuevas clases:

Poder ofrecer más de un diseño de baldosa secundaria.

Controlar a que página navegar al seleccionar las baldosas secundarias.

Elegir entre tres plantillas que son las tres clases antes mencionadas.

Múltiples tamaños personalizados por clientes.

Personalizar con qué frecuencia va a estar cambiando.

  • Nunca
  • Programado por notificaciones locales.
  • Programado por notificaciones push con un servicio en la nube.

Plantilla Tile Flip Clase (FlipTileData):

 

Es la misma que podemos ver en la versión de Windows Phone 7.1 por tanto deben conocerla, la diferencia de esta a la versiones anterior es que contamos con el tamaño pequeño.

Para hacer una llamada a esta clase es igual que la versión anterior vamos a instancia a la clase y llenar sus propiedades:

FlipTileData TileData = new FlipTileData()

{

Title = "Titulo",

BackTitle = "Titulo al Voltear”

BackContent = "texto que contendrá al voltear",

WideBackContent = "Contenido que tendrá si la baldosa esta en tamaño grande",

Count = Contar,

SmallBackgroundImage = Imagen que ira en la baldosa pequeña,

BackgroundImage = Imagen que ira en el tamaño medio,

BackBackgroundImage = Imagen que ira en el tamaño media al voltear la baldosa

WideBackgroundImage = Imagen que ira en el tamaño grande,

WideBackBackgroundImage = Imagen que ira en el tamaño grande al voltear

};

Para que estén más claros les dejo esta imagen.

clip_image003

Para eliminar se realiza igual que su versión anterior que es colocando el valor en blanco

Plantilla de Ciclo Clase (CycleTileData):

 

Esta plantilla te permite mostrar un ciclo de imágenes de Máximo 9

CycleTileData Plantillaciclo = new CycleTileData ()

{

Title = "Titulo de la Aplicaicon" ;

Contar = contador;

SmallBackgroundImage = nuevo Uri ( "URL Imagen pequeña" , UriKind.Relative);

CycleImages = new Uri[]

{

new Uri ( "Url imagen 1" , UriKind.Relative),

new Uri ( "Url imagen 2" , UriKind.Relative),

new Uri ( "Url imagen 3" , UriKind.Relative),

new Uri ( "Url imagen n" , UriKind.Relative),

… …

}

};

clip_image004

Plantilla de Icono (IconicTileData):

 

Esta es especifico de Windows 8 y incorpora los principios de diseño de Windows Phone, te permite mostrar una pequeña imagen en el centro de la baldosa para codificar una app y usar esta baldosa este es el código.

IconicTileData PantillaIcono = nuevo IconicTileData ()

{

Title = "Título de la aplicacion" ,

Count = Conteo,

WideContent1 = "Primera fila de contenido" ,

WideContent2 = "Segunda fila de contenido" ,

WideContent3 = "Tercera fila de contenido" ,

SmallIconImage = imagen pequeña

IconImage = Imagen de tamaño mediano,

BackgroundColor = Color de fondo

};

Para entender aún más pueden ver la siguiente imagen

clip_image005

Estas notificaciones son validad también para las nuevas características de desarrollo en el SDK 7.8 que recientemente fue liberado.


Deja un comentario

Uso de QueryString en aplicaciones de Silverlight para Windows Phone

En las aplicaciones de Silverlight, las de Windows phone e inclusive la de Windows 8 es posible al momento de navegar entre una pagina y otra enviarle parámetros y en este articulo vamos a ver como lograr enviar parámetros y que clases son necesarias.

Como ejemplo usaremos una aplicación de Windows Phone que navegara de una pagina a otra, usaremos la clase NavigationService que es la encargada de Navegar entre pantalla y llevar el Historial de las mismas.

Como sabrán QueryString es el mismo método que utilizan las pagina web para enviar y recibir parámetros al navegar de una pagina a otra y Silverlight ha adoptado este método precisamente para el mismo funcionamiento al momento de navegar entre pagina.

Para explicar un poco mas esto vamos a ver la estructura de un QueryString quizá en las URL de las paginas web lo han visto y no se han percatado del por que tantos símbolos extraños en las URL.

Estructura

/URL?V1=12&v2=20

 

Donde como pueden Ver /URL es la tura de la pagina a donde va a navegar en Silverlight.

El símbolo ?: representa el inicio del QueryString y inmediatamente se coloca el primer valor.

V1=12 : Es el nombre de la primera variable que se esta pasando por el QueryString y el 12 es el valor de la variable V1.

& : Este símbolo representa que continua el queryString.

v2=20 : v2 es el nombre de la segunda variable enviada y seguido se su valor que es 20

Aquí una imagen que lo explica mas claro

 

Para navegar a una pagina enviando QueryString:

 

Pueden incluir en en el evento click de un boton el siguiente codigo:

string Ganador = “Javier”

NavigationService.Navigate(new Uri("/SegundaPag.xaml?g=" + Ganador, UriKind.Relative));

Se pueden Fijar que aquí tenemos una variable local llamada ganador que suponiendo que es un juego y quieres enviar el nombre del Ganador este lo enviara en una variable de nombre g.

Para recibir los valores enviados por QueryString:

 

Para recibir estos valores debemos llamar al Método OnNavigatedTo que toda pagina tienes y es el primero que se ejecuta al llamar a la pagina con solo escribir en el Código detrás de la pagina aparecerá en el Itellisense de visual studio y presiona tabulador para que este cree el método sobrescrito.

     protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
     {
string ganador = string.Empty;
if (NavigationContext.QueryString.TryGetValue("g", out ganador ))
{
    if (ganador.Equals("0"))
    {
        TextBlock1.Text = string.Format(“El ganador es {0}” ,ganador )";
    }
    else
    {
        TextBlock1.Text = "No hay ganador";
       }

}
         base.OnNavigatedTo(e);
     }

Como pueden ver Aquí estamos recibiendo el valor de QueryString y lo almacenamos en una variable llamada ganador en caso de estar lleno envía a un control textblock en la pantalla el nombre del ganador y en caso de estar vacía indicar que no hay ganador.


Deja un comentario

SDK Windows Phone Actualizacion para Windows Phone 7.8

El día de hoy ha sido libreado la actualización del SDK de Windonws Phone a la versión 7.8, desde este momento podrás descargarla y tener disponible dos Nuevos Emuladores de la versión 7,8 para probar tus aplicaciones además de uno de 256 con WP 1.8.

IMPORTANTE

Antes de hacer esta actualización debes tener instalado la versión 7.1 con la actualización 7.1.1

http://www.microsoft.com/es-es/download/details.aspx?id=27570

http://www.microsoft.com/es-es/download/details.aspx?id=29233

O la versión de SDK de Windows phone 8.0

http://www.microsoft.com/es-es/download/details.aspx?id=35471

Estos son los requisitos para poder realizar esta actualización una vez puedes hacer la descarga a través de este link:

http://www.microsoft.com/es-es/download/details.aspx?id=36474

Nota: Si tienes instalados el SDK de Windows Phone 8.0 y el SDK de Windows Phone 7.1 en el mismo equipo, ambos SDK se actualizarán.

Según las notas de versión se han corregido muchos de los errores existentes y muchas mejoras que estaré anunciando en próximos tutoriales pero les dejare algo por adelantado podran ver tambien la imagen que muestra la disponibilidad de nuevos emuladores.

clip_5F00_image001_5F00_4CDE0A94

Funciones compatibles


 

Un Windows Phone OS 7.1 aplicación que se ejecuta en Windows Phone 8 o Windows Phone 7.8 admite las funciones Azulejos siguientes:

También dejare una tabla comparativa de las ultimas dos versiones donde podrás ver algunas mejoras de usuario final:

Gracias y a pones manos a la abra.