Obteniendo una lista de blobs desde el Blob Storage

October 26th, 2014 No comments

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

  • Crear una cuenta de almacenamiento en Azure.
  • Obtener una lista de blobs desde el Blob Storage.
Categories: Uncategorized Tags:

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: