Eliminar un blob desde el Blob Storage

October 20th, 2014 No comments

Lee el post original de Víctor Moreno en: Azure Sin Limites

  • Crear una cuenta de almacenamiento en Azure.
  • Eliminar un blob desde el Blob Storage.
Categories: Uncategorized Tags:

Descargando Blobs desde el Blob Storage

October 12th, 2014 No comments

Lee el post original de Víctor Moreno en: Azure Sin Limites

  • Crear una cuenta de almacenamiento en Azure.
  • –Descargar un blob desde el Blob Storage.
Categories: Uncategorized Tags:

Almacenando con Blobs en el BlobStorage

September 29th, 2014 No comments

Lee el post original de Víctor Moreno en: Azure Sin Límites

  • Crear una cuenta de almacenamiento en Azure.
  • –Identificar que es un Blob y los tipos que existen.
  • –Como crear PageBlobs
  • –Como crear BlockBlobs.
Categories: Uncategorized Tags:

Leer un XML en Windows Phone 8.0 y 8.1

September 22nd, 2014 No comments

Lee el post original de Amin Espinoza en El blog de Kañaz.

Si eres un desarrollador de aplicaciones y estás comenzando con una nueva plataforma definitivamente vas a hacer un “Hola mundo”. Después de hacerlo, el siguiente paso es comenzar a explorar la posibilidad de recibir datos y acomodarlos de manera ordenada y agradable a la vista de los usuarios. En este artículo vamos a ver como puedes hacer una aplicación básica de lectura de feeds que es un gran ejemplo de como manejar archivos XML. Lo más importante de esto es como hacerlo en las dos versiones de Windows Phone que ahora se encuentran disponibles así que comencemos. Leer más…

Categories: Artículos Tags:

Manejando contenedores de blobs

September 21st, 2014 No comments

Lee el post original de Víctor Moreno en: Azure Sin Límites

  • Crear una cuenta en el Azure Storage.
  • Identificar que es un contenedor de Blobs.
  • Como crear contenedores de Blobs.
  • Como listar contenedores de Blobs.
  • Como eliminar contenedores de Blobs.
Categories: Uncategorized Tags:

Noches de innovación a la mexicana.

September 16th, 2014 No comments

Lee el post original de Saturnino Pimentel en El blog de Satur.

Como ya he comentado en un post anterior he tenido el gusto de participar en noches de innovación a la mexicana con el tema nuevas características de C# 6.0 donde he mostrado lo que probablemente sean las nuevas características de este lenguaje. Leer mas…

Categories: Uncategorized Tags:

Creando una cuenta para acceder al Azure Storage

September 15th, 2014 No comments

Lee el post original de Víctor Moreno en: Azure Sin Límites

  • Crear una cuenta en el Azure Storage.
  • Escribir código para acceder al Azure Storage.
  • Ajustar las propiedades de un proyecto tipo rol para configurar una cuenta de almacenamiento del Azure Storage.

Leer más…

Categories: Uncategorized Tags:

Almacenamiento con Blobs

September 7th, 2014 No comments

Lee el post original de Víctor Moreno en: Azure Sin Límites

En una anterior publicación, hablé del Azure Storage y los tipos de almacenamiento en la nube (véase Azure Storage), en esta ocasión hablaré un poco más acerca de los Blobs.

Un blob es cualquier archivo que podamos imaginar: una imagen, un video, un archivo comprimido, un documento, etc. Existen básicamente dos tipos de Blobs: Leer más…

Categories: Uncategorized Tags:

C# 6.0 y un poco de historia

August 27th, 2014 No comments

Lee el post original de Saturnino Pimentel en El blog de Satur.

El día de ayer participamos en un hangout junto a Marta Jimenez (@ml2j_), Juan Carlos Ruiz (@JuanKRuiz) , Nicolás Herrera(@nicolocodev) y Sergio Vargas @Serandvaraco donde hablamos de lo nuevo dentro de la siguiente versión de C# 6.0 Leer mas…

Categories: Artículos, Videos Tags:

El programa de mejora de experiencia de Visual Studio 2013

August 15th, 2014 No comments

Lee el post original de Amin Espinoza en El blog de Kañaz.

Cada vez que nosotros instalamos una nueva aplicación o conjunto de estas solemos encontrarnos con una opción que nos invita a participar en el programa de mejora de experiencia. Al menos en el caso que me interesa en este post. El de Visual Studio (actualmente Visual Studio 2013). Cuando comienzas a instalar te aparecerá una ventana como la siguiente. Leer más…

Categories: Artículos Tags:

31 días de Windows 8 | Día 16: Menú contextual

April 21st, 2013 1 comment

Este artículo es una traducción de “Día 16: Menú contextual” de Jeff Blakenburg. Puedes encontrar aquí la versión en inglés.

Hoy nuestro foco es en menús contextuales. Estos son aquellos pequeños comandos que se muestran ocasionalmente en tu aplicación cuando das un clic derecho o algo similar. Microsoft ofrece una guía muy especial en cuanto al uso de menús contextuales y cuando usar un control de AppBar en su lugar y seguiremos estas reglas en este artículo.

¿Qué es un menú contextual?

Si has usado Windows 8, probablemente los hayas encontrado. Comúnmente ellos se muestran al momento de dar clic derecho en algo que no puedas seleccionar o texto con el que quieras interactuar. Aquí hay un ejemplo de menú contextual:

An image of the context menu for text shown over editable text while there is no text in the clipboard to paste.

(imagen de: http://msdn.microsoft.com/library/windows/apps/Hh465308)

Podrías también lanzar un menú contextual desde un elemento en tu página que no sea seleccionable como esta imagen en mi aplicación de ejemplo:

16-XAML-ContextMenuExample

Dar clic derecho en la imagen lanza el menú contextual a la derecha. (Te mostraré como hacer que esto suceda a continuación). Cada uno de los comandos tendrán una función asignada a ella, el cual es ejecutado cuando el elemento sea presionado.

Determinando la ubicación de un elemento.

Quizá hayas notado que los menús contextuales aparecen adyacentes directamente al elemento que ha sido seleccionado. Esto no sucede por magia. De hecho deberemos determinar la posición del elemento seleccionado por nosotros mismos (así como su tamaño) y pasarlo a nuestro control menú cuando lo creamos en forma de un objeto de Rectángulo. Aquí esta el método que he creado para determinar su ubicación.

private Rect ObtenerRect(object sender)
{
FrameworkElement elemento = sender as FrameworkElement;
GeneralTransform transformacionElemento = elemento.TransformToVisual(null);
Point point = transformacionElemento.TransformPoint(new Point());
return new Rect(point, new Size(elemento.ActualWidth, elemento.ActualHeight));
}

Como puedes ver, seré capaz de para mi “sender” en este método y regresar un objeto Rectángulo con un punto (la ubicación de la esquina superior derecha de nuestro elemento) y tamaño (las dimensiones de nuestro objeto llamado).

Creando un menú contextual

Una vez que ya tengo el método ObtenerRect() en su lugar creando un menú contextual cerca de nuestros controles es simple. En este ejemplo, he agregado un evento Right Tapped a mi imagen el cual llama a este método.

private async void Element_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
PopupMenu menuContextual = new PopupMenu();
menuContextual.Commands.Add(new UICommand("La liga silverlight", (command) => { ((Grid)Logo.Parent).Background = new SolidColorBrush(Colors.Red); }));
await menuContextual.ShowForSelectionAsync(ObtenerRect(sender), Placement.Right);
}

Como puedes ver arriba, esto simplemente crea un nuevo control de tipo PopupMenu, agrega un comando a el (con el código de ejecución especificado en la expresión lambda) y llama al método ShowForSelectionAsync() para mostrarlo. Este método toma dos parámetros.

* El primero es el valor de Rectángulo que estamos obteniendo de nuestro método ObtenerRect(). Pasa el sender y obtiene el rectángulo apropiado de regreso.

* El segundo es la ubicación del menú contextual. En mi ejemplo, coloqué Placement.Right como mi valor. Tienes cuatro opciones pero no pierdas tiempo en esto. La guía de Microsoft en menús contextuales es que “aparezcan sobre el objeto sobre el que están actuando a menos que se interponga sobre otros elementos de la interfaz en cuyo caso se debe colocar a un lado o por debajo del objeto”. Mantén la experiencia en Windows 8 consistente para tus usuarios a menos de que tengas una buena razón para hacerlo de otra manera.

Ejecutar este código, como se muestra arriba, resultará en un menú que lucirá como esto:

image

Y cuando yo ejecute esta opción, el fondo de la página se volverá rojo. Como esto.

image

Así que así es como mostramos un menú contextual. Pero ¿cuántos comandos podemos tener a la vez? La respuesta es SEIS. Agregar más de 6 elementos a tu menú PopupMenu resultará en un error cuando trates de crearlo. Lo mostré antes pero aquí está un ejemplo de un menú de cinco elementos.

image

Finalmente, también tienes la opción de crear un UICommandSeparator() el cual es simplemente una línea horizontal en lugar de un comando. Los separadores tomarán lugar en uno de tus seis espacios disponibles sin embargo; así que ten esto en cuenta cuando lo uses, esto lucirá así.

image

Para hacer esto, tu sentencia de creación del comando debería lucir como esto:

menuContextual.Commands.Add(new UICommand("31 Días de Windows 8", (command) => { ((Grid)Logo.Parent).Background = new SolidColorBrush(Colors.Orange); }));
menuContextual.Commands.Add(new UICommandSeparator());

¡Esto es todo! Ahora deberías ser capaz de agregar menús contextuales a tus aplicaciones cuando las AppBars y otros elementos no tienen sentido. Pero ¿qué hay acerca interactuar con algo de texto en una caja de texto?

Lanzar un menú contextual desde una caja de texto

Actualmente, cerca de todo en este proceso es el mismo, excepto por las matemáticas de donde surge la la caja contextual. Inicialmente al comenzar a resolver este problema, estaba esperando agregarla en un menú contextual que ya apareciera cuando des clic derecho en el texto.

image

Mientras aparece no puede. Así que para nuestro ejemplo, vamos a decir que queremos mantener todas esas opciones, pero también agregar algunas nuevas. Para hacerlo, primero necesitamos sobre escribir el menú contextual creando un manejador de eventos para cancelar el pre establecido y recrear toda su funcionalidad.

Para hacer esto, creamos un manejador de eventos como el siguiente.

protected override void OnNavigatedTo(NavigationEventArgs e)
{
txtLipsum.ContextMenuOpening += txtLipsum_ContextMenuOpening;
}

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
txtLipsum.ContextMenuOpening -= txtLipsum_ContextMenuOpening;
}

También cree una sentencia para retirar el manejador de eventos cuando deje la página.

En el método que este manejador de eventos llama, cancelaremos la llamada inicial con Handled = true, y después crear nuestro propio menú contextual que aún haga algunas de las llamadas apropiadas al portapapeles. Solo vamos a cubrir esta parte brevemente en este artículo pero consumiremos el artículo entero de mañana para las diferentes formas de usar esta gran herramienta.

En suma, encontrar el lugar adecuado para mostrar un menú contextual dentro de un TextBox es diferente a solo determinar la posición de un control en la página. Aquí está mi método ObtenerRectanguloTexto().

private Rect ObtenerRectanguloTexto(TextBox cajaTexto)
{
Rect contenedorDatos = cajaTexto.GetRectFromCharacterIndex(cajaTexto.SelectionStart, false);

GeneralTransform transform = cajaTexto.TransformToVisual(null);
Point punto = transform.TransformPoint(new Point());
punto.X = punto.X + contenedorDatos.X;
punto.Y = punto.Y + contenedorDatos.Y;

return new Rect(punto, new Size(contenedorDatos.Width, contenedorDatos.Height));
}

Y aquí esta el método para crear nuestro menú Popup (notarás que he usado un método secundario para determinar que comando es presionado que no use expresiones lambdas en esta ocasión. Es más fácil para lectura pero deberías también notar que el método es mucho más largo).

async void txtLipsum_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
e.Handled = true;
TextBox textoResaltado = (TextBox)sender;

PopupMenu menuContextual = new PopupMenu();
menuContextual.Commands.Add(new UICommand("Cortar", null, 0));
menuContextual.Commands.Add(new UICommand("Copiar", null, 1));
menuContextual.Commands.Add(new UICommand("Pegar", null, 2));
menuContextual.Commands.Add(new UICommand("Seleccionar todo", null, 3));
menuContextual.Commands.Add(new UICommandSeparator());
menuContextual.Commands.Add(new UICommand("Borrar", null, 4));

var comandoElegido = await menuContextual.ShowForSelectionAsync(ObtenerRectanguloTexto(textoResaltado));

if (comandoElegido != null)
{
String texto;
DataPackage paqueteDatos;

switch ((int)comandoElegido.Id)
{
case 0: //Cortar
texto = textoResaltado.SelectedText;
textoResaltado.SelectedText = "";
paqueteDatos = new DataPackage();
paqueteDatos.SetText(texto);
Clipboard.SetContent(paqueteDatos);
break;
case 1: //Copiar
texto = textoResaltado.SelectedText;
paqueteDatos = new DataPackage();
paqueteDatos.SetText(texto);
Clipboard.SetContent(paqueteDatos);
break;
case 2: //Pegar
texto = await Clipboard.GetContent().GetTextAsync();
textoResaltado.SelectedText = texto;
break;
case 3: //Seleccionar todo
textoResaltado.SelectAll();
break;
case 4: //Borrar
textoResaltado.SelectedText = "";
break;
}
}
}

Si estás siguiendo tu propio proyecto, deberías ahora ser capaz de resaltar algo de texto en tu caja de texto y obtener un menú similar al de la imagen de arriba.

En resumen

Hoy vimos el arte de crear menús contextuales para nuestros usuarios. Hay una manera excelente de proveer interacciones con elementos que no sean seleccionables o para comandos que tengan más sentido estando directamente adyacentes al elemento con el que se está interactuando.

Si quisieras ver el código de ejemplo completo para este artículo, presiona sobre el ícono de abajo.

 

 

Mañana, como prometí, nos aventuraremos en la funcionalidad del portapepeles disponible para nosotros en el desarrollo de Windows 8. ¡Nos vemos entonces!

Categories: Tutoriales, Windows 8 Tags:

31 días de Windows 8 | Día 15: El teclado en pantalla

March 29th, 2013 2 comments

Este artículo es una traducción del día #15 en la serie 31 días de Windows 8 de Jeff Blakenburg.

Hoy vamos a dar un vistazo al teclado en pantalla de Windows 8. Microsoft no parece hacer una distinción de nombres entre el teclado que aparece cuando haces tap con tu dedo en un control TextBox y el que encuentras en el Centro de Accesibilidad. Vamos a enfocarnos hoy en el teclado que se ve como esto:

15-XAML-NormalKeyboard

Por otro lado, el teclado de Accesibilidad, es una herramienta diseñada para hacer más fácil el uso de la computadora a quienes no pudieran usar el teclado de ninguna forma. Lo puedes encontrar abriendo el centro de Accesibilidad en tu maquina…

15-XAML-EaseOfAccessCenter

Y haciendo click en la opción de “Iniciar Teclado en Pantalla” vas a descubrir un teclado que se ve como este:

15-XAML-EaseOfAccessKeyboard

El enfoque principal de este teclado es permitir al usuario usar Windows completamente sin tener un teclado conectado a su computadora. No es personalizable, y no responde a ningún código que escribamos en este artículo. El teclado es también una de las pocas ventana que pueden ser puestas sobre la pantalla de Inicio. Míralo aquí:

15-XAML-OnScreenKeyboardStartScreen

OK, así hemos usado los primeros párrafos de este artículo hablando acerca de un teclado que NO es el objetivo de este artículo. ¿Porque? Hay dos razones:

  1. Si estas usando dispositivos no touch mientras trabajas con este artículo (o en tu propia app y quieres usar las características del teclado regular touch), te encontraras con que los clicks del mouse no lanzan el teclado touch en tu máquina. Así que buscaras en la web una solución para hacer que se muestren.
  2. Mientras buscas por la web más información sobre manipular el teclado en pantalla en Windows 8, vas a encontrar varios artículos sobre el de la versión de Accesibilidad, que es el que no necesitas. Si encuentras un artículo apropiado sobre como lanzar el teclado touch, probablemente sea este, porque no pude hallar una forma de hacerlo funcionar.

La primera razón de esto es porque este es uno de las pocas veces que Windows 8 hace distinción entre un click de mouse y un tap de dedo. Si das click en un TExtBox, Windows 8 asume que estas usando un teclado real, incluso si estas usando una máquina habilitada para touch. Un tap de dedo, sin embargo, mostrara el teclado que vamos a usar hoy.

Para ahorrarte algo de frustración, al desarrollar tu aplicación que tomara ventaja de el teclado en pantalla, usa el simulador si no estas trabajando en una maquina touch. Te permite simular “taps” con tu mouse. Aquí es donde lo puedes ver:

15-XAML-SimulatorTapButton

OK, ahora que hemos hecho a un lado todo eso, iniciemos de una vez este artículo.

 

Usando el teclado en pantalla

Primero, demos un vistazo a los estados por defecto del teclado en pantalla que el usuario puede navegar en cualquier momento cuando la pantalla está abierta. Hemos visto ya la vista QWERTY standard:

15-XAML-NormalKeyboard

Pero hay muchas más. Cuando construimos una aplicación, nuestro primer enfoque, mas que cualquier otro, debe ser el hacer que las tareas que el usuario necesita hacer sean lo más fácil de cumplir que se pueda. (Eso ESTÁ en tus prioridades, correcto?) En ese sentido, el teclado en pantalla puede ser manipulado para que eso sea posible. Hay una propiedad que puede establecerse en los controles TextBox llamada InputScrope que nos permite mostrar el teclado apropiado para la tarea a realizar. Si un InputScope no se especifica, el teclado normal se mostrará. Aquí está como luce el código:

<TextBox InputScope="EmailSmtpAddress" />

 

Vas a encontrar, mienstra empiezas a jugar con el InputScope, que hay de hecho 18 diferentes valores de InputScope que pueden ser usados (pero para usuarios Anglo-parlantes, hay de hecho solo tres teclados diferentes por ahora). Estos son (en orden alfabético):

  • AlphanumericFullWidth
  • AlphaNumericHalfWidth
  • ChineseFullWidth
  • ChineseHalfWidth
  • Default
  • EmailSmtpAddress
  • HangulFullWidth
  • HangulHalfWidth
  • Hanja
  • Hiragana
  • KatakanaFullWidth
  • KatakanaHalfWidth
  • NativeScript
  • Number
  • NumberFullWidth
  • Search
  • TelephoneNumber
  • Url

Los únicos valores de ámbito de entrada que responden a computadoras con el lenguaje Inglés de pantalla son: Default, EmailSmtpAddress, Number, Search, TelephoneNumber, y Url. Aquí está como se ven:

EmailSmtpAddress (agrega el botón “@” y “.com”)

15-XAML-EmailKeyboard

Url (agrega botones “/” y “.com”, barra de espacio más pequeña, tecla Go)

15-XAML-URL

Number y TelephoneNumber (muestra el teclado numérico)

15-XAML-Number

Búsqueda (lo mismo que el teclado por defecto, pero la tecla Enter remplazada por Search o Búsqueda)

15-XAML-Search

El resto de los valores InputScope están generalmente enfocados a los lenguajes Asiatico Orientales, y aunque no les quiero faltar al respeto, no se lo suficiente acerca de esos conjuntos de caracteres para tener una discusión inteligente acerca de las pequeñas diferencias entre caracteres FullWidth y HalfWidth.

Sumado a nuestros valores InputScope, es importante entender las otras opciones que nuestros usuarios pueden navegar en cualquier momento cuando el teclado esta en la pantalla del usuario. Aquí las tienes:

Letras Mayúsculas

15-XAML-CAPS

Emoji (hay de hecho 30 PAGINAS de emoji, haz click aquí para verlos todos)

15-XAML-Emoji

Simbolos (un segundo set de simbolos después del que se muestra con el teclado Number)

15-XAML-Symbols2

Teclado dividido (una opción del usuario, este teclado esta optimizado para escritura con pulgar)

15-XAML-SplitKeyboard

Teclado de tinta (Este teclado hace reconocimiento de escritura a mano)

15-XAML-InkingKeyboard

Obviamente, este es un gran conjunto de puntos de entrada para nosotros como desarrolladores, y proporcionando el teclado adecuado para el trabajo hará tu app más útil para tus usuarios. Hay también una distribución de teclado más, y es el del control PasswordBox. Un control PasswordBox muestra símbolos en vez de los caracteres que se escribieron, y el teclado se ve como esto:

15-XAML-PasswordBox

Notaras que también tiene un botón “Ocultar presión de teclas”. Hay veces cuando la gente puede ver tu máquina (especialmente si la estás proyectando a una audiencia) y no quieres que sean capaces de ver los teclazos de tu password. Este botón no resalta los botones cuando son tocados. (Vas a notar también que el botón de Emoji esta deshabilitado, porque esos caracteres no deben ser usados para un password.)

En el pasado, he escrito artículo acerca de TextBoxes y teclados virtuales, y revise cada uno de los casos de uso donde quieras mostrar el teclado sin mostrar lo que escribe el usuario. Un gran ejemplo de esto podría ser el juego de Ahorcado. Quieres que el usuario sea capaz de elegir una letra, pero también ocultar el teclado así el usuario puede ver su progreso.

En Windows 8, esto no es posible ya. No puedes lanzar el teclado en pantalla vía código. De hecho, establecer el foco a un control TextBox no hara nada más que hacer el cursor intermitente. Específicamente requiere que un evento tap (no un click de mouse) ocurra en el TextBox antes que aparezca el teclado en pantalla. (Esa es la misma razón de porque debes usar el Simulador al depurar este tipo de funcionalidad en tus apps.)

Resúmen

Hot, hemos cubierto una variedad de teclado que están disponibles a nuestros usuarios. Podemos aprovechar los valores InputScop para mostrar el teclado correcto en el momento correcto. Adicionalmente, aprendí que hay 30 paginas completa de caracteres Emoji para usar también. (Si no es obvio, me beneficio mucho de escribir estos artículos también!)

Si quieres ver una aplicación funcional que usa cada uno de los valores InputSCop, haz click en el icono para descargarlo:

downloadXAML

Mañana, vamos a echarnos un clavado a usar los Menus Contextuales para ofrecer a nuestro usuario comandos contextuales directamente en la pantalla de la app. ¡Hasta entonces!

downloadTheTools

Aquí esta la lista enorme de Emoji, en caso de que hayas olvidado hacerle click:

Emoji

Categories: Tutoriales, Windows 8 Tags: