May 2009 - Posts

Bing, conocido hasta ahora como Kumo, es el nuevo buscador de Microsoft con el que busca competir contra Google y Yahoo!.

Ya se dio a conocer la fecha de lanzamiento, que es el 3 de junio, en versión definitiva para Estados Unidos y en beta para el resto del mundo.

Con este cambio se renombrarán todos los servicios Live, empezando por: Live Search Maps/Virtual Earth será Bing Maps for Enterprise, Live Search Cashback será Bing Cashback, Live Search Farecast será Bing Travel.

homepage_print

Para saber más sobre el buscador pueden ir a Discover Bing. Esta página tiene una parte desarrollada en Silverlight y nos muestra ejemplos de búsqueda así como videos explicando que es Bing.

Discover

Según Mary Jo Foley la fecha sería el 10 de Julio en la ciudad de San Francisco. No esta confirmado 100%, es solamente un rumor, pero quería compartirlo para ir calmando un poco la ansiedad.

Voy a mostrar como podemos hacer que nuestra aplicación Silverlight este regionalizada. Esta propiedad es muy importante para aquellos que desarrollan aplicaciones que pueden ser utilizadas por personas de diferentes países, ya que puede cambiar no sólo el idioma sino también la forma de mostrar una fecha o un importe.

La idea es la misma que en una aplicación Web, utilizando archivos resx (Resources), la diferencia es que hay pequeños trucos que debemos realizar para que funcione, ya que haciendo los pasos normales nos vamos a encontrar con algunos errores de implementación.

AGREGAR RESOURCES

El primer paso es desde nuestra aplicación Silverlight, agregar un nuevo ítem, del tipo Resources File.

1Luego, vamos a ir agregando un resource por cada cultura que queremos regionalizar. Para este ejemplo serían Page.xaml.resx (por defecto), Page.xaml.fr.resx (para cultura francesa) y Page.xaml.en.resx (para cultura inglesa).

Vamos a agregar un item Texto y otro Imagen, donde vamos a colocar que queremos mostrar según la cultura.

Vamos al primer truco. Si nosotros vamos a acceder a cualquier resource, nos va a tirar error o no va a funcionar. Esto se debe a que por defecto, los resources que agregamos están definidos para uso Interno, y deberían estar para uso Público.

2 Modificamos para cada archivo, el modo de acceso, y lo ponemos en Public.

2b Además debemos modificar el constructor del resource, y definirlo como public.

Importante: Deben modificar el constructor cada vez que modifiquen un valor del resource, ya que Visual Studio lo vuelve a generar.

CONFIGURAR APLICACIÓN

Otro truco, que debemos realizar antes de seguir con la implementación, es definir en la aplicación que culturas vamos a aceptar. Para ello debemos abrir con Notepad el archivo de proyecto nuestra aplicación y modificar el tag SupportedCultures y agregar las culturas que vamos a aceptar.

3 

ENLACE DE DATOS 

Vamos a referenciar a los resources dentro de nuestra aplicación. 

En Page.xaml, primero vamos a referenciar a la clase.

xmlns:Res="clr-namespace:LocalizationApp.Resources"

Ahora agregamos el control resource para poder utilizarlo con los controles de nuestra aplicación.

<UserControl.Resources>
    <Res:Page_xaml x:Name="PageResource" />
</UserControl.Resources>

Ahora vamos a agregar controles para mostrar texto, la bandera de la cultura que estamos visualizando y un combo para cambiar de cultura en línea.

<StackPanel Orientation="Vertical">
 
    <TextBlock x:Name="textCultura" 
               Text="{Binding Texto}" 
               Width="100" />
    
    <Image x:Name="imagenCultura" Width="16" Height="11" />
 
    <ComboBox x:Name="comboCultura" 
              Width="120" Margin="1"
              SelectionChanged="comboCultura_SelectionChanged">
        <ComboBoxItem Tag="es" Content="Español" />
        <ComboBoxItem Tag="en" Content="Inglés" />
        <ComboBoxItem Tag="fr" Content="Francés" />                
    </ComboBox>
    
</StackPanel>

Vemos que al TextBlock lo estamos enlazando con la propiedad Texto del resource, por lo que al entrar a la aplicación va a buscar según la cultura que tenga, el valor correspondiente.

Vamos al code-behind.

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    System.Globalization.CultureInfo cultureInfo = 
            System.Globalization.CultureInfo.CurrentUICulture;
    string cultureName = cultureInfo.Name.ToLower();
                
    foreach (ComboBoxItem item in comboCultura.Items)
    {
        string tag = item.Tag.ToString();
        if (cultureName.Equals(item.Tag))
            comboCultura.SelectedItem = item;                
    }
    if (comboCultura.SelectedIndex < 0)
        comboCultura.SelectedIndex = 0;
 
    CulturaUpdate();
}

Desde el load de la aplicación, vamos a asignarle el valor al combo de culturas, además vamos a actualizar por código la imágen según el valor del resource.

private void CulturaUpdate()
{
    this.DataContext = new Page_xaml();
 
    string bandera = Page_xaml.Imagen;
 
    Uri uriImage = 
        new Uri(string.Format("imagenes/{0}", bandera), UriKind.Relative);
    Stream objImageStream = Application.GetResourceStream(uriImage).Stream;
    BitmapImage objBI = new BitmapImage();
    objBI.SetSource(objImageStream);
    imagenCultura.Source = objBI;                          
}

Esta es la función que actualiza la imágen, buscando en el resource el valor correspondiente.

ACTUALIZAR CULTURA DESDE CÓDIGO

private void comboCultura_SelectionChanged(object sender, 
                                           SelectionChangedEventArgs e)
{
    if (comboCultura != null)
    {
        if (0 <= comboCultura.SelectedIndex)
        {
            ComboBoxItem item = comboCultura.SelectedItem as ComboBoxItem;
            System.Threading.Thread.CurrentThread.CurrentUICulture = 
                    new System.Globalization.CultureInfo(item.Tag.ToString());
            CulturaUpdate();
        }
    }
}
 

Ahora la función que permite cambiar la regionalización. Vemos que debemos crear un nuevo CultureInfo según el valor seleccionado.

PARAMETRO DE CULTURA EN OBJETO SILVERLIGHT  

Ahora vamos a ver de que manera podemos llamar a nuestra aplicación con la cultura que nosotros queramos.

<param name="UICulture" value="fr" />

Al crear el objeto Silverlight, podemos pasarle un parámetro para saber que cultura vamos a querer, en lugar de la que pusimos por defecto.

De esta manera regionalizamos nuestra aplicación, permitiendo tener soporte para varias culturas.

Pueden descarga el ejemplo de la aplicación aquí.

Ya esta disponible para descargar la Beta de Visual Studio 2010.

Pueden descargarlo aquí.

Rodrigo Díaz Concha muestra como es la creación de aplicaciones Silverlight con Visual Studio en La Liga Silverlight. Pueden ver el post aquí.

Voy a mostrar un pequeño ejemplo de como llamar a JQuery desde nuestra aplicación Silverlight. Para ello, vamos a utilizar la interacción con HTML.

Desde nuestra aplicación Silverlight vamos a generar un Button que al hacer click vamos a invocar JQuery para que cambie el estilo de un elemento HTML.

private void btnJQuery_Click(object sender, RoutedEventArgs e)
{
    ScriptObject js = HtmlPage.Window.CreateInstance("$", new string[] {"#test"});
    js.Invoke("css", "background-color", "#00FF00");
    js.Invoke("css","border","5px solid #FF0000");
}

Como vemos, creamos un instancia de JQuery al utilizar el parámetro “$”. Luego utilizamos el objeto ScriptObject para invocar las funciones necesarias para cambiar el estilo.

Pueden descargar el proyecto de prueba aquí.

Project Starlight es un proyecto de Qumu, Inc. con respaldo de Microsoft, donde se ha desarrollo una herramienta que permite streaming multicast en Silverlight.

La tecnología multicast representa un servicio de red en el cual un único flujo de datos, proveniente de una determinada fuente, se puede enviar simultáneamente a diversos receptores.

A través de esta herramienta, se permite transmitir videos en vivo a través de la red a miles de reproductores Silverlight simultáneamente.

Lo interesante es que podemos bajar el código fuente del plug-in aquí.

Pueden leer más información sobre esta herramienta y como utilizarla aquí.

Especifica como se escalan los controles dentro de la aplicación Silverlight cuando el objeto se redimensiona.

Un ejemplo, es si tenemos el ancho o alto de nuestra aplicación Silverlight como porcentaje del browser. Entonces al cambiar el tamaño del browser, también lo hará nuestra aplicación.

Hay tres opciones disponibles para esta propiedad:

  • None

Especifica que no se realiza ningún ajuste.

  • Strech

Especifica que se realiza el ajuste para rellenar el browser horizontal y verticalmente.

  • Zoom

Especifica que se realiza el ajuste para dimensionar proporcionalmente el contenido de Silverlight a fin de rellenar el área del browser.

Algo muy importante a tener en cuenta, es que solamente se puede utilizar esta propiedad en el control .NET de Silverlight.

<asp:Silverlight ID="Xaml1" runat="server" ScaleMode="Stretch" 
                 Source="~/ClientBin/SilverlightApplication1.xap" 
                 MinimumVersion="2.0.31005.0" Width="100%" Height="100%" />

Vamos a ver un ejemplo de como quedan redimensionados los controles

Dibujo

Dibujo2

Hace algunos días había escrito un post sobre el kit Silverlight del New York Times que nos permite interactuar con la información del diario.

La buena noticia es que este kit es ahora Open Source, ya que el código se distribuye como licencia MS-PL. LO interesante es ver como trabaja esta herramienta, pudiendo visualizar como trabajar con API que retornan páginas de datos, que tienen límite de QPS (queries-per-second), como escribir Unit Test para clases CLR, como utilizar Value Converters y otras funcionalidades más.

Pueden descargar el código aquí.

logo

Finalmente ha salido a la luz Uxity. Ayer realizamos la presentación de la comunidad, además de dar una reseña sobre las novedades de Silverlight 3 y Expression.

La idea fundamental es la de integrar a todas las personas interesadas en User Experience, ya sea que trabajan con Silverlight, WPF y otras herramientas, pero que estén enfocadas en crear aplicaciones orientadas a una mejor experiencia por parte de los usuarios.

En el sitio van a poder encontrar los ejemplos que mostramos en la charla, además de poder contactarnos por cualquier duda, o también si tienen algo para compartir son bienvenidos a hacerlo, ya que pensamos en la comunidad para que todos podamos compartir nuestros conocimientos.

Pueden ingresar a la comunidad aquí.

Para contactarse pueden enviar un mail a info@uxity.com.

Muy interesante lo que han hecho con el sitio “Descubre Windows Live”, que esta desarrollado en Silverlight.

La idea es un test para saber que aplicaciones se ajustan a nuestro perfil. Cuando nos da un perfil, podemos ver un video sobre las aplicaciones, todo esto en Silverlight.

Dibujo

Dibujo2 Dibujo3 Dibujo4 Pueden visitar el sitio aquí.

More Posts Next page »