2.22.2007

Bill Gates va a dar personalmente el premio al mejor gadget mexicano para Windows Vista

Hola, hoy avisó Microsoft México que personalmente Bill Gates va a entregar el premio al mejor gadget mexicano durante su visita a México en Marzo. Así que si te llama la atención estrechar la mano del hombre más rico del mundo, este es tu chance. El consurso se cierra el 28 de Febrero que viene. Las bases están aquí.

2.19.2007

Propiedades Dependientes en WPF

En .NET 3.0 se introduce un nuevo tipo de propiedades que extienden la funcionalidad de las propiedades tradicionales del CLR de .NET. Varias de las clases de WPF exponen este tipo de propiedades. A primera vista, podemos utilizar estas propiedades de la misma forma como utilizamos propiedades cualquiera. Sin embargo, existen diferencias importantes de las cuales debemos estar conscientes para comprender mejor el funcionamiento de WPF. Las propiedades dependientes le ofrecen a la infraestructura de WPF un mecanismo simple para modificar su valor de manera dinámica. Esta capacidad de afectar dinámicamente el valor de una propiedad es utilizada por WPF para soportar la siguiente funcionalidad:

1. Soporte a Recursos

En WPF podemos establecer directamente el valor de una propiedad directamente ligada a un recurso utilizando XAML así:

<dockpanel.resources>
<solidcolorbrush color="Red" key="MiBrocha">
<dockpanel.resources/>
<button content="Soy rojo" background="{DynamicResource MyBrush}">

En este caso la propiedad Background toma su valor del recurso llamado MiBrocha. Para poder fijar una propiedad con el valor de un recurso es necesario que esta sea una propiedad dependiente.

2. Ligado a Datos (Data Binding)

El ligado a datos de WPF se establece igualmente utilizando propiedades dependientes.

<button content="{Binding XPath=Team/@TeamName}"/>

En este ejemplo el contenido del botón está ligado a una ruta específica definida con XPath dentro de una fuente de datos XML. Sin embargo, para el ligado de datos, aunque es necesario utilizar propiedades dependientes, hace falta además que estas implementen la interface INotifyPropertyChanged.

3. Estilos

El manejo de estilos de WPF depende también de las propiedades dependientes. Los estilos están relacionados con el sistema de propiedades porque típicamente contienen setters o triggers que afectan el valor de las propiedades como vimos con anterioridad.

4. Animación

La animación en WPF consiste en cambiar el valor de una propiedad a través del tiempo. Para esto WPF también utiliza las propiedades dependientes.

5. Herencia de Valores

La herencia de valores de propiedades no tiene nada que ver con la herencia tradicional de la programación orientada a objetos. La herencia de valores se trata de propagar el valor de una propiedad desde un objeto hacia sus hijos en un árbol. Por ejemplo, podemos definir una propiedad dependiente a nivel de un Grid. Los elementos que existen dentro del Grid
pueden heredar el valor de la propiedad dependiente del que se ha fijado. Esto simplifica, por ejemplo, que todos los elementos gráficos dentro de un contenedor compartan el color del fondo u alguna otra propiedad similar.

Gracias a la herencia de valores habilitada por las propiedades dependientes, los siguientes dos fragmentos de código producen exactamente el mismo resultado gráfico en WPF:

<window class="EjemplosSimples.PropiedadesDependientesDos" title="EjemplosSimples" width="414" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x="http://schemas.microsoft.com/winfx/2006/xaml" height="123">
<stackpanel margin="20">
<textblock fontsize="20">Mi Blog es http://msdnfan.blogspot.com </textblock>
</stackpanel>
</window>

<window class="EjemplosSimples.PropiedadesDependientesUno" title="EjemplosSimples" width="414" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" fontsize="20" x="http://schemas.microsoft.com/winfx/2006/xaml" height="123">
<stackpanel margin="20">
<textblock>Mi Blog es http://msdnfan.blogspot.com </textblock>
</stackpanel>
</window>

¿Encuentras la diferencia? El tamaño de la fuente en el segundo caso se establece a nivel de la ventana mientras que en el primero se establece en el bloque de texto.

2.15.2007

Sáquale Provecho a la Búsqueda Integrada de Windows Vista

Windows Vista incorpora un poderoso motor de búsqueda que indexa todos los documentos existentes en la PC de manera automática. Ofrece la misma funcionalidad que Windows Desktop Search 3.0 pero viene ahora incluido con el sistema operativo. La búsqueda está presente en múltiples puntos del sistema operativo incluyendo:


· El Explorador de Archivos
· El Explorador de Internet
· Los Diálogos de Selección de Archivos
· El Panel de Control
· El Menú de Inicio


Adicionalmente, aplicaciones como Microsoft Outlook 2007 aprovechan el motor de búsqueda y se integran con él.
Como desarrolladores, podemos extender la búsqueda de Windows Vista de dos maneras:


· Podemos desarrollar aplicaciones que consuman el motor de búsqueda de Windows para presentarle resultados al usuario.
· Podemos desarrollar aplicaciones que extiendan el sistema de búsqueda de Windows para permitirle, por ejemplo, buscar nuevos tipos de documentos o con propiedades distintas.

Para desarrollar un consumidor de búsqueda la manera más simple es utilizar el proveedor OLE DB de búsqueda que viene incorporado a Windows. Es muy sencillo buscar utilizando este proveedor. Para establecer una conexión, basta con utilizar la siguiente cadena de conexión:

string connectionString = @"Provider=Search.CollatorDSO;Extended Properties='Application=Windows'";

Necesitamos saber además cual es la sintaxis que acepta este proveedor OLE DB para procesar nuestras consultas. En general, todas las consultas son de la siguiente forma:


SELECT [propiedades] FROM [nombredemaquina.]SYSTEMINDEX..SCOPE() [WHERE [predicados]]

Para nuestra fortuna, el SDK de Windows incluye un excelente ejemplo de desarrollo sobre la búsqueda que contiene una implementación básica. Este ejemplo lo podemos encontrar normalmente en C:\Archivos de Programa\Microsoft SDKs\Windows\v6.0\Samples\CrossTechnologySamples.zip\WindowsIndexSearchApp

En este ejemplo podremos encontrar las piezas más importantes que necesitamos. ¿Que columnas (propiedades) están soportadas? ¿Como especifico los predicados (filtros) de mis búsquedas?