<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>La Liga SilverlightGeneral | La Liga Silverlight</title>
	<atom:link href="http://blogs.ligasilverlight.com/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.ligasilverlight.com</link>
	<description>La primera Comunidad en Español acerca de Silverlight y tecnologías relacionadas</description>
	<lastBuildDate>Tue, 17 Jan 2012 16:43:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Tres a&#241;os de La Liga Silverlight</title>
		<link>http://blogs.ligasilverlight.com/2011/12/tres-aos-de-la-liga-silverlight/</link>
		<comments>http://blogs.ligasilverlight.com/2011/12/tres-aos-de-la-liga-silverlight/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 17:57:37 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[La Liga Silverlight]]></category>
		<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/?p=3393</guid>
		<description><![CDATA[La Liga Silverlight: La Primera Comunidad en Español acerca de Silverlight y tecnologías relacionadas ha cumplido ya su tercer año de vida.  Esto fue desde el mes pasado y este post había estado en los pendientes desde entonces. Queremos agradecer a todos y cada uno de las personas involucradas con la comunidad y el sitio en Facebook.  Todas y cada una de sus colaboraciones han sido parte importante de la comunidad en donde todos hemos podido aprender más y más acerca de Silverlight y demás temas como XAML, Silverlight para Windows Phone 7 y 7.1, WCF RIA Services y un largo etcétera. Algunos datos acerca de La Liga Silverlight La Liga Silverlight es la Primera y única comunidad en español acerca de Silverlight En este año se incrementaron las visitas en un 45% ! Los países que más visitan la comunidad son México, España, Colombia, Ecuador, Argentina, Perú, Chile, Costa Rica, Venezuela, Bolivia, Estados Unidos, Uruguay y El Salvador ¿Qué viene para La Liga Silverlight? Les puedo comentar que durante 2012 vienen una gran cantidad de noticias y recursos nuevos acerca de Silverlight y sus tecnologías relacionadas.  En estos momentos no puedo darles más detalles pero ya muy pronto sabrán [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2011/12/birthday3.jpg"><img style="background-image: none; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="birthday" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/12/birthday_thumb3.jpg" alt="birthday" width="184" height="204" align="left" border="0" /></a><a href="http://Blogs.LigaSilverlight.com">La Liga Silverlight</a>: La Primera Comunidad en Español acerca de <a href="http://silverlight.net" target="_blank">Silverlight</a> y tecnologías relacionadas ha cumplido ya su tercer año de vida.  Esto fue desde el mes pasado y este post había estado en los pendientes desde entonces.</p>
<p>Queremos agradecer a todos y cada uno de las personas involucradas con la comunidad y el sitio en <a href="http://www.facebook.com/groups/LaLigaSilverlight/" target="_blank">Facebook</a>.  Todas y cada una de sus colaboraciones han sido parte importante de la comunidad en donde todos hemos podido aprender más y más acerca de Silverlight y demás temas como XAML, Silverlight para Windows Phone 7 y 7.1, WCF RIA Services y un largo etcétera.</p>
<h2>Algunos datos acerca de La Liga Silverlight</h2>
<ul>
<li>La Liga Silverlight es la Primera y única comunidad en español acerca de Silverlight</li>
<li>En este año se incrementaron las visitas en un 45% !</li>
<li>Los países que más visitan la comunidad son México, España, Colombia, Ecuador, Argentina, Perú, Chile, Costa Rica, Venezuela, Bolivia, Estados Unidos, Uruguay y El Salvador</li>
</ul>
<h2>¿Qué viene para La Liga Silverlight?</h2>
<p><a href="http://Blogs.LigaSilverlight.com"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="LigaSilverlight" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/12/LigaSilverlight3.png" alt="LigaSilverlight" width="160" height="180" align="right" border="0" /></a>Les puedo comentar que durante 2012 vienen una gran cantidad de noticias y recursos nuevos acerca de Silverlight y sus tecnologías relacionadas.  En estos momentos no puedo darles más detalles pero ya muy pronto sabrán de qué estamos hablando <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/12/wlEmoticon-smile3.png" alt="Smile" /></p>
<h2>¿Puedo participar?</h2>
<p>¡Claro! Todo mundo puede compartir sus artículos acerca de la tecnología dentro de la comunidad.  Para mayor información escríbenos a <a href="mailto:contacto@LigaSilverlight.com o">contacto@LigaSilverlight.com o</a> visita <a href="http://www.facebook.com/groups/LaLigaSilverlight/" target="_blank">el sitio de Facebook</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/12/tres-aos-de-la-liga-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anunciando: La Entrevista MVP</title>
		<link>http://blogs.ligasilverlight.com/2011/10/anunciando-la-entrevista-mvp-2/</link>
		<comments>http://blogs.ligasilverlight.com/2011/10/anunciando-la-entrevista-mvp-2/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 21:58:54 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[entrevista]]></category>
		<category><![CDATA[La Liga Silverlight]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/10/anunciando-la-entrevista-mvp-2/</guid>
		<description><![CDATA[A partir de lo anunciado en el evento Build el 13 de Septiembre 2011 con respecto a Windows 8 y su Plataforma de Desarrollo, conocer Silverlight es ahora más importante y relevante que nunca. En La Liga Silverlight – La Primera Comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas, nos hemos dado a la tarea de entrevistar a diversas personalidades y líderes de opinión en el ámbito tecnológico de Silverlight quienes nos estarán dando a conocer sus puntos de vista con respecto a este y demás temas. Les presento: La Entrevista MVP La Entrevista MVP La Entrevista MVP es una entrevista (inicialmente por escrito, probablemente hagamos alguna entrevista audiovisual a mediano plazo), con periodicidad mensual, en donde podrán obtener de primera mano los puntos de vista, opiniones y comentarios de varios Profesionales Más Valiosos (MVP) de Microsoft, principalmente de Silverlight. Hoy en día, es sumamente fácil toparnos con pseudo-periodismo digital, ignorante, mal informado y tendencioso, que lo único que hacen es confundir más a las personas que –erróneamente- los leen o escuchan, por lo que es excelente idea el tener a nuestro alcance las opiniones directas de profesionales que saben verdaderamente de lo que están hablando y que [...]]]></description>
			<content:encoded><![CDATA[<p>A partir de lo anunciado en el evento <a href="http://www.buildwindows.com" target="_blank">Build</a> el 13 de Septiembre 2011 con respecto a <a href="http://rdiazconcha.com/imagenes/win8-platform-and-tools.jpg" target="_blank">Windows 8 y su Plataforma de Desarrollo</a>, conocer <a href="http://silverlight.net" target="_blank">Silverlight</a> es ahora más importante y relevante que nunca.</p>
<p>En <a href="http://blogs.LigaSilverlight.com" target="_blank">La Liga Silverlight</a> – La Primera Comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas, nos hemos dado a la tarea de entrevistar a diversas personalidades y líderes de opinión en el ámbito tecnológico de <a href="http://silverlight.net" target="_blank">Silverlight</a> quienes nos estarán dando a conocer sus puntos de vista con respecto a este y demás temas.</p>
<p>Les presento: <strong>La Entrevista MVP</strong></p>
<h3>La Entrevista MVP</h3>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2011/10/mics.jpg" rel="lightbox"><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="mics" border="0" alt="mics" align="left" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/10/mics_thumb.jpg" width="244" height="164" /></a><strong>La Entrevista MVP </strong>es una entrevista (inicialmente por escrito, probablemente hagamos alguna entrevista audiovisual a mediano plazo), con periodicidad mensual, en donde podrán obtener de primera mano los puntos de vista, opiniones y comentarios de varios Profesionales Más Valiosos (<a href="http://mvp.support.microsoft.com/" target="_blank">MVP</a>) de Microsoft, principalmente de Silverlight.</p>
<p>Hoy en día, es sumamente fácil toparnos con pseudo-periodismo digital, ignorante, mal informado y tendencioso, que lo único que hacen es confundir más a las personas que –erróneamente- los leen o escuchan, por lo que es excelente idea el tener a nuestro alcance las <strong>opiniones directas </strong>de profesionales que saben <u>verdaderamente</u> de lo que están hablando y que cuentan con información y argumentos privilegiados para opinar, contundentemente, acerca de la tecnología en la que son Expertos.</p>
<p>Las entrevistas estarán disponibles mensualmente (y si es posible, más frecuentemente) en el sitio de La Liga Silverlight y estarán completamente traducidas a nuestro bello idioma.</p>
<p>¿Les gusta la idea?&#160; ¡No se pierdan esta serie, que estará bastante interesante!</p>
<p> Salu2!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/10/anunciando-la-entrevista-mvp-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight 5 RC disponible ahora</title>
		<link>http://blogs.ligasilverlight.com/2011/09/silverlight-5-rc-disponible-ahora/</link>
		<comments>http://blogs.ligasilverlight.com/2011/09/silverlight-5-rc-disponible-ahora/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 18:09:14 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[silverlight 5]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/09/silverlight-5-rc-disponible-ahora/</guid>
		<description><![CDATA[El día de hoy ha sido liberado Silverlight 5 RC (Release Candidate) el cual marca un paso más en esta versión, con mejoras en rendimiento y adiciones de funcionalidad súper importantes. Silverlight 5 RC incluye una gran cantidad de componentes y funcionalidades adicionales, entre las que podemos destacar: Plantillas de Datos implícitas p/Invoke (RC) Confianza Elevada en aplicaciones dentro del navegador Soporte para múltiples ventanas del Sistema Operativo Acceso al Sistema de Archivos completo en Confianza Elevada Soporte para breakpoints en expresiones {Binding} en XAML Soporte para 64 bit (RC) Soporte para impresión vectorial (RC) …y más! Lo pueden obtener desde la página de descargas del Sitio Oficial de Silverlight.&#160; Nota: Esta liberación *todavía* no tiene licencia de tipo “Go Live”, hasta la versión final.&#160; Pero si quieren construir aplicaciones con Silverlight, o migrar aplicaciones de Silverlight 2/3/4 hacia 5… este es el momento adecuado para hacerlo. &#160; Salu2!]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.silverlight.net/downloads" rel="lightbox"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sl5logo" border="0" alt="sl5logo" align="left" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/09/sl5logo.png" width="129" height="127" /></a></p>
<p>El día de hoy ha sido liberado <a href="http://www.silverlight.net/downloads" target="_blank">Silverlight 5 RC</a> (Release Candidate) el cual marca un paso más en esta versión, con mejoras en rendimiento y adiciones de funcionalidad súper importantes.</p>
<p><a href="http://www.silverlight.net/downloads" target="_blank">Silverlight 5</a> RC incluye una gran cantidad de componentes y funcionalidades adicionales, entre las que podemos destacar:</p>
<ul>
<li>Plantillas de Datos implícitas </li>
<li><font style="background-color: #ffff00">p/Invoke (RC)</font> </li>
<li>Confianza Elevada en aplicaciones dentro del navegador </li>
<li>Soporte para múltiples ventanas del Sistema Operativo </li>
<li>Acceso al Sistema de Archivos completo en Confianza Elevada </li>
<li>Soporte para breakpoints en expresiones {Binding} en XAML </li>
<li><font style="background-color: #ffff00">Soporte para 64 bit (RC)</font> </li>
<li><font style="background-color: #ffff00">Soporte para impresión vectorial (RC)</font> </li>
<li>…y más! </li>
</ul>
<p>Lo pueden obtener <a href="http://www.silverlight.net/downloads" target="_blank">desde la página de descargas del Sitio Oficial de Silverlight</a>.&#160; </p>
<p>Nota: Esta liberación *todavía* no tiene licencia de tipo “Go Live”, hasta la versión final.&#160; Pero si quieren construir aplicaciones con Silverlight, o migrar aplicaciones de Silverlight 2/3/4 hacia 5… este es el momento adecuado para hacerlo.</p>
<p>&#160;</p>
<p>Salu2!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/09/silverlight-5-rc-disponible-ahora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizando un esc&#225;ner desde una aplicaci&#243;n Silverlight</title>
		<link>http://blogs.ligasilverlight.com/2011/08/utilizando-un-escner-desde-una-aplicacin-silverlight/</link>
		<comments>http://blogs.ligasilverlight.com/2011/08/utilizando-un-escner-desde-una-aplicacin-silverlight/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 15:17:53 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Confianza Elevada]]></category>
		<category><![CDATA[escaner]]></category>
		<category><![CDATA[Silverlight 4]]></category>
		<category><![CDATA[silverlight 5]]></category>
		<category><![CDATA[WIA]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/08/utilizando-un-escner-desde-una-aplicacin-silverlight/</guid>
		<description><![CDATA[Como he mencionado anteriormente aquí y aquí, las aplicaciones de Silverlight pueden ser clientes de automatización, es decir, pueden invocar los servidores de automatización registrados en el sistema operativo Windows de la máquina del usuario. Un requerimiento bastante común en aplicaciones de negocio es poder utilizar el escáner conectado desde nuestro aplicativo, para poder digitalizar una imagen y posteriormente serializarla a disco y/o presentarla en pantalla, etc. En sistema operativo Windows contamos con WIA (Windows Image Acquisition), la cual es una plataforma que permite a nuestras aplicaciones interactuar con hardware de imágenes y también estandariza la interacción entre las aplicaciones y los escáneres, es decir, es un común denominador entre el manufacturero del dispositivo y tú como desarrollador.&#160; WIA está presente en Windows desde Windows ME en adelante, y su versión más reciente es la 2.0. Es importante notar que tu hardware debe ser compatible con WIA para que el código de ejemplo de este artículo funcione.&#160; Revisa la documentación de tu escáner para conocer si existe compatibilidad. WIA.CommonDialog El objeto WIA.CommonDialog tiene diferentes métodos que nos ayudan a desplegar las cajas de diálogo para poder seleccionar un dispositivo de imagen, como una cámara o un escáner, y además para [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2011/08/432532_sri_scanner.jpg" rel="lightbox"><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="432532_sri_scanner" border="0" alt="432532_sri_scanner" align="left" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/08/432532_sri_scanner_thumb.jpg" width="160" height="240" /></a></p>
<p>Como he mencionado anteriormente <a href="http://rdiazconcha.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlight/" target="_blank">aquí</a> y <a href="http://rdiazconcha.com/2011/01/cmo-obtener-la-direccin-ip-local-desde-una-aplicacin-de-silverlight/" target="_blank">aquí</a>, las aplicaciones de Silverlight pueden ser clientes de automatización, es decir, pueden invocar los servidores de automatización registrados en el sistema operativo Windows de la máquina del usuario.</p>
<p>Un requerimiento bastante común en aplicaciones de negocio es poder utilizar el escáner conectado desde nuestro aplicativo, para poder digitalizar una imagen y posteriormente serializarla a disco y/o presentarla en pantalla, etc.</p>
<p>En sistema operativo Windows contamos con <a href="http://msdn.microsoft.com/en-us/library/ms630368%28v=VS.85%29.aspx" target="_blank">WIA</a> (Windows Image Acquisition), la cual es una plataforma que permite a nuestras aplicaciones interactuar con hardware de imágenes y también estandariza la interacción entre las aplicaciones y los escáneres, es decir, es un común denominador entre el manufacturero del dispositivo y tú como desarrollador.&#160; WIA está presente en Windows desde Windows ME en adelante, y su versión más reciente es la 2.0.</p>
<p>Es importante notar que tu hardware debe ser compatible con WIA para que el código de ejemplo de este artículo funcione.&#160; Revisa la documentación de tu escáner para conocer si existe compatibilidad.</p>
<h3>WIA.CommonDialog</h3>
<p>El objeto <a href="http://msdn.microsoft.com/en-us/library/ms630492%28v=VS.85%29.aspx" target="_blank">WIA.CommonDialog</a> tiene diferentes métodos que nos ayudan a desplegar las cajas de diálogo para poder seleccionar un dispositivo de imagen, como una cámara o un escáner, y además para escanear una imagen.&#160; Si creamos una referencia a este objeto por medio de la clase AutomationFactory, podemos fácilmente integrar capacidades de escaneo en nuestra aplicación de Silverlight.</p>
<p>El objeto WIA.CommonDialog tiene algunos métodos bastantes interesantes, los cuales se destacan en la siguiente tabla:</p>
<table border="0" cellspacing="0" cellpadding="2" width="523">
<tbody>
<tr>
<td valign="top" width="200"><strong>ShowSelectDevice</strong></td>
<td valign="top" width="321">Muestra una caja de diálogo para seleccionar el dispositivo que deseamos utilizar, por ejemplo una cámara o un escáner.</td>
</tr>
<tr>
<td valign="top" width="200"><strong>ShowDeviceProperties</strong></td>
<td valign="top" width="321">Muestra las propiedades del dispositivo seleccionado en el método ShowSelectDevice</td>
</tr>
<tr>
<td valign="top" width="200"><strong>ShowAcquireImage</strong></td>
<td valign="top" width="321">Abre una caja de diálogo para escanear una imagen, usando el dispositivo configurado por default</td>
</tr>
</tbody>
</table>
<h2><a href="http://rdiazconcha.com/2011/08/utilizando-un-escner-desde-una-aplicacin-silverlight/" target="_blank">Puedes leer el artículo completo aquí</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/08/utilizando-un-escner-desde-una-aplicacin-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accediendo a tus ensamblados de .NET desde Silverlight&#8211;Parte 2</title>
		<link>http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlightparte-2/</link>
		<comments>http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlightparte-2/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 03:17:03 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[AutomationFactory]]></category>
		<category><![CDATA[interop]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlightparte-2/</guid>
		<description><![CDATA[En el artículo anterior, vimos el uso de la clase AutomationFactory para poder crear objetos de tus ensamblados creados con el .NET Framework 4.0, y utilizarlos en Silverlight. En el ejemplo, invocamos un método como cualquier otro y efectivamente obtenemos los resultados esperados, en este caso, la lista de unidades lógicas del equipo del usuario en donde está ejecutando la aplicación.&#160; Pero ¿qué pasaría si necesitáramos manejar un evento que es disparado por el componente (tu ensamblado) de .NET?&#160; En este caso la implementación debe cumplir con ciertos requisitos. Atributo ComSourceInterfacesAttribute Para que podamos exponer un evento en nuestro ensamblado, y que pueda ser manejado por la aplicación de Silverlight a través de automatización, debemos marcar nuestra clase que implementa el evento con el atributo ComSourceInterfacesAttribute, el cual indica una lista de interfaces que contienen los eventos a exponer en dicha clase. Puedes leer el artículo completo aquí]]></description>
			<content:encoded><![CDATA[<p>En el <a href="http://rdiazconcha.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlight/" target="_blank">artículo anterior</a>, vimos el uso de la clase <a href="http://msdn.microsoft.com/es-es/library/system.runtime.interopservices.automation.automationfactory%28v=vs.95%29.aspx" target="_blank">AutomationFactory</a> para poder crear objetos de tus ensamblados creados con el .NET Framework 4.0, y utilizarlos en Silverlight.</p>
<p>En el ejemplo, invocamos un método como cualquier otro y efectivamente obtenemos los resultados esperados, en este caso, la lista de unidades lógicas del equipo del usuario en donde está ejecutando la aplicación.&#160; Pero ¿qué pasaría si necesitáramos manejar un evento que es disparado por el componente (tu ensamblado) de .NET?&#160; En este caso la implementación debe cumplir con ciertos requisitos.</p>
<h3>Atributo ComSourceInterfacesAttribute</h3>
<p>Para que podamos exponer un evento en nuestro ensamblado, y que pueda ser manejado por la aplicación de Silverlight a través de automatización, debemos marcar nuestra clase que implementa el evento con el atributo <a href="http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.comsourceinterfacesattribute.aspx" target="_blank">ComSourceInterfacesAttribute</a>, el cual indica una lista de interfaces que contienen los eventos a exponer en dicha clase.</p>
<h2><a href="http://rdiazconcha.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlightparte-2/" target="_blank">Puedes leer el artículo completo aquí</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlightparte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accediendo a tus ensamblados de .NET desde Silverlight</title>
		<link>http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlight/</link>
		<comments>http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlight/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 22:54:45 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[AutomationFactory]]></category>
		<category><![CDATA[interop]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlight/</guid>
		<description><![CDATA[El BCL (Biblioteca de Clases Base, por sus siglas en inglés) de Silverlight está reducido a comparación del BCL del .NET Framework completo que tenemos instalado en nuestros equipos, por lo que la funcionalidad no es la misma en un aplicativo de Silverlight que alguno construido con el .NET Framework completo. No obstante, a partir de Silverlight 4, es posible que las aplicaciones de Silverlight sean clientes de automatización cuando ejecutan en Confianza Elevada, esto es, poder invocar los servidores de automatización registrados en el sistema operativo Windows.&#160; Generalmente, la mayoría de ejemplos que podemos encontrar en la Web al respecto de esta característica van por el lado de invocar los servidores de automatización de Office (Outlook.Application o Excel.Application por ejemplo), pero ¿qué sucede si necesitamos invocar funcionalidad ya construida en alguno de nustros ensamblados que hayamos escrito en .NET 4.0? Ensamblado En esta solución crearemos dos proyectos, uno de tipo Class Library del .NET Framework 4.0 y otro proyecto será la aplicación de Silverlight. En el proyecto de la Biblioteca de Clases escribiremos la funcionalidad para obtener la información de todas las unidades lógicas del equipo.&#160; Tradicionalmente, esto lo podemos lograr por medio de la clase DriveInfo del espacio [...]]]></description>
			<content:encoded><![CDATA[<p>El BCL (Biblioteca de Clases Base, por sus siglas en inglés) de Silverlight está reducido a comparación del BCL del .NET Framework completo que tenemos instalado en nuestros equipos, por lo que la funcionalidad no es la misma en un aplicativo de Silverlight que alguno construido con el .NET Framework completo.</p>
<p>No obstante, a partir de Silverlight 4, es posible que las aplicaciones de Silverlight sean clientes de automatización cuando ejecutan en Confianza Elevada, esto es, poder invocar los servidores de automatización registrados en el sistema operativo Windows.&#160; Generalmente, la mayoría de ejemplos que podemos encontrar en la Web al respecto de esta característica van por el lado de invocar los servidores de automatización de Office (Outlook.Application o Excel.Application por ejemplo), pero ¿qué sucede si necesitamos invocar funcionalidad ya construida en alguno de nustros ensamblados que hayamos escrito en .NET 4.0?</p>
<h3>Ensamblado</h3>
<p>En esta solución crearemos dos proyectos, uno de tipo Class Library del .NET Framework 4.0 y otro proyecto será la aplicación de Silverlight.</p>
<p>En el proyecto de la Biblioteca de Clases escribiremos la funcionalidad para obtener la información de todas las unidades lógicas del equipo.&#160; Tradicionalmente, esto lo podemos lograr por medio de la clase DriveInfo del espacio de nombres System.IO, pero justamente esa es una de las clases que <u>no</u> está en el BCL de Silverlight, por lo que crearemos un ensamblado de .NET 4.0 que regrese esa información, y la usaremos en un aplicativo de Silverlight.</p>
<p>La clave para lograr esto es abrir las propiedades del proyecto de la Biblioteca de Clases y seleccionar la opción “Register for COM interop” para poder exponer este ensamblado a través de COM.</p>
<h2><a href="http://rdiazconcha.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlight/" target="_blank">Puedes leer el artículo completo aquí</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/07/accediendo-a-tus-ensamblados-de-net-desde-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Una mejor experiencia de instalación y actualización para Silverlight 4.0</title>
		<link>http://blogs.ligasilverlight.com/2011/03/una-mejor-experiencia-de-instalacion-y-actualizacion-para-silverlight-4-0/</link>
		<comments>http://blogs.ligasilverlight.com/2011/03/una-mejor-experiencia-de-instalacion-y-actualizacion-para-silverlight-4-0/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 19:59:27 +0000</pubDate>
		<dc:creator>david.mora</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Instalacion]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Traducciones]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/?p=2061</guid>
		<description><![CDATA[Por más pulida que sea la aplicación, puede que el usuario nunca llegue a verla gracias a una mala experiencia antes de siquiera ver nuestra primera pantalla. Hay diversas razones para esto; por ejemplo, puede que Silverlight no esté instalado, o que la versión presente sea incorrecta. Contrario a lo que muchos piensan, el desarrollador tiene casi completo control sobre lo que sucede en estos casos y cómo es presentado. En este artículo Andrew Tokeley nos da una guía práctica para mejorar la experiencia del usuario al instalar o actualizar nuestra aplicación. &#160; Este artículo fue publicado originalmente en Maromas Digitales y es una traducción aproximada del artículo Better Silverlight 4.0 Installation and Upgrade Experience publicado en inglés por Andrew Tokeley el 17 de octubre del 2010. &#160; Las apariencias son muy importantes. De hecho, la forma en que una aplicación es instalada, o actualizada, y cuánto dura en arrancar puede tener una gran influencia en el concepto que el usuario tenga de ella. Tal como viene de fábrica, Silverlight no ayuda mucho, pero tranquilos que con un poquito de esfuerzo de puede superar ese obstáculo. La siguiente figura ilustra la serie de pruebas necesarias cuando un usuario navega a [...]]]></description>
			<content:encoded><![CDATA[<p>Por más pulida que sea la aplicación, puede que el usuario nunca llegue a verla gracias a una mala experiencia antes de siquiera ver nuestra primera pantalla. Hay diversas razones para esto; por ejemplo, puede que Silverlight no esté instalado, o que la versión presente sea incorrecta. Contrario a lo que muchos piensan, el desarrollador tiene casi completo control sobre lo que sucede en estos casos y cómo es presentado. En este artículo Andrew Tokeley nos da una guía práctica para mejorar la experiencia del usuario al instalar o actualizar nuestra aplicación.</p>
<p>&#160;</p>
<blockquote><p>Este artículo fue publicado originalmente en <a href="http://maromasdigitales.net/">Maromas Digitales</a> y es una traducción aproximada del artículo <a href="http://andrewtokeley.net/archive/2010/10/17/silverlight-installation-experience.aspx">Better Silverlight 4.0 Installation and Upgrade Experience</a> publicado en inglés por <a href="http://andrewtokeley.net/Default.aspx">Andrew Tokeley</a> el 17 de octubre del 2010.</p>
</blockquote>
<p>&#160;</p>
<p>Las apariencias son muy importantes. De hecho, la forma en que una aplicación es instalada, o actualizada, y cuánto dura en arrancar puede tener una gran influencia en el concepto que el usuario tenga de ella. Tal como viene de fábrica, Silverlight no ayuda mucho, pero tranquilos que con un poquito de esfuerzo de puede superar ese obstáculo.</p>
<p>La siguiente figura ilustra la serie de pruebas necesarias cuando un usuario navega a la página que contiene la aplicación de Silverlight (para una imagen más amplia le sugiero abrir la imagen en una pestaña nueva).</p>
<p>&#160;</p>
<p><a href="http://maromasdigitales.net/wp-content/uploads/2011/02/SilverlighInit2.png"><img style="border-bottom: 0px;border-left: 0px;float: none;margin-left: auto;border-top: 0px;margin-right: auto;border-right: 0px" border="0" alt="Secuencia de inicio de una aplicación de Silverlight." src="http://maromasdigitales.net/wp-content/uploads/2011/02/SilverlighInit1_thumb1.png" width="556" height="863" /></a> </p>
<p>&#160;</p>
<h3>Verificando que Silverlight está instalado</h3>
<p>El archivo <em>Silverlight.js</em> se encarga de todo esto antes de que la aplicación siquiera sea cargada, pero aun así nosotros podemos agregar un poco de magia.</p>
<p>Una de las primeras cosas que hay que verificar es si Silverlight está instalado en el cliente y si es la versión correcta. Hay un excelente <a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=961e96e8-9a7f-4b70-947a-97f0973cb38c">documento</a> que explica el proceso en todo detalle. Sin embargo creo que se puede simplificar un poco y por eso he escrito este artículo.</p>
<p>En el archivo estándar que Visual Studio prepara, agreguen el siguiente código en la función <em>onSilverlightError</em>—de otro modo no será posible determinar si se requiere actualizar la versión ya instalada de Silverlight. (Puede que esto sea una pulga, aunque todavía no lo he investigado.)</p>
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    function onSilverlightError(sender, args) {

        var appSource = &quot;&quot;;
        if (sender != null &amp;amp;&amp;amp; sender != 0) {
            appSource = sender.getHost().Source;
        }

        var errorType = args.ErrorType;
        var iErrorCode = args.ErrorCode;

        // &iexcl;AGREGUEN ESTA PARTE!
        // Por alguna raz&oacute;n onUpgradeRequired nunca es llamado.
        if (iErrorCode == 8001) {
            Silverlight.onUpgradeRequired();
            return;
        }

        ...
    }
...
&amp;lt;/script&amp;gt;</code></pre>
</p></div>
<p>&#160;</p>
<p>Luego hay que añadir el siguiente código en JavaScript. Estas funciones nos permiten controlar el HTML que es desplegado dependiendo de si Silverlight está instalado y cuál es su versión.</p>
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>&amp;lt;script type=&quot;text/javascript&quot;
        src=&quot;scripts/plugindetect.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;
        src=&quot;scripts/Silverlight.supportedUserAgent.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;

  Silverlight.onRestartRequired = function () {
    DisplayAltenativeContent(
      &quot;&amp;lt;p&amp;gt;&iexcl;Casi listo! Tan s&oacute;lo hay que reiniciar&quot; +
      &quot;el navegador para usar la aplicaci&oacute;n.&amp;lt;/p&amp;gt;&quot;);
  };

  Silverlight.onUpgradeRequired = function () {
    PluginDetect.getVersion('.');
    DisplayAltenativeContent(
      &quot;&amp;lt;p&amp;gt;La versi&oacute;n de Silverlight instalada es  &quot; +
      PluginDetect.getVersion('Silverlight') + &quot; &quot; +
      &quot;pero la aplicaci&oacute;n ocupa que sea por lo menos &quot; +
      getRequiredVersion() + &quot;.&amp;lt;/p&amp;gt;&quot; +
      &quot;&amp;lt;p&amp;gt;Por favor obtenga la versi&oacute;n m&aacute;s reciente &quot; +
      &quot;haciendo clic abajo.&amp;lt;/p&amp;gt;&quot; +
      Silverlight.buildPromptHTML(getRequiredVersion()));
  };

  Silverlight.onInstallRequired = function () {
    DisplayAltenativeContent(
      &quot;&amp;lt;p&amp;gt;Silverlight no parece estar instalado &quot; +
      &quot;(o ha sido desactivado).&amp;lt;/p&amp;gt;&quot; +
      &quot;&amp;lt;p&amp;gt;Para instalarlo por favor haga clic abajo.&amp;lt;/p&amp;gt;&quot; +
      Silverlight.buildPromptHTML(getRequiredVersion()));
  };

  DisplayAltenativeContent = function (html) {
    document.getElementById(&quot;plugin&quot;).innerHTML =
      &quot;&amp;lt;div id='content'&amp;gt;&quot; + html + &quot;&amp;lt;/div&amp;gt;&quot;;
  };

  getRequiredVersion = function () {
    return document.getElementById(&quot;minRuntimeVersion&quot;)
           .getAttribute(&quot;value&quot;);
  }

  checkSupported = function () {
    // Verificar si el navegador es compatible.
    if (Silverlight.supportedUserAgent()) {
      document.getElementById(&quot;unsupported&quot;).innerHTML =
        &quot;&amp;lt;p&amp;gt;Este navegador no est&aacute; listado oficialmente &quot; +
        &quot;como compatible con Silverlight, pero es &quot; +
        &quot;posible que aun as&iacute; funcione bien &quot; +
        &quot;(&amp;lt;a target='_blank' href='http://www.&quot; +
        &quot;microsoft.com/silverlight/resources/install.aspx&quot; +
        &quot;#sysreq'&amp;#038;gtm&aacute;s detalles&amp;lt;/a&amp;gt;).&amp;lt;/p&amp;gt;&quot;;
    }
  }

  // Esta funci&oacute;n es llamada repetidamente mientras Silverlight
  // est&aacute; siendo instalado y puede usarse para actualizar un
  // control que muestre su progreso.
  onSourceDownloadProgressChanged = function (sender, eventArgs)
  {
    //var slPlugin = sender.getHost();
    //slPlugin.content.findName(&quot;progressMessage&quot;).Text =
    //  Math.round(eventArgs.progress * 100) + &quot;%&quot;;
  };

&amp;lt;/script&amp;gt;</code></pre>
</p></div>
<p>&#160;</p>
<p>Al cargar la página podemos entonces llamar la función <em>checkSupported()</em> para que le avise al usuario si el navegador no es del todo compatible. Lo importante es no dejar de intentar la instalación incluso si no está en la lista oficial de navegadores compatibles de Microsoft. Es posible que todavía se pueda ejecutar.</p>
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>&amp;lt;body onload=&quot;javascript: checkSupported();&quot;&amp;gt;</code></pre>
</div>
<p>&#160;</p>
<p>Finalmente, podemos alterar el elemento <em>object</em> para que incluya ciertos parámetros adicionales (y algunos divs extra en mi ejemplo). Presten especial atención a <em>onUpgradeRequired</em>, <em>onInstalledRequired</em> y <em>onRestartRequired</em>. Estos apuntan a funciones que serán llamadas por Silverlight.js durante las diferentes etapas.</p>
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>&amp;lt;div id=&quot;silverlight&quot;&amp;gt;
  &amp;lt;div id=&quot;plugin&quot;&amp;gt;
    &amp;lt;object data=&quot;data:application/x-silverlight-2&quot;
            type=&quot;application/x-silverlight-2&quot;
            width=&quot;100%&quot; height=&quot;100%&quot;&amp;gt;
      &amp;lt;param name=&quot;source&quot;
             value=&quot;ClientBin/ExperienciaDeInstalacion.xap&quot;/&amp;gt;
      &amp;lt;param name=&quot;onError&quot;
             value=&quot;onSilverlightError&quot; /&amp;gt;
      &amp;lt;param name=&quot;background&quot; value=&quot;black&quot; /&amp;gt;
      &amp;lt;param id=&quot;minRuntimeVersion&quot;
             name=&quot;minRuntimeVersion&quot;
             value=&quot;9.0.50401.0&quot; /&amp;gt;

      &amp;lt;!-- Estos par&aacute;metros son para --&amp;gt;
      &amp;lt;!-- presentar la pantalla de cargado.  --&amp;gt;
      &amp;lt;param name=&quot;splashscreensource&quot;
             value=&quot;ClientBin/splash_spinner.xaml&quot; /&amp;gt;
      &amp;lt;param name=&quot;onSourceDownloadProgressChanged&quot;
             value=&quot;onSourceDownloadProgressChanged&quot; /&amp;gt;

      &amp;lt;!-- Estos son para la instrucciones --&amp;gt;
      &amp;lt;!-- de instalaci&oacute;n/actualizaci&oacute;n. --&amp;gt;
      &amp;lt;param name=&quot;onUpgradeRequired&quot;
             value=&quot;onUpgradeRequired&quot; /&amp;gt;
      &amp;lt;param name=&quot;onInstallRequired&quot;
             value=&quot;onInstallRequired&quot; /&amp;gt;
      &amp;lt;param name=&quot;onRestartRequired&quot;
             value=&quot;onRestartRequired&quot; /&amp;gt;
      &amp;lt;param name=&quot;autoUpgrade&quot;
             value=&quot;false&quot; /&amp;gt;
    &amp;lt;/object&amp;gt;
    &amp;lt;iframe id=&quot;_sl_historyFrame&quot;
            style=&quot;visibility:hidden;height:0px;width:0px;border:0px&quot;&amp;gt;
    &amp;lt;/iframe&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div id=&quot;unsupported&quot;&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;</code></pre>
</p></div>
<p>&#160;</p>
<p>Para probar, se puede cambiar el <em>minRuntimeVersion</em> a un número mayor del que está actualmente instalado causando el siguiente resultado.</p>
<p>&#160;</p>
<p><a href="http://maromasdigitales.net/wp-content/uploads/2011/02/IncorrectVersion.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="onUpgradeRequired informa al usuario que necesita una versión más reciente de Silverlight." src="http://maromasdigitales.net/wp-content/uploads/2011/02/IncorrectVersion_thumb.png" width="400" height="225" /></a> </p>
<p>&#160;</p>
<p>Noten que he incluido <a href="http://www.pinlady.net/PluginDetect/"><em>PluginDetect</em></a> en mi página, para poder identificar la versión instalada de Silverlight. Hay veces en que puede ser más fácil poder informar al usuario cuál versión es la que tienen y cuál es la que ocupan. Por supuesto, podemos decidir cuántos detalles mostrar mediante modificar <em>Silverlight.onUpgradeRequired</em>. El enlace para instalar la versión deseada es creado mediante llamar la función <em>Silverlight.buildPromptHTML(versión)</em> (definida en Silverlight.js).</p>
<p>El siguiente experimento es desactivar el plugin de Silverlight en el navegador. De esta manera se puede simular el caso de un usuario sin Silverlight en su máquina. De acuerdo con el código en <em>Silverlight.onInstallRequired</em>, debería verse algo como esto en la pantalla:</p>
<p>&#160;</p>
<p><a href="http://maromasdigitales.net/wp-content/uploads/2011/02/NoSilverlight.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="onInstallRequired notifica al usuarion que Silverlight no está instalado y le indica dónde conseguirlo." src="http://maromasdigitales.net/wp-content/uploads/2011/02/NoSilverlight_thumb.png" width="400" height="225" /></a> </p>
<p>&#160;</p>
<p>Otra prueba es usar un navegador que no esté en la lista de los compatibles. Volviendo la versión a la que teníamos originalmente especificada, abrimos a página en el navegador de prueba y esta vez la aplicación es cargada pero con una nota de advertencia.</p>
<p>&#160;</p>
<p><a href="http://maromasdigitales.net/wp-content/uploads/2011/02/UnsupportedBrowser.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="checkSupported advierte al usuario si el navegador no es compatible dejándolo decidir si desea ejecutar la aplicación." src="http://maromasdigitales.net/wp-content/uploads/2011/02/UnsupportedBrowser_thumb.png" width="400" height="241" /></a> </p>
<p>&#160;</p>
<p>También es fácil comprobar si la aplicación ha sido instalada en la computadora. Todo lo que hay que hacer es verificar la condición <code>App.Current.InstallState == InstallState.Installed</code> y si es cierta entonces desplegar algo como lo siguiente.</p>
<p>&#160;</p>
<p><a href="http://maromasdigitales.net/wp-content/uploads/2011/02/InstalledOOB.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="La aplicación en sí puede detectar si ya ha sido instalada fuera del navegador." src="http://maromasdigitales.net/wp-content/uploads/2011/02/InstalledOOB_thumb.png" width="400" height="239" /></a></p>
<p>&#160;</p>
<h3>Actualizando una aplicación OOB</h3>
<p>Si la aplicación tiene como propósito que sea eventualmente instalada en el computador y usada en fuera del navegador (OOB por sus siglas en inglés), entonces es importante asegurarse de que revise si hay actualizaciones disponibles en el servidor. Recuerden que una vez que el usuario instala la aplicación, dejará de ser actualizada automáticamente, aun habiendo nuevas versiones del XAP en el servidor.</p>
<p>En mi ejemplo he creado una página con el propósito específico de revisar si hay actualizaciones. La página es cargada siempre al inicio de la aplicación y le avisa al usuario si hay una actualización disponible, si no entonces pasa el mando a la página principal.</p>
<p>De esta manera podemos informar al usuario que la aplicación está buscando actualizaciones y presentar una animación mientras tanto.</p>
<p>&#160;</p>
<p><a href="http://maromasdigitales.net/wp-content/uploads/2011/02/CheckingForUpdates.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="La aplicación revisando si hay versiones más recientes en el servidor." src="http://maromasdigitales.net/wp-content/uploads/2011/02/CheckingForUpdates_thumb.png" width="400" height="313" /></a> </p>
<p>&#160;</p>
<p>El único código interesante de esta página es:</p>
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>App.Current.CheckAndDownloadUpdateCompleted +=
    Current_CheckAndDownloadUpdateCompleted;
App.Current.CheckAndDownloadUpdateAsync();</code></pre>
</div>
<p>&#160;</p>
<p>Es no más asunto de conectar un controlador que sea ejecutado cuando complete <em>CheckAndDownloadUpdatesAsync()</em> y que informe al usuario si hay una nueva versión disponible. Algo como esto:</p>
<p>&#160;</p>
<p><a href="http://maromasdigitales.net/wp-content/uploads/2011/02/UpdateInstalled.png"><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="En caso de haber sido actualizada, la aplicación informa al usuario al respecto." src="http://maromasdigitales.net/wp-content/uploads/2011/02/UpdateInstalled_thumb.png" width="400" height="313" /></a> </p>
<p>&#160;</p>
<h3>Pantalla de cargado personalizada</h3>
<p>Finalmente, una forma efectiva de darle un aspecto profesional es evitar que esta animación aparezca:</p>
<p>&#160;</p>
<p><img style="border-right-width: 0px;float: none;border-top-width: 0px;border-bottom-width: 0px;margin-left: auto;border-left-width: 0px;margin-right: auto" border="0" alt="Esferas originales (y ya aburridas) de Silverlight cargando. La idea es usar algo original." src="http://maromasdigitales.net/wp-content/uploads/2011/02/Spheres.png" width="150" height="170" />&#160; </p>
<p>&#160;</p>
<p>El procedimiento es sencillo y ha sido bien explicado por <a href="http://weblogs.asp.net/lduveau/archive/2009/09/05/tutorial-create-a-custom-silverlight-splash-screen.aspx">Laurent Duveau</a> y en <a href="http://msdn.microsoft.com/es-es/library/cc903962(VS.95).aspx">MSDN</a> por lo que no voy a repetirlo acá. Sin embargo, hay algunas cosas que a veces no quedan claras:</p>
<ul>
<li>No estoy seguro por qué, pero la pantalla de cargado no siempre aparece. En todo caso, he notado lo siguiente:
<ul>
<li>Chrome parece ser el mejor portado. </li>
<li>Limpien el cache del navegador para asegurarse de que de hecho están descargando algo. </li>
<li>He obtenido resultados más consistentes haciendo clic derecho en la página HTML (o aspx) y seleccionando <em>Ver en el explorador…</em> en vez de usar F5 para depurar. </li>
</ul>
</li>
<li>Si ven la animación original con las esferas azules el problema es generalmente un error ortográfico en alguno de los parámetros en el elemento <em>object</em>. Si ven una página en blanco si pantalla de cargado entonces probablemente la aplicación no ha sido descargada. Tal vez por estar en el cache; vean el paso anterior. </li>
<li>El XAML de la pantalla de cargado es un fragmento. No necesita estar dentro de un UserControl o Page. Por ejemplo, basta con declarar un elemento <em>Canvas</em> o <em>Grid</em> y crear el contenido (ejemplos más adelante). </li>
<li>Puesto que el XAML reside en la página de web, no es posible verla en el área de diseño de Blend. Lo que se puede hacer es diseñarla dentro de un proyecto de Silverlight y ya cuando está lista copiar el fragmento a la página de web. </li>
<li>No es posible usar código subyacente por lo que si tienen una animación, debe ser iniciada de una manera como esta:
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>&amp;lt;Grid&amp;gt;

    &amp;lt;Grid.Triggers&amp;gt;
        &amp;lt;EventTrigger RoutedEvent=&quot;Grid.Loaded&quot;&amp;gt;
            &amp;lt;BeginStoryboard&amp;gt;
                &amp;lt;Storyboard&amp;gt;
                    ...
                &amp;lt;/Storyboard&amp;gt;
            &amp;lt;/BeginStoryboard&amp;gt;
        &amp;lt;/EventTrigger&amp;gt;
    &amp;lt;/Grid.Triggers&amp;gt;

    &amp;lt;!-- Agregar controles animados por el gui&oacute;n --&amp;gt;

&amp;lt;/Grid&amp;gt;</code></pre>
</p></div>
</li>
</ul>
<p>&#160;</p>
<p>Les muestro ahora un par de ejemplos de pantallas de cargado.</p>
<p>La forma más sencilla es rotar una imagen:</p>
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>&amp;lt;Grid
  xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
  xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
  x:Name=&quot;parentCanvas&quot;
  Background=&quot;Black&quot; &amp;gt;

  &amp;lt;Grid.Triggers&amp;gt;
    &amp;lt;EventTrigger RoutedEvent=&quot;Grid.Loaded&quot;&amp;gt;
      &amp;lt;BeginStoryboard&amp;gt;
        &amp;lt;Storyboard RepeatBehavior=&quot;Forever&quot;&amp;gt;
          &amp;lt;DoubleAnimation
                 Storyboard.TargetName=&quot;spinnerRotation&quot;
                 Storyboard.TargetProperty=&quot;Angle&quot;
                 From=&quot;0&quot; To=&quot;360&quot; Duration=&quot;00:00:02&quot; &amp;gt;
          &amp;lt;/DoubleAnimation&amp;gt;
        &amp;lt;/Storyboard&amp;gt;
      &amp;lt;/BeginStoryboard&amp;gt;
    &amp;lt;/EventTrigger&amp;gt;
  &amp;lt;/Grid.Triggers&amp;gt;

  &amp;lt;StackPanel VerticalAlignment=&quot;Center&quot;
              HorizontalAlignment=&quot;Center&quot;&amp;gt;

    &amp;lt;Image Source=&quot;/images/spinner.png&quot;
           Stretch=&quot;None&quot; Margin=&quot;15&quot; &amp;gt;
      &amp;lt;Image.RenderTransform&amp;gt;
        &amp;lt;RotateTransform x:Name=&quot;spinnerRotation&quot;
                         Angle=&quot;0&quot; CenterX=&quot;25&quot;
                         CenterY=&quot;25&quot;&amp;gt;
        &amp;lt;/RotateTransform&amp;gt;
      &amp;lt;/Image.RenderTransform&amp;gt;
    &amp;lt;/Image&amp;gt;
  &amp;lt;/StackPanel&amp;gt;

&amp;lt;/Grid&amp;gt;</code></pre>
</p></div>
<p>&#160;</p>
<p>Otra es usar animaciones diferidas:</p>
<p>&#160;</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<pre><code>&amp;lt;Grid
  xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
  xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
  x:Name=&quot;parentCanvas&quot;
  Background=&quot;Black&quot;&amp;gt;

  &amp;lt;Grid.Triggers&amp;gt;
    &amp;lt;EventTrigger RoutedEvent=&quot;Grid.Loaded&quot;&amp;gt;
      &amp;lt;BeginStoryboard&amp;gt;
        &amp;lt;Storyboard RepeatBehavior=&quot;Forever&quot; AutoReverse=&quot;True&quot;&amp;gt;
          &amp;lt;DoubleAnimation Storyboard.TargetName=&quot;c1&quot;
                           Storyboard.TargetProperty=&quot;Opacity&quot;
                           BeginTime=&quot;0:0:0&quot; From=&quot;0&quot; To=&quot;1&quot;
                           By=&quot;0.1&quot; Duration=&quot;0:0:0.2&quot;
                           AutoReverse=&quot;True&quot; &amp;gt;
          &amp;lt;/DoubleAnimation&amp;gt;
          &amp;lt;DoubleAnimation Storyboard.TargetName=&quot;c2&quot;
                           Storyboard.TargetProperty=&quot;Opacity&quot;
                           BeginTime=&quot;0:0:0.1&quot; From=&quot;0&quot; To=&quot;1&quot;
                           By=&quot;0.1&quot; Duration=&quot;0:0:0.2&quot;
                           AutoReverse=&quot;True&quot; &amp;gt;
          &amp;lt;/DoubleAnimation&amp;gt;
          &amp;lt;DoubleAnimation Storyboard.TargetName=&quot;c3&quot;
                           Storyboard.TargetProperty=&quot;Opacity&quot;
                           BeginTime=&quot;0:0:0.2&quot; From=&quot;0&quot; To=&quot;1&quot;
                           By=&quot;0.1&quot; Duration=&quot;0:0:0.2&quot;
                           AutoReverse=&quot;True&quot;&amp;gt;
          &amp;lt;/DoubleAnimation&amp;gt;
          &amp;lt;DoubleAnimation Storyboard.TargetName=&quot;c4&quot;
                           Storyboard.TargetProperty=&quot;Opacity&quot;
                           BeginTime=&quot;0:0:0.3&quot; From=&quot;0&quot; To=&quot;1&quot;
                           By=&quot;0.1&quot; Duration=&quot;0:0:0.2&quot;
                           AutoReverse=&quot;True&quot;&amp;gt;
          &amp;lt;/DoubleAnimation&amp;gt;
          &amp;lt;DoubleAnimation Storyboard.TargetName=&quot;c5&quot;
                           Storyboard.TargetProperty=&quot;Opacity&quot;
                           BeginTime=&quot;0:0:0.4&quot; From=&quot;0&quot; To=&quot;1&quot;
                           By=&quot;0.1&quot; Duration=&quot;0:0:0.2&quot;
                           AutoReverse=&quot;True&quot;&amp;gt;
          &amp;lt;/DoubleAnimation&amp;gt;
        &amp;lt;/Storyboard&amp;gt;
      &amp;lt;/BeginStoryboard&amp;gt;
    &amp;lt;/EventTrigger&amp;gt;
  &amp;lt;/Grid.Triggers&amp;gt;

  &amp;lt;TextBlock x:Name=&quot;progressMessage&quot; Text=&quot;0%&quot;
             HorizontalAlignment=&quot;Center&quot;
             VerticalAlignment=&quot;Center&quot;
             FontWeight=&quot;Bold&quot; FontSize=&quot;12&quot;
             Foreground=&quot;#FFB3BABA&quot;&amp;gt;
  &amp;lt;/TextBlock&amp;gt;

  &amp;lt;StackPanel Orientation=&quot;Horizontal&quot; Margin=&quot;0,20,0,0&quot;
             HorizontalAlignment=&quot;Center&quot;
             VerticalAlignment=&quot;Center&quot; &amp;gt;
    &amp;lt;Ellipse x:Name=&quot;c1&quot; Fill=&quot;White&quot; Opacity=&quot;0&quot;
             HorizontalAlignment=&quot;Left&quot;
             Height=&quot;4&quot; Stroke=&quot;Black&quot;
             VerticalAlignment=&quot;Bottom&quot; Width=&quot;10&quot;/&amp;gt;
    &amp;lt;Ellipse x:Name=&quot;c2&quot; Fill=&quot;White&quot; Opacity=&quot;0&quot;
             HorizontalAlignment=&quot;Left&quot;
             Height=&quot;4&quot; Stroke=&quot;Black&quot;
             VerticalAlignment=&quot;Bottom&quot; Width=&quot;10&quot;/&amp;gt;
    &amp;lt;Ellipse x:Name=&quot;c3&quot; Fill=&quot;White&quot; Opacity=&quot;0&quot;
             HorizontalAlignment=&quot;Left&quot;
             Height=&quot;4&quot; Stroke=&quot;Black&quot;
             VerticalAlignment=&quot;Bottom&quot; Width=&quot;10&quot;/&amp;gt;
    &amp;lt;Ellipse x:Name=&quot;c4&quot; Fill=&quot;White&quot; Opacity=&quot;0&quot;
             HorizontalAlignment=&quot;Left&quot;
             Height=&quot;4&quot; Stroke=&quot;Black&quot;
             VerticalAlignment=&quot;Bottom&quot; Width=&quot;10&quot;/&amp;gt;
    &amp;lt;Ellipse x:Name=&quot;c5&quot; Fill=&quot;White&quot; Opacity=&quot;0&quot;
             HorizontalAlignment=&quot;Left&quot;
             Height=&quot;4&quot; Stroke=&quot;Black&quot;
             VerticalAlignment=&quot;Bottom&quot; Width=&quot;10&quot;/&amp;gt;
  &amp;lt;/StackPanel&amp;gt;
&amp;lt;/Grid&amp;gt;</code></pre>
</p></div>
<p>&#160;</p>
<p>Pueden descargar el código de ejemplo <a href="http://maromasdigitales.net/wp-content/uploads/2011/02/ExperienciaDeInstalacion.zip">acá</a>. Mi recomendación es crear una aplicación de gran tamaño (decenas de MiB) que requiera una descarga lo suficientemente extensa como para ver la animación.</p>
<p>&#160;</p>
<h5>Andrew Tokeley</h5>
<p>&#160;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/03/una-mejor-experiencia-de-instalacion-y-actualizacion-para-silverlight-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuevo engine de comentarios</title>
		<link>http://blogs.ligasilverlight.com/2011/03/nuevo-engine-de-comentarios/</link>
		<comments>http://blogs.ligasilverlight.com/2011/03/nuevo-engine-de-comentarios/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 06:08:45 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Anuncios]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/03/nuevo-engine-de-comentarios/</guid>
		<description><![CDATA[Acabamos de hacer una actualización en nuestro sistema de comentarios. A partir de ahora, estaremos usando Disqus, un engine de comentarios que está tomando popularidad en diferentes blogs y en sitios de la talla de Engadget, DotNetRocks, etc. La migración de comentarios existentes parece haber sido un éxito. Esperamos sea de tu agrado y cualquier duda o comentario no dudes en contactarme en twitter, correo o dejar un comentario]]></description>
			<content:encoded><![CDATA[<p>Acabamos de hacer una actualización en nuestro sistema de comentarios. A partir de ahora, estaremos usando <a href="http://disqus.com" target="_blank">Disqus</a>, un engine de comentarios que está tomando popularidad en diferentes blogs y en sitios de la talla de <a href="http://www.engadget.com/" target="_blank">Engadget</a>, <a href="http://dotnetrocks.com/" target="_blank">DotNetRocks</a>, etc.</p>
<p>La migración de comentarios existentes parece haber sido un éxito.</p>
<p>Esperamos sea de tu agrado y cualquier duda o comentario no dudes en contactarme en <a href="http://twitter.com/jamolina" target="_blank">twitter</a>, <a href="mailto:Arturo.Molina@ligasilverlight.com" target="_blank">correo</a> o dejar un comentario <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/03/wlEmoticon-winkingsmile1.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/03/nuevo-engine-de-comentarios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DataGrid, ColumnSeries y un toque de MVVM</title>
		<link>http://blogs.ligasilverlight.com/2011/03/datagrid-columnseries-y-un-toque-de-mvvm/</link>
		<comments>http://blogs.ligasilverlight.com/2011/03/datagrid-columnseries-y-un-toque-de-mvvm/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 19:34:31 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Binding]]></category>
		<category><![CDATA[Chart]]></category>
		<category><![CDATA[ColumnSeries]]></category>
		<category><![CDATA[DataGrid]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/03/datagrid-columnseries-y-un-toque-de-mvvm/</guid>
		<description><![CDATA[Recibí una pregunta pregunta en un post que había escrito previamente. La pregunta era como se puede cambiar una gráfica a la par con los datos de un DataGrid. La respuesta es ¡Con DataBinding! Muchas gracias. Ok ok, la explicación larga. Primero vamos a hacer un modelo para datos de prueba: using System.ComponentModel; namespace SilverlightApplication3 { public class SampleData : INotifyPropertyChanged { private string _name; public string Name { get { return _name; } set { _name = value; NotifyPropertyChanged(&#38;quot;Name&#38;quot;); } } private double _value; public double Value { get { return _value; } set { _value = value; NotifyPropertyChanged(&#38;quot;Value&#38;quot;); } } public SampleData() { } public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public event PropertyChangedEventHandler PropertyChanged; } } &#160; Este modelo cuenta con dos propiedades (Name y Value) e implementa INotifyPropertyChanged para poder manejar el Binding de forma correcta. Ahora creamos el ViewModel. En una aplicación real deberías obtener dichos valores desde un webservice en tu servidor, pero para efectos prácticos, aquí inicializo una lista de objetos SampleData (nuestro modelo) en el constructor del ViewModel. using System.Collections.Generic; namespace SilverlightApplication3 { public class ViewModel { public string Title { get; set; } [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2011/03/image4.png" rel="lightbox"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/03/image_thumb4.png" width="600" /></a></p>
<p>Recibí una pregunta pregunta en un <a href="http://blogs.ligasilverlight.com/2009/12/ocultando-las-lneas-del-control-chart/comment-page-1/#comment-7056" target="_blank">post</a> que había escrito previamente. La pregunta era como se puede cambiar una gráfica a la par con los datos de un DataGrid. La respuesta es ¡Con DataBinding!</p>
<p>Muchas gracias.</p>
<p>Ok ok, la explicación larga. Primero vamos a hacer un modelo para datos de prueba:</p>
<p>  <pre><code>using System.ComponentModel;

namespace SilverlightApplication3
{
    public class SampleData : INotifyPropertyChanged
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set
            { 
                _name = value;
                NotifyPropertyChanged(&amp;quot;Name&amp;quot;);
            }
        }

        private double _value;
        public double Value
        {
            get { return _value; }
            set 
            {
                _value = value;
                NotifyPropertyChanged(&amp;quot;Value&amp;quot;);
            }
        }

        public SampleData() {  }

        public void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }
}</code></pre></p>
<p>&#160;</p>
<p>Este modelo cuenta con dos propiedades (Name y Value) e implementa INotifyPropertyChanged para poder manejar el Binding de forma correcta.</p>
<p>Ahora creamos el ViewModel. En una aplicación real deberías obtener dichos valores desde un webservice en tu servidor, pero para efectos prácticos, aquí inicializo una lista de objetos SampleData (nuestro modelo) en el constructor del ViewModel.</p>
<p><pre><code>using System.Collections.Generic;

namespace SilverlightApplication3
{
    public class ViewModel
    {
        public string Title { get; set; }
        public List&amp;lt;SampleData&amp;gt; Samples { get; set; } 

        public ViewModel()
        {
            Title = &amp;quot;Probando graficas&amp;quot;;
            Samples = new List&amp;lt;SampleData&amp;gt;();
            Samples.Add(new SampleData() { Name = &amp;quot;Nombre 1&amp;quot;, Value = 1 });
            Samples.Add(new SampleData() { Name = &amp;quot;Nombre 2&amp;quot;, Value = 4 });
            Samples.Add(new SampleData() { Name = &amp;quot;Nombre 3&amp;quot;, Value = 3 });
            Samples.Add(new SampleData() { Name = &amp;quot;Nombre 4&amp;quot;, Value = 2 });
            Samples.Add(new SampleData() { Name = &amp;quot;Nombre 5&amp;quot;, Value = 5 });
        }
    }
}</code></pre></p>
<p>&#160;</p>
<p>Finalmente creamos nuestra vista en XAML:</p>
<p><pre><code>;&quot;]&amp;lt;UserControl x:Class=&amp;quot;SilverlightApplication3.MainPage&amp;quot;
             xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
             xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
             xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;
             xmlns:mc=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;
             mc:Ignorable=&amp;quot;d&amp;quot;
             d:DesignHeight=&amp;quot;390&amp;quot;
             d:DesignWidth=&amp;quot;638&amp;quot;
             xmlns:sdk=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk&amp;quot;
             xmlns:me=&amp;quot;clr-namespace:SilverlightApplication3&amp;quot;
             xmlns:toolkit=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit&amp;quot;&amp;gt;
    &amp;lt;UserControl.Resources&amp;gt;
        &amp;lt;me:ViewModel x:Key=&amp;quot;model&amp;quot; /&amp;gt;
    &amp;lt;/UserControl.Resources&amp;gt;
    &amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot;
          Background=&amp;quot;White&amp;quot;
          DataContext=&amp;quot;{Binding Source={StaticResource model}}&amp;quot;&amp;gt;
        &amp;lt;Grid.ColumnDefinitions&amp;gt;
            &amp;lt;ColumnDefinition Width=&amp;quot;237&amp;quot; /&amp;gt;
            &amp;lt;ColumnDefinition Width=&amp;quot;*&amp;quot; /&amp;gt;
        &amp;lt;/Grid.ColumnDefinitions&amp;gt;
        &amp;lt;StackPanel&amp;gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding Title}&amp;quot;
                       FontWeight=&amp;quot;Bold&amp;quot;
                       Margin=&amp;quot;0,10&amp;quot;
                       HorizontalAlignment=&amp;quot;Center&amp;quot; /&amp;gt;
            &amp;lt;sdk:DataGrid AutoGenerateColumns=&amp;quot;False&amp;quot;
                          x:Name=&amp;quot;dataGrid1&amp;quot;
                          VerticalAlignment=&amp;quot;Top&amp;quot;
                          ItemsSource=&amp;quot;{Binding Samples, Mode=TwoWay}&amp;quot;
                          Margin=&amp;quot;10,0&amp;quot;&amp;gt;
                &amp;lt;sdk:DataGrid.Columns&amp;gt;
                    &amp;lt;sdk:DataGridTextColumn Header=&amp;quot;Nombre&amp;quot;
                                            Binding=&amp;quot;{Binding Name}&amp;quot; /&amp;gt;
                    &amp;lt;sdk:DataGridTemplateColumn Header=&amp;quot;Valor&amp;quot;
                                                Width=&amp;quot;150&amp;quot;&amp;gt;
                        &amp;lt;sdk:DataGridTemplateColumn.CellEditingTemplate&amp;gt;
                            &amp;lt;DataTemplate&amp;gt;
                                &amp;lt;StackPanel Orientation=&amp;quot;Horizontal&amp;quot;&amp;gt;
                                    &amp;lt;Slider Value=&amp;quot;{Binding Value, Mode=TwoWay}&amp;quot;
                                            Maximum=&amp;quot;5&amp;quot;
                                            Minimum=&amp;quot;0&amp;quot;
                                            Width=&amp;quot;100&amp;quot; /&amp;gt;
                                    &amp;lt;TextBlock Text=&amp;quot;{Binding Value, StringFormat=\{0:F4\} }&amp;quot; /&amp;gt;
                                &amp;lt;/StackPanel&amp;gt;
                            &amp;lt;/DataTemplate&amp;gt;
                        &amp;lt;/sdk:DataGridTemplateColumn.CellEditingTemplate&amp;gt;
                    &amp;lt;/sdk:DataGridTemplateColumn&amp;gt;
                &amp;lt;/sdk:DataGrid.Columns&amp;gt;
            &amp;lt;/sdk:DataGrid&amp;gt;
        &amp;lt;/StackPanel&amp;gt;
        &amp;lt;Grid Grid.Column=&amp;quot;1&amp;quot;&amp;gt;
            &amp;lt;toolkit:Chart Margin=&amp;quot;10&amp;quot;&amp;gt;
                &amp;lt;toolkit:ColumnSeries x:Name=&amp;quot;columnSeries1&amp;quot;
                                      ItemsSource=&amp;quot;{Binding Samples, Mode=TwoWay}&amp;quot;
                                      IndependentValuePath=&amp;quot;Name&amp;quot;
                                      DependentValuePath=&amp;quot;Value&amp;quot;&amp;gt;
                    &amp;lt;toolkit:ColumnSeries.DependentRangeAxis&amp;gt;
                        &amp;lt;toolkit:LinearAxis Orientation=&amp;quot;Y&amp;quot;
                                            Minimum=&amp;quot;0&amp;quot;
                                            Maximum=&amp;quot;5.5&amp;quot; /&amp;gt;
                    &amp;lt;/toolkit:ColumnSeries.DependentRangeAxis&amp;gt;
                &amp;lt;/toolkit:ColumnSeries&amp;gt;
            &amp;lt;/toolkit:Chart&amp;gt;
        &amp;lt;/Grid&amp;gt;
    &amp;lt;/Grid&amp;gt;
&amp;lt;/UserControl&amp;gt;</code></pre></p>
<p>&#160;</p>
<p>En la línea 13 creamos una instancia de nuestro ViewModel y la agregamos a nuestros recursos locales. Después, en la línea 17 asignamos dicho recurso al DataContext de nuestro LayoutRoot (en este caso el Grid que contiene todos los elementos de la vista). En la línea 30 definimos la propiedad Samples de nuestro ViewModel como la fuente de datos del DataGrid. En la línea 40 definimos el binding a la propiedad Value con un slider para modificar los datos fácilmente. Las líneas 55 y 57 se encargan de hacer lo mismo para la gráfica de barras.</p>
<p>Nótese como los bindings se definien con el Mode=TwoWay para actualizar el ViewModel “de ida y vuelta”, es decir, que los cambios en la vista se reflejan en el ViewModel y viceversa.</p>
<p>Puedes ver el ejemplo corriendo <a href="http://demos.jamolina.com/DataGridColumnSeriesMVVM" target="_blank">aquí</a>. Y puedes descargar el código <a href="http://source.jamolina.com/DataGridColumnSeriesMVVM.zip" target="_blank">aquí</a>.</p>
<p><strong>UPDATE:</strong> De pura casualidad <strike>encontré</strike> mi compañera Araceli Medina encontró un bug en el Silverlight Toolkit mientras jugaba con el demo. Estaba jugando con mover sliders y cambiar el tamaño de la ventana cuando noté que esto pasaba:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2011/03/image_thumb21.png" rel="lightbox"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image_thumb[2]" border="0" alt="image_thumb[2]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/03/image_thumb2_thumb.png" width="604" height="324" /></a></p>
<p>El borde inferior de los rectangulos no se quedaba en la parte de abajo de la gráfica. No estoy seguro a qué se deba esto pero si se vuelve a cambiar el tamaño de la ventana el problema se corrije. El bug fue dado de alta en <a href="http://silverlight.codeplex.com/workitem/8535" target="_blank">codeplex</a>.</p>
<p>[Artículo originalmente publicado en <a href="http://jamolina.com/2011/03/datagrid-columnseries-y-un-toque-de-mvvm/" target="_blank">JAMolina.com</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/03/datagrid-columnseries-y-un-toque-de-mvvm/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Técnicas con MVVM</title>
		<link>http://blogs.ligasilverlight.com/2011/02/tecnicas-con-mvvm/</link>
		<comments>http://blogs.ligasilverlight.com/2011/02/tecnicas-con-mvvm/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 16:35:40 +0000</pubDate>
		<dc:creator>david.mora</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[MVVM]]></category>
		<category><![CDATA[Traducciones]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/?p=1961</guid>
		<description><![CDATA[Uno de los obstáculos que he notado en muchos (incluyéndome a mí) tratando de entender MVVM, es aceptar que no es una receta, sino un concepto. Estamos acostumbrados a buscar procedimientos reproducibles que nos lleven, paso a paso, a la solución. Desafortunadamente (o por dicha, según uno lo vea), MVVM no se presta a tal formato. El patrón de diseño Modelo-Vista-Modelo de vista es más una estrategia, una idea general de cómo estructurar la solución a un problema. En vez de listas de pasos, necesariamente lo que encontramos son explicaciones de los componentes principales del patrón y algunos ejemplos de su aplicación. Para los que todavía no están familiarizados con el patrón, Jeremy Likness ha escrito una muy buena introducción al tema. &#160; Estrategia y táctica Si bien la estrategia a utilizar es esencial, las tácticas son las que ponen en acción el plan principal. En una batalla, la estrategia puede ser ocupar cierta zona para avanzar en el territorio enemigo, pero la forma en que las fuerzas son distribuidas o los diferentes ataques individuales forman las tácticas del enfrentamiento. En MVVM, la estrategia es dividir la solución en ciertas zonas o capas como el modelo, la vista, y el [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los obstáculos que he notado en muchos (incluyéndome a mí) tratando de entender MVVM, es aceptar que no es una receta, sino un concepto. Estamos acostumbrados a buscar procedimientos reproducibles que nos lleven, paso a paso, a la solución. Desafortunadamente (o por dicha, según uno lo vea), MVVM no se presta a tal formato.</p>
<p>El patrón de diseño Modelo-Vista-Modelo de vista es más una estrategia, una idea general de cómo estructurar la solución a un problema. En vez de listas de pasos, necesariamente lo que encontramos son explicaciones de los componentes principales del patrón y algunos ejemplos de su aplicación. Para los que todavía no están familiarizados con el patrón, <a href="http://csharperimage.jeremylikness.com/">Jeremy Likness</a> ha escrito una muy buena <a href="http://maromasdigitales.net/2010/05/patron-mvvm-explicado/">introducción al tema</a>.</p>
<p>&#160;</p>
<h3>Estrategia y táctica</h3>
<p>Si bien la estrategia a utilizar es esencial, las tácticas son las que ponen en acción el plan principal. En una batalla, la estrategia puede ser ocupar cierta zona para avanzar en el territorio enemigo, pero la forma en que las fuerzas son distribuidas o los diferentes ataques individuales forman las tácticas del enfrentamiento.</p>
<p>En MVVM, la estrategia es dividir la solución en ciertas zonas o capas como el modelo, la vista, y el pegamento entre ambas: el modelo de vista. Las tácticas incluyen, entre muchas otras, la navegación entre vistas, el envío de datos del modelo a la vista, la comunicación entre la vista y el modelo de vista, el uso de comandos y así por el estilo.</p>
<p>Aunque MVVM no se presta a recetas premeditadas, sí hay gran variedad de técnicas o tácticas que pueden ser usadas en su aplicación al problema y que pueden ser bien definidas en procedimientos concretos. Por ejemplo, en las últimas semanas he estado publicando traducciones de algunos artículos que proponen métodos para resolver el problema de la asociación entre vistas y modelos de vista y el manejo de transacciones en la interfase gráfica de la aplicación.</p>
<p>La ventaja del sistema completo, estrategia y técnica, es que podemos escoger las que mejor se adapten a nuestras circunstancias particulares o, siendo francos, a nuestro gusto. Los siguientes artículos muestran algunas formas de resolver problemas comunes enfrentados al implementar MVVM. Los invito a leerlos y escoger los que les parezcan apropiados, elegantes, efectivos, o cualquier otro aspecto que les llame la atención.</p>
<p>&#160;</p>
<ul>
<li><a href="http://maromasdigitales.net/2011/01/5-pasos-sencillos-para-usar-comandos-en-silverlight/">5 pasos sencillos para usar comandos en Silverlight</a> </li>
<li><a href="http://maromasdigitales.net/2011/01/sencillo-localizador-de-modelos-de-vista-para-mvvm/">Sencillo localizador de modelos de vista para MVVM</a> </li>
<li><a href="http://maromasdigitales.net/2011/01/otro-patron-de-localizacion-de-modelos-de-vista/">Otro patrón de localización de modelos de vista</a> </li>
<li><a href="http://maromasdigitales.net/2011/01/transacciones-en-mvvm/">Transacciones en MVVM</a> </li>
<li><a href="http://maromasdigitales.net/2011/02/ejemplo-de-mvvm-con-transacciones-y-localizador-de-modelos-de-vista/">Ejemplo de MVVM con transacciones y localizador de modelos de vista</a> </li>
</ul>
<p>&#160;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/02/tecnicas-con-mvvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hola Universo!</title>
		<link>http://blogs.ligasilverlight.com/2011/01/hola-universo/</link>
		<comments>http://blogs.ligasilverlight.com/2011/01/hola-universo/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 00:46:00 +0000</pubDate>
		<dc:creator>yesez</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Anuncios]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/01/hola-universo/</guid>
		<description><![CDATA[Mi nombre es Jimmy Sáenz Rizo, estudiante de Ingeniería en Sistemas, procedente de Nicaragua. Mi principal objetivo será ofrecerles guías en lo que respecta al apasionante mundo de Silverlight. Dichas guías se caracterizarán por ser “paso a paso” , con diferentes medios de explicación como imágenes, gráficos, videos, etc.. que faciliten el entendimiento de las publicaciones en lo posible. Como siempre he dicho, la solución de un algoritmo puede tener N soluciones así que espero aprender con ustedes en esta nueva etapa como miembro de La Liga Silverlight. Quisiera agradecer al equipo de la Liga Silverlight por esta oportunidad, especialmente a Rodrigo Díaz Concha por el apoyo. En un principio las publicaciones serán “back to basic” para los nuevos aventureros, pero pronto realizaré entregas sobre temas como PivotViewer, Photosynth, mejoras en la experiencia de usuario y algunos mini-proyectos para avanzar en cuanto a conocimiento se refiere. Siéntanse en todo el derecho de preguntar cualquier duda que tengan, si conozco la respuesta con gusto se las daré y sino con gusto la buscaré &#160; Si desean contactarme pueden hacerlo a través de este medio. Saludos!!]]></description>
			<content:encoded><![CDATA[<p>Mi nombre es Jimmy Sáenz Rizo, estudiante de Ingeniería en Sistemas, procedente de Nicaragua. Mi principal objetivo será ofrecerles guías en lo que respecta al apasionante mundo de <a href="http://www.silverlight.net/">Silverlight</a>. Dichas guías se caracterizarán por ser “<strong>paso a paso”</strong> , con diferentes medios de explicación como imágenes, gráficos, videos, etc.. que faciliten el entendimiento de las publicaciones en lo posible. Como siempre he dicho, la solución de un algoritmo puede tener N soluciones así que espero aprender con ustedes en esta nueva etapa como miembro de <a href="http://blogs.ligasilverlight.com/">La Liga Silverlight</a>. Quisiera agradecer al equipo de la Liga Silverlight por esta oportunidad, especialmente a <a href="http://rdiazconcha.com/">Rodrigo Díaz Concha</a> por el apoyo. </p>
<p>En un principio las publicaciones serán “back to basic” para los nuevos aventureros, pero pronto realizaré entregas sobre temas como PivotViewer, Photosynth, mejoras en la experiencia de usuario y algunos mini-proyectos para avanzar en cuanto a conocimiento se refiere. Siéntanse en todo el derecho de preguntar cualquier duda que tengan, si conozco la respuesta con gusto se las daré y sino con gusto la buscaré <img style="border-bottom-style: none;border-right-style: none;border-top-style: none;border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Sonrisa" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" />&#160;</p>
<p>Si desean contactarme pueden hacerlo a través de este <a href="http://about.me/yesez">medio</a>.    </p>
<p>Saludos!!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/01/hola-universo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>C&#243;mo obtener la direcci&#243;n IP local desde una aplicaci&#243;n de Silverlight</title>
		<link>http://blogs.ligasilverlight.com/2011/01/cmo-obtener-la-direccin-ip-local-desde-una-aplicacin-de-silverlight/</link>
		<comments>http://blogs.ligasilverlight.com/2011/01/cmo-obtener-la-direccin-ip-local-desde-una-aplicacin-de-silverlight/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 19:10:36 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[AutomationFactory]]></category>
		<category><![CDATA[Silverlight 4]]></category>
		<category><![CDATA[WMI]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/01/cmo-obtener-la-direccin-ip-local-desde-una-aplicacin-de-silverlight/</guid>
		<description><![CDATA[Introducción Existen una gran cantidad de escenarios en donde es necesario conocer la dirección IP local de la máquina en donde está corriendo una aplicación, principalmente por cuestiones de auditoría, seguridad, etc.&#160; A partir de Silverlight 4 contamos con la posibilidad de ejecutar las aplicaciones Afuera del Navegador en un modelo de seguridad de Confianza Elevada, es decir, rebasando las restricciones inherentes a esta tecnología Web para que los aplicativos puedan comportarse casi como si se tratasen de una aplicación de escritorio tradicional. En el caso de aplicaciones de Silverlight tradicionales (dentro del navegador) podríamos conocer la dirección IP del usuario en el Servidor.&#160; Pero ¿qué pasa con Aplicaciones Fuera del Navegador, en donde no tenemos la seguridad de que se cuente con acceso a un Servidor y mucho menos conectividad como tal? En este artículo veremos cómo podemos obtener la dirección IP local del equipo desde una aplicación de Silverlight 4 que esté ejecutando en Confianza Elevada, a través del uso de WMI (acrónimo de Windows Management Instrumentation): la infraestructura de administración de datos (de hardware y software) y notificaciones en los Sistemas Operativos Windows. Lee el artículo completo aquí]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2>
<p>Existen una gran cantidad de escenarios en donde es necesario conocer la dirección IP local de la máquina en donde está corriendo una aplicación, principalmente por cuestiones de auditoría, seguridad, etc.&#160; A partir de <a href="http://silverlight.net" target="_blank">Silverlight 4</a> contamos con la posibilidad de ejecutar las aplicaciones Afuera del Navegador en un modelo de seguridad de Confianza Elevada, es decir, rebasando las restricciones inherentes a esta tecnología Web para que los aplicativos puedan comportarse casi como si se tratasen de una aplicación de escritorio tradicional.</p>
<p>En el caso de aplicaciones de Silverlight tradicionales (dentro del navegador) podríamos conocer la dirección IP del usuario en el Servidor.&#160; Pero ¿qué pasa con Aplicaciones Fuera del Navegador, en donde no tenemos la seguridad de que se cuente con acceso a un Servidor y mucho menos conectividad como tal?</p>
<p>En este artículo veremos cómo podemos obtener la dirección IP local del equipo desde una aplicación de Silverlight 4 que esté ejecutando en Confianza Elevada, a través del uso de WMI (acrónimo de Windows Management Instrumentation): la infraestructura de administración de datos (de hardware y software) y notificaciones en los Sistemas Operativos Windows.</p>
<h2><a href="http://rdiazconcha.com/2011/01/cmo-obtener-la-direccin-ip-local-desde-una-aplicacin-de-silverlight/" target="_blank">Lee el artículo completo aquí</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/01/cmo-obtener-la-direccin-ip-local-desde-una-aplicacin-de-silverlight/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hola a todos</title>
		<link>http://blogs.ligasilverlight.com/2011/01/hola-a-todos/</link>
		<comments>http://blogs.ligasilverlight.com/2011/01/hola-a-todos/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 18:20:13 +0000</pubDate>
		<dc:creator>Amin Espinoza</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/?p=1846</guid>
		<description><![CDATA[Creo que la mejor forma de comenzar es por el inicio, gracias por incluirme dentro de esta gran comunidad, por mi trabajo me especializo en la parte de Sistemas de Información Geográfica (GIS), desde hace un año y medio es que estoy completamente dentro de Silverlight, por experiencia veo que ya no solo basta tener una aplicación funcional, ahora debe ser atractiva para el usuario, y por lo mismo he orientado mucho mi trabajo a esa parte, espero sus comentarios, por ahora iré subiendo lo que tengo a la mano, a alguien puede serle útil.]]></description>
			<content:encoded><![CDATA[<p>Creo que la mejor forma de comenzar es por el inicio, gracias por incluirme dentro de esta gran comunidad, por mi trabajo me especializo en la parte de Sistemas de Información Geográfica (GIS), desde hace un año y medio es que estoy completamente dentro de Silverlight, por experiencia veo que ya no solo basta tener una aplicación funcional, ahora debe ser atractiva para el usuario, y por lo mismo he orientado mucho mi trabajo a esa parte, espero sus comentarios, por ahora iré subiendo lo que tengo a la mano, a alguien puede serle útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/01/hola-a-todos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>La Liga Silverlight en 2011</title>
		<link>http://blogs.ligasilverlight.com/2011/01/la-liga-silverlight-en-2011/</link>
		<comments>http://blogs.ligasilverlight.com/2011/01/la-liga-silverlight-en-2011/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 16:59:26 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[La Liga Silverlight]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/01/la-liga-silverlight-en-2011/</guid>
		<description><![CDATA[En La Liga Silverlight tenemos una gran cantidad de ideas con respecto a la comunidad durante este 2011.  No obstante, nos gustaría conocer de su propia autoría: ¿qué les gustaría ver en esta comunidad? ¿cuáles son los temas que más les interesan? ¿qué tipo de recursos de aprendizaje y apoyo quisieran encontrar? ¿qué ha sido lo más difícil para ustedes en el aprendizaje de Silverlight y tecnologías relacionadas y que quisieran tener más información en Español al respecto? Todos los comentarios son bienvenidos!]]></description>
			<content:encoded><![CDATA[<p><a title="La Liga Silverlight: La Primera Comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas" href="http://Blogs.LigaSilverlight.com" target="_blank"><img style="background-image: none; margin: 0px 20px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="LigaSilverlight" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/01/LigaSilverlight.png" border="0" alt="LigaSilverlight" width="194" height="218" align="left" /></a></p>
<p>En <a href="http://blogs.LigaSilverlight.com" target="_blank">La Liga Silverlight</a> tenemos una gran cantidad de ideas con respecto a la comunidad durante este 2011.  No obstante, nos gustaría conocer de su propia autoría:</p>
<ul>
<li>¿qué les gustaría ver en esta comunidad?</li>
<li>¿cuáles son los temas que más les interesan?</li>
<li>¿qué tipo de recursos de aprendizaje y apoyo quisieran encontrar?</li>
<li>¿qué ha sido lo más difícil para ustedes en el aprendizaje de Silverlight y tecnologías relacionadas y que quisieran tener más información en Español al respecto?</li>
</ul>
<p>Todos los comentarios son bienvenidos!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/01/la-liga-silverlight-en-2011/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7: Tabla Comparativa</title>
		<link>http://blogs.ligasilverlight.com/2011/01/windows-phone-7-tabla-comparativa/</link>
		<comments>http://blogs.ligasilverlight.com/2011/01/windows-phone-7-tabla-comparativa/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 18:28:33 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[WP7]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2011/01/windows-phone-7-tabla-comparativa/</guid>
		<description><![CDATA[ElektricForest hizo la siguiente tabla comparativa de todos los dispositivos WP7 disponibles, es un excelente recurso para ayudarte a decidir si estás pensando en adquirir uno de estos extraordinarios teléfonos: Salu2!]]></description>
			<content:encoded><![CDATA[<p><a href="http://elektricforest.com/2010/11/19/windows-phone-7-vs-windows-phone-7/" target="_blank">ElektricForest</a> hizo la siguiente tabla comparativa de todos los dispositivos WP7 disponibles, es un excelente recurso para ayudarte a decidir si estás pensando en adquirir uno de estos extraordinarios teléfonos:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2011/01/windows-phone-7-comparison-spec2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="windows-phone-7-comparison-spec2" border="0" alt="windows-phone-7-comparison-spec2" src="http://blogs.ligasilverlight.com/wp-content/uploads/2011/01/windows-phone-7-comparison-spec2_thumb.jpg" width="500" height="321" /></a></p>
<p>Salu2!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2011/01/windows-phone-7-tabla-comparativa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight 5 se ha dado a conocer</title>
		<link>http://blogs.ligasilverlight.com/2010/12/silverlight-5-se-ha-dado-a-conocer/</link>
		<comments>http://blogs.ligasilverlight.com/2010/12/silverlight-5-se-ha-dado-a-conocer/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 05:37:46 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[FireStarter]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[silverlight 5]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2010/12/silverlight-5-se-ha-dado-a-conocer/</guid>
		<description><![CDATA[Hoy 02 de diciembre 2010 se marca un hito más en la historia de Silverlight ya que durante el evento Silverlight Firestarter llevado a cabo en el campus de Microsoft y también en línea se ha dado a conocer al mundo entero las características que incluirá Silverlight 5.&#160; Con más de 40 nuevas características, Silverlight se establece como la plataforma de desarrollo preferida para la construcción de aplicaciones de negocio de próxima generación. Entre las características, las más destacables (a mi parecer) son: Texto multicolumna Claridad de texto mejorada Soporte para OpenType Soporte para impresión vectorial Postscript Soporte para depuración y breakpoints en Bindings DataTemplates implícitos Binding en Setters de Estilos API 3D acelerada por GPU Invocación de código no-administrado a través de P/Invoke Soporte de múltiples ventanas en Aplicaciones Fuera del Navegador Características de Confianza Elevada dentro del navegador (a través de una política de grupo) Soporte para Sistemas Operativos de 64 bits Espero que con esto sea suficiente para terminar con todas las suposiciones que se han sucitado en las últimas semanas.&#160; Sin duda alguna esto apenas es el comienzo de un futuro (más) brillante para la plataforma.&#160; Los bits mostrados hoy no están disponibles aún para descarga, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/silverlight/future/" target="_blank"><img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sl5bloglogo" border="0" alt="sl5bloglogo" align="left" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/12/sl5bloglogo.png" width="200" height="197" /></a></p>
<p align="left">Hoy 02 de diciembre 2010 se marca un hito más en la historia de <a href="http://silverlight.net" target="_blank">Silverlight</a> ya que durante el evento <a href="http://www.silverlight.net/news/events/firestarter/" target="_blank">Silverlight Firestarter</a> llevado a cabo en el campus de Microsoft y también en línea se ha dado a conocer al mundo entero las características que incluirá <strong>Silverlight 5</strong>.&#160; Con más de <a href="http://www.microsoft.com/silverlight/future/" target="_blank">40 nuevas características</a>, Silverlight se establece como la plataforma de desarrollo preferida para la construcción de aplicaciones de negocio de próxima generación.</p>
<p>Entre las características, las más destacables (a mi parecer) son:</p>
<ul>
<li>Texto multicolumna </li>
<li>Claridad de texto mejorada </li>
<li>Soporte para OpenType </li>
<li>Soporte para impresión vectorial Postscript </li>
<li>Soporte para depuración y breakpoints en Bindings </li>
<li>DataTemplates implícitos </li>
<li>Binding en Setters de Estilos </li>
<li>API 3D acelerada por GPU </li>
<li>Invocación de código no-administrado a través de P/Invoke </li>
<li>Soporte de múltiples ventanas en Aplicaciones Fuera del Navegador </li>
<li>Características de Confianza Elevada dentro del navegador (a través de una política de grupo) </li>
<li>Soporte para Sistemas Operativos de 64 bits </li>
</ul>
<p>Espero que con esto sea suficiente para terminar con todas las suposiciones que se han sucitado en las últimas semanas.&#160; Sin duda alguna esto apenas es el comienzo de un futuro (<strong>más</strong>) brillante para la plataforma.&#160; Los bits mostrados hoy no están disponibles aún para descarga, pero estén pendientes de más noticias al respecto en los próximos meses!</p>
<p>Les invito a que revivan el keynote <a href="http://www.silverlight.net/news/events/firestarter/" target="_blank">aquí</a> y revisen toda la información completa de características <a href="http://www.microsoft.com/silverlight/future/" target="_blank">aquí</a>.</p>
<p>Salu2!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2010/12/silverlight-5-se-ha-dado-a-conocer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mapa de la Rep&#250;blica Mexicana en XAML (nuevamente)</title>
		<link>http://blogs.ligasilverlight.com/2010/11/mapa-de-la-repblica-mexicana-en-xaml/</link>
		<comments>http://blogs.ligasilverlight.com/2010/11/mapa-de-la-repblica-mexicana-en-xaml/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 17:24:43 +0000</pubDate>
		<dc:creator>Rodrigo Díaz Concha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[mexico]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2010/11/mapa-de-la-repblica-mexicana-en-xaml/</guid>
		<description><![CDATA[Hace más de 2 años publiqué un Mapa de México en XAML, para que lo pudieran utilizar en sus aplicaciones de Silverlight (versión 2 beta en aquel entonces si no mal recuerdo…).&#160; No obstante el hospedaje en donde estaba el archivo sufrió diversas modificaciones y ajustes a lo largo de todo este tiempo y el vínculo quedó roto. Aquí se los vuelvo a poner para que lo utilicen en sus aplicativos, espero que les sirva!&#160; Por favor comenten aquí si les sirve y para qué lo están utilizando! El vínculo de descarga es: http://ligasilverlight.com/codigo/Mexico.rar Salu2!]]></description>
			<content:encoded><![CDATA[<p><a href="http://rdiazconcha.com/2008/11/mapa-de-m-233-xico-en-xaml/" target="_blank">Hace más de 2 años publiqué</a> un Mapa de <a href="http://es.wikipedia.org/wiki/M%C3%A9xico" target="_blank">México</a> en XAML, para que lo pudieran utilizar en sus aplicaciones de <a href="http://silverlight.net" target="_blank">Silverlight</a> (versión 2 beta en aquel entonces si no mal recuerdo…).&#160; No obstante el hospedaje en donde estaba el archivo sufrió diversas modificaciones y ajustes a lo largo de todo este tiempo y el vínculo quedó roto.</p>
<p><a href="http://ligasilverlight.com/codigo/Mexico.rar" target="_blank"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/11/image2.png" width="501" height="269" /></a></p>
<p><a href="http://ligasilverlight.com/codigo/Mexico.rar" target="_blank">Aquí se los vuelvo a poner</a> para que lo utilicen en sus aplicativos, espero que les sirva!&#160; Por favor comenten aquí si les sirve y para qué lo están utilizando!</p>
<p>El vínculo de descarga es:</p>
<p><a title="http://ligasilverlight.com/codigo/Mexico.xaml" href="http://ligasilverlight.com/codigo/Mexico.rar" target="_blank">http://ligasilverlight.com/codigo/Mexico.rar</a></p>
<p>Salu2!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2010/11/mapa-de-la-repblica-mexicana-en-xaml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sitio Oficial de Halo Reach hecho en Silverlight</title>
		<link>http://blogs.ligasilverlight.com/2010/09/sitio-oficial-de-halo-reach-hecho-en-silverlight/</link>
		<comments>http://blogs.ligasilverlight.com/2010/09/sitio-oficial-de-halo-reach-hecho-en-silverlight/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 06:51:46 +0000</pubDate>
		<dc:creator>Héctor Hernández</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/?p=1364</guid>
		<description><![CDATA[A propósito del lanzamiento de Halo: Reach, Microsoft ha lanzado un nuevo sitio oficial para Halo en el que podrás disfrutar de una buena experiencia a través de HTML y Silverlight. El sitio está dividido en tres vistas (cada una de ellas basadas en un rol del juego) Desde el XBox verás la vista de Admiral, en ella podrás ver información general sobre el universo de Halo. Todo este acceso será un poco limitado en profundidad y detalle. Desde una PC verás la vista de Ingeniero, dónde podrás visitar todos los detalles de la información. Desde un Dispositivo Móvil verás la vista de Soldado en el Campo, ésta es una aplicación móvil que servirá como apoyo para recibir información relevante sobre el universo de Halo en tu móvil. Ésta aplicación vendrá también pre-instalada en Windows Phone 7. Características relevantes del sitio Navegador de videos con soporte y control a través de mouse y teclado. El streaming del video está hecho via IIS Smooth Streaming. Una poderosa galería de medios donde podrás filtrar el contenido para ver sólo lo que a tí te interesa, además la navegación ha sido planeada para mostrar grandes cantidades de medios en un espacio cómodo de consultar. Favoritos, si te interesa algún [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>A propósito del lanzamiento de Halo: Reach, Microsoft ha lanzado un nuevo sitio oficial para Halo en el que podrás disfrutar de una buena experiencia a través de HTML y Silverlight.</p>
<p>El sitio está dividido en tres vistas (cada una de ellas basadas en un rol del juego)</p>
<p>Desde el XBox verás la vista de Admiral, en ella podrás ver información general sobre el universo de Halo. Todo este acceso será un poco limitado en profundidad y detalle.</p>
<p>Desde una PC verás la vista de Ingeniero, dónde podrás visitar todos los detalles de la información.</p>
<p>Desde un Dispositivo Móvil verás la vista de Soldado en el Campo, ésta es una aplicación móvil que servirá como apoyo para recibir información relevante sobre el universo de Halo en tu móvil. Ésta aplicación vendrá también pre-instalada en Windows Phone 7.</p>
<h2>Características relevantes del sitio</h2>
<p>Navegador de videos con soporte y control a través de mouse y teclado. El streaming del video está hecho via IIS Smooth Streaming.</p>
<p>Una poderosa galería de medios donde podrás filtrar el contenido para ver sólo lo que a tí te interesa, además la navegación ha sido planeada para mostrar grandes cantidades de medios en un espacio cómodo de consultar.</p>
<p>Favoritos, si te interesa algún contenido en particular puedes marcarlo en tus favoritos y después encontrarlo de nuevo fácilmente. ¿Quiéres compartir algún contenido en particular? bien, puedes usar la característica de &#8220;deep links&#8221;.</p>
<p>Este sito sirve perfectamente como ejemplo de como Silverlight puede ampliar los sitios acoplándose perfectamente con HMTL trabajando en equipo. Vale la pena estudiarlo desde un punto de vista técnico.</p>
<p>Via <a href="http://www.alfador.com.mx/noticias/sitio-oficial-de-halo-reach-hecho-en-silverlight/" target="_blank">alFador en punto NET</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2010/09/sitio-oficial-de-halo-reach-hecho-en-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bienvenido Raúl Mayo</title>
		<link>http://blogs.ligasilverlight.com/2010/09/bienvenido-ral-mayo/</link>
		<comments>http://blogs.ligasilverlight.com/2010/09/bienvenido-ral-mayo/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 16:38:37 +0000</pubDate>
		<dc:creator>Jorge Levy</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Bienvenida]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2010/09/bienvenido-ral-mayo/</guid>
		<description><![CDATA[El día de hoy estamos trajeados y de manteles largos para darle la bienvenida a un nuevo colaborador en La Liga Silverlight. Raúl Mayo, es un Microsoft Certified Professional Developer, quien ha estado trabajando en Silverlight y Windows Phone 7, su blog lo pueden encontrar en http://geeks.ms/blogs/rmayo/ en donde podrán leer artículos de Silverlight y Windows Phone 7, entre otros temas. Raul, agredecemos tu interes por aportar y enriquecer los contenidos de La Liga Silverlight. Estamos seguros que estos serán de gran ayuda. Nota: si tu también estas interesado en participar en La Liga Silverlight, no dudes en enviarnos un correo a: arturo.molina@ligasilverlight.com o jorge.levy@ligasilverlight.com]]></description>
			<content:encoded><![CDATA[<p>El día de hoy estamos trajeados y de manteles largos para darle la bienvenida a un nuevo colaborador en La Liga Silverlight.</p>
<p>Raúl Mayo, es un Microsoft Certified Professional Developer, quien ha estado trabajando en Silverlight y Windows Phone 7, su blog lo pueden encontrar en <a title="http://geeks.ms/blogs/rmayo/" href="http://geeks.ms/blogs/rmayo/">http://geeks.ms/blogs/rmayo/</a> en donde podrán leer artículos de Silverlight y Windows Phone 7, entre otros temas.</p>
<p>Raul, agredecemos tu interes por aportar y enriquecer los contenidos de La Liga Silverlight. Estamos seguros que estos serán de gran ayuda.</p>
<h5>Nota: si tu también estas interesado en participar en La Liga Silverlight, no dudes en enviarnos un correo a: <a href="mailto:arturo.molina@ligasilverlight.com">arturo.molina@ligasilverlight.com</a> o <a href="mailto:jorge.levy@ligasilverlight.com">jorge.levy@ligasilverlight.com</a></h5>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2010/09/bienvenido-ral-mayo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Acceso a listas de SharePoint 2010 a trav&#233;s de Silverlight</title>
		<link>http://blogs.ligasilverlight.com/2010/09/acceso-a-listas-de-sharepoint-2010-a-travs-de-silverlight/</link>
		<comments>http://blogs.ligasilverlight.com/2010/09/acceso-a-listas-de-sharepoint-2010-a-travs-de-silverlight/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 12:23:40 +0000</pubDate>
		<dc:creator>raul.mayo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Silverlight 4]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/2010/09/acceso-a-listas-de-sharepoint-2010-a-travs-de-silverlight/</guid>
		<description><![CDATA[Voy a empezar mi andadura en la Liga Silverlight, publicando un artículo que he publicado con anterioridad en mi blog. Pero que personalmente es de gran interés, debido a que podemos sacar lo mejor de dos plataformas punteras de Microsoft como son Silverlight y SharePoint 2010. Para demostrar la productividad de esta unión, vamos a crear un Webpart de basado en Silverlight.Este leerá el contenido de las diferentes listas, que contiene el sitio de SharePoint 2010 que usaremos para este artículo. Comenzaremos accediendo a el sitio de SharePoint 2010 sobre el que vamos a trabajar a lo largo de este artículo. Dentro del mismo vamos a crear una biblioteca de documentos, en la que guardaremos el archivo .XAP. Resultante de implementar la solución desarrollada en Silverlight. La creación de la biblioteca de documentos la realizaremos accediendo a Acciones de Sitio-&#62;Nueva Biblioteca de Documentos, como podemos observar en la siguiente imagen: Al realizar dicha acción, nos surgirá una ventana emergente en la que introduciremos el nombre de la biblioteca de documentos.En este caso la nombraremos como StoreSilverlight el resto de opciones las dejaremos como en la siguiente imagen: Ahora vamos a añadir una nueva WebPart con formato Silverlight. Nos situamos en [...]]]></description>
			<content:encoded><![CDATA[<p>Voy a empezar mi andadura en la <a href="http://ligasilverlight.com/">Liga Silverlight</a>, publicando un artículo que he publicado con anterioridad en mi <a href="http://geeks.ms/blogs/rmayo/">blog</a>. Pero que personalmente es de gran interés, debido a que podemos sacar lo mejor de dos plataformas punteras de Microsoft como son Silverlight y SharePoint 2010.</p>
<p>Para demostrar la productividad de esta unión, vamos a crear un Webpart de basado en Silverlight.Este leerá el contenido de las diferentes listas, que contiene el sitio de SharePoint 2010 que usaremos para este artículo. </p>
<p>Comenzaremos accediendo a el sitio de SharePoint 2010 sobre el que vamos a trabajar a lo largo de este artículo. Dentro del mismo vamos a crear una biblioteca de documentos, en la que guardaremos el archivo .XAP. Resultante de implementar la solución desarrollada en Silverlight.</p>
<p>La creación de la biblioteca de documentos la realizaremos accediendo a <b>Acciones de Sitio-&gt;Nueva Biblioteca de Documentos, </b>como podemos observar en la siguiente imagen:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image31.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb1[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb11.png" width="195" height="357" /></a></p>
<p>Al realizar dicha acción, nos surgirá una ventana emergente en la que introduciremos el nombre de la biblioteca de documentos.En este caso la nombraremos como <b>StoreSilverlight</b> el resto de opciones las dejaremos como en la siguiente imagen:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image12.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb6[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb61.png" width="385" height="244" /></a> </p>
<p>Ahora vamos a añadir una nueva WebPart con formato Silverlight. Nos situamos en <b>Acciones del Siti</b>o y elegimos la acción de <b>Editar Página</b>.</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image15.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb7[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb71.png" width="244" height="206" /></a> </p>
<p>Al elegir está acción, nuestra página pasará a estado de edición. En la sección <b>Herramientas de edición</b> elegimos la pestana <b>Insertar</b>. Seguidamente seleccionamos la opción <b>Elemento Web(Webpart).</b></p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image19.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb9[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb91.png" width="329" height="100" /></a> </p>
<p>Ahora en la sección <b>Categorías</b> seleccionamos <b>Medios y Contenidos</b> y por último elegimos <b>Elemento Web de Silverlight</b> y elegimos <b>Aceptar</b>.</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image23.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb11[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb111.png" width="390" height="131" /></a> </p>
<p>Realizando la anterior acción, nos aparecerá una ventana emergente donde se pedirá la url donde vamos a situar el archivo .XAP. Elegiremos la url de la biblioteca de documentos StoreSilverlight, creada con anterioridad. En la parte final de este artículo, indicaremos al webpart el lugar y nombre exacto del archivo .XAP.</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image26.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb12[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb121.png" width="335" height="236" /></a> </p>
<p>Como podéis observar se a creado el WebPart pero no tiene contenido, así que manos a la obra para crear ese contenido. Creamos un nuevo proyecto en Visual Studio 2010, la plantilla que vamos a utilizar es <b>Visual C#-&gt;SharePoint-&gt;2010-&gt;Empty SharePoint Project</b>. El nombre del proyecto será <b>ImplementarSolSP</b>.</p>
<p>Al crear este proyecto, se pide que apunte hacia el sitio web con el que estamos trabajando:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image30.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb14[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb141.png" width="370" height="295" /></a> </p>
<p>El siguiente paso es incluir un nuevo proyecto Silverlight, para ello nos situamos en la solución(<b>ImplementarSolSP</b>) con el botón derecho y elegimos <b>Añadir nuevo proyecto</b>. Elegimos la siguiente plantilla <b>Visual C#-&gt;Silverlight-&gt;Silverlight Application. </b>El nombre de el proyecto será <b>AplicacionSilverlight</b>. Al crear el proyecto debemos deseleccionar, la opción de crear un alojamiento de prueba para el proyecto creado como podemos observar en la siguiente imagen:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image38.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb18[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb181.png" width="370" height="300" /></a> </p>
<p>El último paso que realizaremos en nuestro proyecto Silverlight es cambiar el fondo de nuestro proyecto, para que este se distinga cuando sea implementado en el WebPart.</p>
<p>Accedemos al archivo <b>MainPage.Xaml</b> y dentro de la etiqueta <b>Grid</b> incluiremos el siguiente fragmento de código:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">Grid.Background</span><span style="color:#0000ff">&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">LinearGradientBrush</span><span style="color:#ff0000"> EndPoint</span><span style="color:#0000ff">=&quot;0.5,1&quot;</span><span style="color:#ff0000"> StartPoint</span><span style="color:#0000ff">=&quot;0.5,0&quot;&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">GradientStop</span><span style="color:#ff0000"> Color</span><span style="color:#0000ff">=&quot;Black&quot;</span><span style="color:#ff0000"> Offset</span><span style="color:#0000ff">=&quot;0&quot; /&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">GradientStop</span><span style="color:#ff0000"> Color</span><span style="color:#0000ff">=&quot;White&quot;</span><span style="color:#ff0000"> Offset</span><span style="color:#0000ff">=&quot;1&quot; /&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">LinearGradientBrush</span><span style="color:#0000ff">&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">Grid.Background</span><span style="color:#0000ff">&gt;</span></li>
<li><span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">Grid</span><span style="color:#0000ff">&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Ahora añadimos a <b>ImplementarSolSP</b> el módulo que consigue incluir el archivo .Xap de Silverlight en SharePoint 2010. Presionamos con el botón derecho sobre la solución <b>ImplementarSolSP</b>, elegimos añadir nuevo elemento y elegimos la plantilla <b>Visual C#-&gt;SharePoint-&gt;2010-&gt;Module. </b>El nombre del módulo será <b>ModuloSilverlight.</b></p>
<p>Seguidamente en el explorador de soluciones de Visual Studio 2010, vamos a situarnos con el botón derecho sobre el archivo <b>Sample.txt</b> y elegiremos la opción borrar.</p>
<p>Ahora vamos a decir a nuestro proyecto SharePoint que implemente la solución a través de el modulo de Silverlight que hemos creado con anterioridad. Para ello, hacemos Click sobre <b>ModuloSilverlight</b> y en la sección propiedades de Visual Studio 2010, seleccionamos el botón desplegable de la propiedad <b>Project Output References</b> como podemos observar en la siguiente imagen:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image34.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb16[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb161.png" width="269" height="428" /></a> </p>
<p>Al presionar dicho botón aparecerá una ventana emergente en la que presionaremos sobre añadir.Al añadir un nuevo miembro debemos de elegir el tipo de implementación como <b>ElementFile </b>y el nombre del proyecto será <b>AplicacionSilverlight </b>como podemos observar en la siguiente imagen:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image42.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb20[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb201.png" width="390" height="240" /></a> </p>
<p>Presionamos <b>Ok </b>para realizar la correspondiente acción.</p>
<p>Ahora nos situamos en el archivo <b>Elements.xml</b>, dejando su contenido del siguiente modo:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">&lt;?</span><span style="color:#a31515">xml</span><span style="color:#0000ff"> </span><span style="color:#ff0000">version</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">1.0</span>&quot;<span style="color:#0000ff"> </span><span style="color:#ff0000">encoding</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">utf-8</span>&quot;<span style="color:#0000ff">?&gt;</span></li>
<li><span style="color:#0000ff">&lt;</span><span style="color:#a31515">Elements</span><span style="color:#0000ff"> </span><span style="color:#ff0000">xmlns</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">http://schemas.microsoft.com/sharepoint/</span>&quot;<span style="color:#0000ff">&gt;</span></li>
<li>  <span style="color:#0000ff">&lt;</span><span style="color:#a31515">Module</span><span style="color:#0000ff"> </span><span style="color:#ff0000">Name</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">ModuloSilverlight</span>&quot;<span style="color:#0000ff"> </span><span style="color:#ff0000">Url</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">StoreSilverlight</span>&quot;<span style="color:#0000ff">&gt;</span></li>
<li>    <span style="color:#0000ff">&lt;</span><span style="color:#a31515">File</span><span style="color:#0000ff"> </span><span style="color:#ff0000">Path</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">ModuloSilverlight&#092;AplicacionSilverlight.xap</span>&quot;<span style="color:#0000ff"> </span><span style="color:#ff0000">Url</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">AplicacionSilverlight.xap</span>&quot;<span style="color:#0000ff"> </span><span style="color:#ff0000">Type</span><span style="color:#0000ff">=</span>&quot;<span style="color:#0000ff">GhostableInLibrary</span>&quot;<span style="color:#0000ff">/&gt;</span></li>
<li>  <span style="color:#0000ff">&lt;/</span><span style="color:#a31515">Module</span><span style="color:#0000ff">&gt;</span></li>
<li><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">Elements</span><span style="color:#0000ff">&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<p>Como podemos observar le decimos al módulo de carga que guarde el archivo .Xap en nuestra biblioteca de documentos StoreSilverlight.</p>
<p>Ahora solo queda construir la solución (<b>F6 en Visual Studio 2010</b>), después implementaremos la solución:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image46.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb22[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb221.png" width="358" height="271" /></a> </p>
<p>Finalmente comprobaremos que la solución a través del archivo <b>AplicacionSilverlight.xap</b> a sido añadida a la biblioteca de documentos StoreSilverlight.</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image50.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb24[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb241.png" width="468" height="172" /></a> </p>
<p>Para que se cargue <b>AplicacionSilverlight.xap</b> en el Webpart deberemos situarnos en el WebPart y elegir la opción <b>abre el panel de herramientas, </b>al realizar dicha acción se desplegará el cuadro de opciones del WebPart como podemos observar a continuación:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image58.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb30[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb301.png" width="438" height="226" /></a> </p>
<p>Al presionar configurar nos pedirá una url donde está situado el archivo que va ser mostrado en la WebPart:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image62.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb32[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb321.png" width="327" height="233" /></a> </p>
<p>De esta forma podremos ver que efectivamente la solución de Silverlight se ha implementado en el WebPart:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image66.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb34[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb341.png" width="566" height="215" /></a>&#160; </p>
<p>&#160;</p>
<p>Vamos a pasar a la segunda parte del artículo que es poder acceder a las listas de nuestro sitio&#160; SharePoint 2010 y trabajar con su contenido a través del WebPart de Silverlight creado con anterioridad.</p>
<p>Abrimos la solución&#160; <b>ImplementarSolSP</b> con Visual Studio 2010 y accedemos al proyecto <b>AplicacionSilverlight</b>. Presionando sobre referencias con el botón derecho, elegimos añadir nueva referencia.En la ventana emergente elegiremos la pestaña examinar, las librerías que queremos usar son <b>Microsoft.SharePoint.Client.Silverlight y Microsoft.SharePoint.Client.Silverlight.Runtime</b>, que están situadas en <b>C:\Archivos de Programa\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin</b> . </p>
<p>Ahora debemos de referenciar dichas librerías en el proyecto. Abrimos <b>AplicacionSilverlight.xaml.cs </b>y las referenciamos añadiendo el siguiente código:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">using</span> Microsoft.SharePoint.Client;</li>
</ol></div>
</p></div>
</p></div>
<p>Abriremos el archivo <b>App.xaml.cs</b> y referenciamos nuevamente las librerías añadiendo el siguiente código:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">using</span> System.Windows.Shapes;</li>
<li><span style="color:#0000ff">using</span> Microsoft.SharePoint.Client;</li>
</ol></div>
</p></div>
</p></div>
<p>Nos situamos en el método <b>Application_Startup i</b>ncluyendo el siguiente código en el mismo:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> Application_Startup(<span style="color:#0000ff">object</span> sender, <span style="color:#2b91af">StartupEventArgs</span> e)</li>
<li>{</li>
<li>    <span style="color:#2b91af">ApplicationContext</span>.Init(e.InitParams, <span style="color:#2b91af">SynchronizationContext</span>.Current);</li>
<li>    <span style="color:#0000ff">this</span>.RootVisual = <span style="color:#0000ff">new</span> <span style="color:#2b91af">MainPage</span>();</li>
<li>}</li>
</ol></div>
</p></div>
</p></div>
<p>De esta forma sincronizaremos SharePoint con el proyecto Silverlight.</p>
<p>Ahora vamos a modificar la interfaz del proyecto Silverlight. Abrimos <b>AplicacionSilverlight.xaml</b> e incluimos el siguiente código:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">&lt;</span><span style="color:#a31515">Grid</span><span style="color:#ff0000"> x</span><span style="color:#0000ff">:</span><span style="color:#ff0000">Name</span><span style="color:#0000ff">=&quot;LayoutRoot&quot;&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">Grid.Background</span><span style="color:#0000ff">&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">LinearGradientBrush</span><span style="color:#ff0000"> EndPoint</span><span style="color:#0000ff">=&quot;0.5,1&quot;</span><span style="color:#ff0000"> StartPoint</span><span style="color:#0000ff">=&quot;0.5,0&quot;&gt;</span></li>
<li>                <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">GradientStop</span><span style="color:#ff0000"> Color</span><span style="color:#0000ff">=&quot;Black&quot;</span><span style="color:#ff0000"> Offset</span><span style="color:#0000ff">=&quot;0&quot; /&gt;</span></li>
<li>                <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">GradientStop</span><span style="color:#ff0000"> Color</span><span style="color:#0000ff">=&quot;White&quot;</span><span style="color:#ff0000"> Offset</span><span style="color:#0000ff">=&quot;1&quot; /&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">LinearGradientBrush</span><span style="color:#0000ff">&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">Grid.Background</span><span style="color:#0000ff">&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">StackPanel</span><span style="color:#ff0000"> Orientation</span><span style="color:#0000ff">=&quot;Horizontal&quot; &gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">ListBox</span><span style="color:#ff0000"> Name</span><span style="color:#0000ff">=&quot;lbLists&quot;</span><span style="color:#ff0000"> Width</span><span style="color:#0000ff">=&quot;300&quot;</span><span style="color:#ff0000"> Height</span><span style="color:#0000ff">=&quot;400&quot;</span><span style="color:#ff0000"> ScrollViewer.VerticalScrollBarVisibility</span><span style="color:#0000ff">=&quot;Auto&quot;</span><span style="color:#ff0000"> Margin</span><span style="color:#0000ff">=&quot;20,20,20,20&quot;</span> <span style="color:#0000ff"> /&gt;</span></li>
<li>            <span style="color:#a31515"></span><span style="color:#0000ff">&lt;</span><span style="color:#a31515">TextBox</span><span style="color:#ff0000"> Name</span><span style="color:#0000ff">=&quot;txtDetails&quot;</span><span style="color:#ff0000"> Width</span><span style="color:#0000ff">=&quot;200&quot;</span><span style="color:#ff0000"> Height</span><span style="color:#0000ff">=&quot;400&quot;</span><span style="color:#ff0000"> TextWrapping</span><span style="color:#0000ff">=&quot;Wrap&quot; /&gt;</span></li>
<li>        <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">StackPanel</span><span style="color:#0000ff">&gt;</span></li>
<li>    <span style="color:#a31515"></span><span style="color:#0000ff">&lt;/</span><span style="color:#a31515">Grid</span><span style="color:#0000ff">&gt;</span></li>
</ol></div>
</p></div>
</p></div>
<p>Como podemos observar hemos introducido dentro de Grid principal un objeto ListBox que cargará las diferentes listas de SharePoint y un objeto TextBox que se encargará de cargar los detalles de cada una de las listas.</p>
<p>Ahora situándonos en <b>AplicacionSilverlight.xaml.cs </b>vamos a incluir dos variables, <b>_sitio</b> se encarga de cargar el sitio y <b>_list</b> se encarga de cargar las diferentes listas del sitio.</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">private</span> Microsoft.SharePoint.Client.<span style="color:#2b91af">Web</span> _sitio;</li>
<li><span style="color:#0000ff">private</span> Microsoft.SharePoint.Client.<span style="color:#2b91af">List</span> _list;</li>
</ol></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>El siguiente paso es la creación del contexto basado en el sitio que utilizamos para este artículo y cargarle las listas de este sitio. Para ello debemos introducir el siguiente código en el constructor:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">public</span> MainPage()</li>
<li>{</li>
<li>    InitializeComponent();</li>
<li>    <span style="color:#2b91af">ClientContext</span> context = <span style="color:#0000ff">new</span> <span style="color:#2b91af">ClientContext</span>(<span style="color:#2b91af">ApplicationContext</span>.Current.Url);</li>
<li>    <span style="color:#008000">// creamos un nuevo contexto sobre el sitio que vamos a trabajar</span></li>
<li>&nbsp;</li>
<li>    _sitio = context.Web;<span style="color:#008000">//cargamos el contexto en la variable</span></li>
<li>    <span style="color:#008000">//cuando carga el contexto cargar&#225; las listas y el sitio</span></li>
<li>    context.Load(_sitio);</li>
<li>    context.Load(_sitio.Lists);</li>
<li>    <span style="color:#008000">//la llamada del contexto ha de hacerse de forma asincrona</span></li>
<li>    context.ExecuteQueryAsync(<span style="color:#0000ff">new</span> <span style="color:#2b91af">ClientRequestSucceededEventHandler</span>(OnRequestSucceeded), <span style="color:#0000ff">new</span> <span style="color:#2b91af">ClientRequestFailedEventHandler</span>(OnRequestFailed));</li>
<li>}</li>
</ol></div>
</p></div>
</p></div>
<p>A continuación vamos a agregar los dos métodos que hemos nombrado en la llamada asincrona utilizada con anterioridad:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> OnRequestSucceeded(<span style="color:#2b91af">Object</span> sender, <span style="color:#2b91af">ClientRequestSucceededEventArgs</span> args)</li>
<li>{ <span style="color:#008000">//si la petici&#243;n se a realizada correctamente se llama al m&#233;todo FillList </span></li>
<li>    Dispatcher.BeginInvoke(FillList);</li>
<li>}</li>
<li>&nbsp;</li>
<li><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> OnRequestFailed(<span style="color:#2b91af">Object</span> sender, <span style="color:#2b91af">ClientRequestFailedEventArgs</span> args)</li>
<li>{</li>
<li>}</li>
<li><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> FillList()</li>
<li>{</li>
<li>    <span style="color:#008000">//borra el listbox con los contenidos que tenia anteriormente</span></li>
<li>    lbLists.Items.Clear();</li>
<li>    lbLists.ItemsSource = _sitio.Lists;</li>
<li>    <span style="color:#008000">//se carga en el listBox las diferentes listas</span></li>
<li>    lbLists.DisplayMemberPath = <span style="color:#a31515">&quot;Title&quot;</span>;</li>
<li>    <span style="color:#008000">//se muestra el campo de la lista que se va mostrar</span></li>
<li>}</li>
</ol></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>Situándonos en el área de diseño de <b>AplicacionSilverlight.xaml</b>, haremos doble clic sobre el <b>ListBox</b>, para generar el evento de cambio de selección de Item. Al realizar dicha acción accederemos directamente a <b>AplicacionSilverlight.xaml</b>.cs e incluiremos el siguiente código:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> lbLists_SelectionChanged(<span style="color:#0000ff">object</span> sender, <span style="color:#2b91af">SelectionChangedEventArgs</span> e)</li>
<li>{</li>
<li>    <span style="color:#0000ff">using</span> (<span style="color:#2b91af">ClientContext</span> context = <span style="color:#0000ff">new</span> <span style="color:#2b91af">ClientContext</span>(<span style="color:#2b91af">ApplicationContext</span>.Current.Url))</li>
<li>    {</li>
<li>        _list = context.Web.Lists.GetByTitle(((Microsoft.SharePoint.Client.<span style="color:#2b91af">List</span>)lbLists.SelectedItem).Title);</li>
<li>        context.Load(_list);</li>
<li>        context.ExecuteQueryAsync(<span style="color:#0000ff">new</span> <span style="color:#2b91af">ClientRequestSucceededEventHandler</span>(OnListDetailsRequestSucceeded), <span style="color:#0000ff">null</span>);</li>
<li>    }</li>
<li>}</li>
<li><span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> OnListDetailsRequestSucceeded(<span style="color:#2b91af">Object</span> sender, <span style="color:#2b91af">ClientRequestSucceededEventArgs</span> args)</li>
<li>{ <span style="color:#008000">//A&#241;adimos la  rutina de devoluci&#243;n de llamada para la consulta asincr&#243;nica:</span></li>
<li>    Dispatcher.BeginInvoke(ShowListDetails);</li>
<li>}</li>
</ol></div>
</p></div>
</p></div>
<p>Por último añado el método que mostrará los detalles de la lista seleccionada en el <b>ListBox</b> en el <b>TextBox</b>:</p>
<div style="padding-bottom: 0px;margin: 0px;padding-left: 0px;padding-right: 0px;float: none;padding-top: 0px" class="wlWriterEditableSmartContent">
<div style="border: #000080 1px solid;color: #000;font-family: 'Courier New', Courier, Monospace;font-size: 10pt">
<div style="background: #fff;overflow: auto">
<ol style="background: #ffffff;margin: 0;padding: 0 0 0 5px">
<li>        <span style="color:#0000ff">private</span> <span style="color:#0000ff">void</span> ShowListDetails()</li>
<li>{</li>
<li>    <span style="color:#0000ff">string</span> infoAboutList =</li>
<li>        <span style="color:#0000ff">string</span>.Format(<span style="color:#a31515">&quot;List Details:&quot;</span> + <span style="color:#2b91af">Environment</span>.NewLine + <span style="color:#a31515">&quot;Title: {0}&quot;</span> + <span style="color:#a31515">&quot;Description: {1}&quot;</span> + <span style="color:#a31515">&quot;Item Count: {2}&quot;</span> + <span style="color:#a31515">&quot;Base Template: {3}&quot;</span> + <span style="color:#a31515">&quot;Base Type: {4}&quot;</span> + <span style="color:#a31515">&quot;Content Types Enabled?: {5}&quot;</span> + <span style="color:#a31515">&quot;Hidden?: {6}&quot;</span>,</li>
<li>        _list.Title + <span style="color:#2b91af">Environment</span>.NewLine,</li>
<li>        _list.Description + <span style="color:#2b91af">Environment</span>.NewLine,</li>
<li>        _list.ItemCount + <span style="color:#2b91af">Environment</span>.NewLine,</li>
<li>        _list.BaseTemplate + <span style="color:#2b91af">Environment</span>.NewLine,</li>
<li>        _list.BaseType + <span style="color:#2b91af">Environment</span>.NewLine,</li>
<li>        _list.ContentTypesEnabled + <span style="color:#2b91af">Environment</span>.NewLine,</li>
<li>        _list.Hidden + <span style="color:#2b91af">Environment</span>.NewLine);</li>
<li>&nbsp;</li>
<li>    txtDetails.Text = infoAboutList;</li>
<li>}</li>
</ol></div>
</p></div>
</p></div>
<p>&#160;</p>
<p>&#160;</p>
<p>Para ver el efecto de todos los cambios que hemos realizado, construimos nuevamente la solución(<b>F6 en Visual Studio 2010</b>) e <b>implementamos la solución</b>. El paso definitivo es refrescar la página en la que hemos introducido la WebPart de Silverlight. El resultado es el de la siguiente imagen:</p>
<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image70.png"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" border="0" alt="image_thumb36[1]" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/09/image_thumb361.png" width="565" height="357" /></a> </p>
<p>En conclusión, uniendo las dos plataformas de Microsoft podemos crear unas experiencias de usuario muy dinámicas, donde tenemos un nivel de productividad muy alto. Ahora solo queda que le deis una vuelta de tuerca a la idea inicial y conseguiréis proyectos realmente profesionales.</p>
</p>
</p>
</p>
</p>
</p>
</p>
</p>
</p>
<p>Espero que hayáis disfrutado de esta primera entrada y deseo que en un futuro sigáis leyendo las distintas publicaciones que realizaré.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.ligasilverlight.com/2010/09/acceso-a-listas-de-sharepoint-2010-a-travs-de-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

