<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>JAMolina.com</title>
	
	<link>http://jamolina.com</link>
	<description>Blog de Arturo Molina sobre .NET, Silverlight y Programación en general</description>
	<lastBuildDate>Tue, 20 Jul 2010 17:56:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Jamolinacom" /><feedburner:info uri="jamolinacom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>StackOverflow en español</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/ooOCpJ-Wan8/</link>
		<comments>http://jamolina.com/index.php/2010/07/stackoverflow-en-espaol/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 16:53:23 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Stackoverflow]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/07/stackoverflow-en-espaol/</guid>
		<description><![CDATA[Muchas, muchas han sido las veces que he encontrado respuestas a mis preguntas sobre casi cualquier tema de programación en StackOverflow. Esta creación de Jeff Atwood y Joel Spolsky es, a mi gusto personal, el mejor foro que hay para desarrollo de software. Hace unos meses, decidieron abrir su plataforma para quien lo quisiera de [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas, muchas han sido las veces que he encontrado respuestas a mis preguntas sobre casi cualquier tema de programación en <a href="http://stackoverflow.com/">StackOverflow</a>. Esta creación de <a href="http://www.codinghorror.com/blog/">Jeff Atwood</a> y <a href="http://www.joelonsoftware.com/">Joel Spolsky</a> es, a mi gusto personal, el mejor foro que hay para desarrollo de software.<span id="more-542"></span></p>
<p style="text-align: center;"><a href="http://jamolina.com/wp-content/uploads/2010/07/image.png" rel="lightbox[542]"><img style="display: inline; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/07/image_thumb.png" border="0" alt="image" width="244" height="71" /></a></p>
<p>Hace unos meses, decidieron abrir su plataforma para quien lo quisiera de manera gratuita. Esto quiere decir, que por medio de un proceso definido en <a href="http://area51.stackexchange.com/">Area51</a>, la gente puede crear propuestas para tener un sitio muy similar, pero de temas diferentes (cocina, construcción, etc.). En conjunto con <a href="http://maromasdigitales.net/">David Mora</a> y <a href="http://rdiazconcha.com">Rodrigo Díaz</a>, decidimos mandar nuestra propuesta para un sito como StackOverlfow, pero en español.</p>
<p>¿Por qué en español? Segun <a href="http://www.wolframalpha.com/input/?i=spanish">Wolpram Alpha</a>, El español es hablado por unos 417 millones de personas (6.2% de la población mundial) y es el 3er idioma más hablado en el mundo (diferentes fuentes difieren en si es la 2da o 3ra lengua más hablada). Sin embargo, muchos recurrimos a sitios en inglés porque ser un idioma universal en el rubro.</p>
<p>La idea de este sitio es formar un espacio para desarrolladores de cualquier lenguaje de programación (C, C++, C#, Java, Ruby, Phyton, Javascript, Visual Basic, LISP, etc…), así como frameworks, librerías y herramientas de los mismos (LINQ, jQuery, ADO.NET, Drupal, etc…).</p>
<p>Si estás interesado, por favor apoya <a href="http://area51.stackexchange.com/proposals/13664/desarrollo-de-software-en-espanol">la propuesta en Area51</a> y corre la voz. ¡Muchas gracias!</p>
<p><strong>UPDATE:</strong> Estoy consciente de la existencia de una página similar llamada <a href="http://yoprogramo.net/">YoProgramo.NET</a>, la cuál me parece buena propuesta, pero me parece que tener el respaldo de un sitio ya establecido, con mayor funcionalidad y gente dedicada a desarrollar más funcionalidad, le daría mejor continuidad al proyecto. Además, no dependería de un pequeño grupo de personas, sino de una comunidad comprometida.</p>
<p><strong>UPDATE 2: </strong>Para apoyar la propuesta, sólo tienen que &#8220;seguirla&#8221; (osea, darle Follow). Los sitios de StackExchange usan OpenID, por lo que si ya tienen cuenta en google, yahoo, blogger, wordpress, etc&#8230; no necesitan registrarse.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F07%2Fstackoverflow-en-espaol%2F&amp;linkname=StackOverflow%20en%20espa%C3%B1ol" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/07/stackoverflow-en-espaol/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/07/stackoverflow-en-espaol/</feedburner:origLink></item>
		<item>
		<title>Intellisense con jQuery 1.4.2 en Visual Studio</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/lTxAGVjxzbU/</link>
		<comments>http://jamolina.com/index.php/2010/04/intellisense-con-jquery-1-4-2-en-visual-studio/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 05:15:17 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/04/intellisense-con-jquery-1-4-2-en-visual-studio/</guid>
		<description><![CDATA[Como ya es sabido, Visual Studio 2010 (y 2008 con ayuda de un parche) soporta Intellisense para  jQuery. Sin embargo, después de más de dos meses de haber salido la versión 1.4.2, aún no hay señales del archivo -vsdoc.js en el sitio de jQuery. Pero no hay por que entrar en pánico, aquí una pequeña [...]]]></description>
			<content:encoded><![CDATA[<p>Como <a href="http://weblogs.asp.net/scottgu/archive/2008/11/21/jquery-intellisense-in-vs-2008.aspx" target="_blank">ya es sabido</a>, Visual Studio 2010 (y 2008 con ayuda de un <a href="http://blogs.msdn.com/webdevtools/archive/2008/11/07/hotfix-to-enable-vsdoc-js-intellisense-doc-files-is-now-available.aspx" target="_blank">parche</a>) soporta Intellisense para  <a href="http://jquery.com" target="_blank">jQuery</a>. Sin embargo, después de más de dos meses de haber salido la versión 1.4.2, aún no hay señales del archivo -vsdoc.js en el <a href="http://docs.jquery.com/Downloading_jQuery" target="_blank">sitio de jQuery</a>.</p>
<p><span id="more-521"></span></p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/04/image1.png" rel="lightbox[521]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/04/image_thumb1.png" border="0" alt="image" width="456" height="237" /></a></p>
<p>Pero no hay por que entrar en pánico, aquí una pequeña receta para crear tu propio archivo <strong><em>jquery-1.4.2-vsdoc.js</em></strong></p>
<ol>
<li><span style="background-color: #ffffff;"><a href="http://docs.jquery.com/Downloading_jQuery" target="_blank">Descargar</a> la versión minificada y/o la comprimida, así como también la documentación para Visual Studio de la versión 1.4.1 (en el caso de Visual Studio 2010, las plantillas de pro<a href="http://jamolina.com/wp-content/uploads/2010/04/image2.png" rel="lightbox[521]">yectos como MVC2 ya traen esa versión de la documentación)<img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/04/image_thumb2.png" border="0" alt="image" width="387" height="240" /></a> </span></li>
<li><span style="background-color: #ffffff;">Agregar los scripts a la solución<a href="http://jamolina.com/wp-content/uploads/2010/04/image3.png" rel="lightbox[521]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/04/image_thumb3.png" border="0" alt="image" width="224" height="176" /></a> </span></li>
<li><span style="background-color: #ffffff;">Renombrar <em><strong>jquery-1.4.1-vsdoc.js</strong></em> a <em><strong>jquery-1.4.2-vsdoc.js</strong></em></span></li>
<li><span style="background-color: #ffffff;">Abrir el archivo renombrado y buscar la variable donde se define la versión de la librería (línea 225)<a href="http://jamolina.com/wp-content/uploads/2010/04/image4.png" rel="lightbox[521]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/04/image_thumb4.png" border="0" alt="image" width="523" height="149" /></a> </span></li>
<li><span style="background-color: #ffffff;">Como se puede ver en el <a href="http://api.jquery.com/category/version/1.4.2/" target="_blank">log de cambios</a>, esta versión agrega dos métodos: delegate() y undelegate(), así que sólo tenemos que agregar la documentación de dichos métodos después de documentación de unbind(), esto en la línea 2937<a href="http://jamolina.com/wp-content/uploads/2010/04/image5.png" rel="lightbox[521]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/04/image_thumb5.png" border="0" alt="image" width="480" height="285" /></a> </span></li>
</ol>
<p>A continuación la documentación completa a agregar:</p>
<pre class="brush: js;">delegate: function( selector, types, data, fn ) {
/// &lt;summary&gt;
///   Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. See also "live".
/// &lt;/summary&gt;
/// &lt;param name="selector" type="String"&gt;
///     An expression to search with.
/// &lt;/param&gt;
/// &lt;param name="types" type="String"&gt;
///     A string containing a JavaScript event type, such as "click" or "keydown".
/// &lt;/param&gt;
/// &lt;param name="data" type="Object"&gt;
///     A map of data that will be passed to the event handler.
/// &lt;/param&gt;
/// &lt;param name="fn" type="Function"&gt;
///     A function to execute at the time the event is triggered.
/// &lt;/param&gt;
    return this.live( types, data, fn, selector );
},
undelegate: function( selector, types, fn ) {
/// &lt;summary&gt;
///   Remove a handler from the event for all elements which match the current selector, now or in the future, based upon a specific set of root elements. See also "die".
/// &lt;/summary&gt;
/// &lt;param name="selector" type="String"&gt;
///     An expression to search with.
/// &lt;/param&gt;
/// &lt;param name="types" type="String"&gt;
///     A string containing a JavaScript event type, such as "click" or "keydown".
/// &lt;/param&gt;
/// &lt;param name="data" type="Object"&gt;
///     A map of data that will be passed to the event handler.
/// &lt;/param&gt;
/// &lt;param name="fn" type="Function"&gt;
///     A function to execute at the time the event is triggered.
/// &lt;/param&gt;
    if ( arguments.length === 0 ) {
            return this.unbind( "live" );

    } else {
        return this.die( types, null, fn, selector );
    }
},</pre>
<p>¡Listo! Ya tienen Intellisense en Visual Studio. No olviden agregar la referencia a la librería:</p>
<pre class="brush: js;">&lt;script src="/Scripts/jquery-1.4.2.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<p><a href="http://jamolina.com/wp-content/uploads/2010/04/image6.png" rel="lightbox[521]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/04/image_thumb6.png" border="0" alt="image" width="640" height="138" /></a></p>
<p>Referencia: <a href="http://stackoverflow.com/questions/2323366/jquery-1-4-2-vsdoc" target="_blank">StackOverflow</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F04%2Fintellisense-con-jquery-1-4-2-en-visual-studio%2F&amp;linkname=Intellisense%20con%20jQuery%201.4.2%20en%20Visual%20Studio" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/04/intellisense-con-jquery-1-4-2-en-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/04/intellisense-con-jquery-1-4-2-en-visual-studio/</feedburner:origLink></item>
		<item>
		<title>Evento de lanzamiento de Visual Studio 2010 – ¡Gracias!</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/mqaTr7y8pqE/</link>
		<comments>http://jamolina.com/index.php/2010/04/evento-de-lanzamiento-de-visual-studio-2010-gracias/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 21:37:02 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://jamolina.com/?p=504</guid>
		<description><![CDATA[El pasado lunes 12 de abril se llevo acabo del evento de lanzamiento de Visual Studio 2010 en el Centro del Software de Guadalajara organizado por La Liga Silverlight y La Comunidad Guadalajara.NET. En dicho evento tuve la oportunidad de dar dos presentaciones: Stay in the zone. En donde se muestran las nuevas herramientas para [...]]]></description>
			<content:encoded><![CDATA[<p>El pasado lunes 12 de abril se llevo acabo del evento de lanzamiento de Visual Studio 2010 en el Centro del Software de Guadalajara organizado por <a href="http://blogs.ligasilverlight.com/" target="_blank">La Liga Silverlight</a> y <a href="http://comunidadgdl.net/" target="_blank">La Comunidad Guadalajara.NET.</a></p>
<p><span id="more-504"></span></p>
<p>En dicho evento tuve la oportunidad de dar dos presentaciones:</p>
<ul>
<li><span style="background-color: #ffffff;">Stay in the zone. En donde se muestran las nuevas herramientas para ayudar al desarrollador a mantenerse enfocado (o recuperar la concentración) en lo que realmente importa. Muchos detalles que por pequeños que sean hacen una gran diferencia. Este ejemplo fue hecho con ASP.NET MVC, lo cuál lo hizo más interesante aún.</span></li>
<li><span style="background-color: #ffffff;">Windows Phone 7 + Azure. Aquí se mostró Silverlight como plataforma de desarrollo para el nuevo sistema operativo de smartphones. Además las capacidades y facilidad de uso de Windows Azure.</span></li>
</ul>
<p>La respuesta de la gente fue buena. Unas 50 personas en total aunque iban y venian <img src='http://jamolina.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Y como siempre me agradó platicar con la audiencia sobre dudas y nuevas tecnologías.</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00253.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00253" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00253_thumb.jpg" border="0" alt="DSC00253" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00254.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00254" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00254_thumb.jpg" border="0" alt="DSC00254" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00258.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00258" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00258_thumb.jpg" border="0" alt="DSC00258" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/IMG00068201004121828.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="IMG00068-20100412-1828" src="http://jamolina.com/wp-content/uploads/2010/04/IMG00068201004121828_thumb.jpg" border="0" alt="IMG00068-20100412-1828" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/IMG00064201004121626.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="IMG00064-20100412-1626" src="http://jamolina.com/wp-content/uploads/2010/04/IMG00064201004121626_thumb.jpg" border="0" alt="IMG00064-20100412-1626" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/IMG00065201004121626.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="IMG00065-20100412-1626" src="http://jamolina.com/wp-content/uploads/2010/04/IMG00065201004121626_thumb.jpg" border="0" alt="IMG00065-20100412-1626" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/IMG00069201004121848.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="IMG00069-20100412-1848" src="http://jamolina.com/wp-content/uploads/2010/04/IMG00069201004121848_thumb.jpg" border="0" alt="IMG00069-20100412-1848" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/IMG00071201004121849.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="IMG00071-20100412-1849" src="http://jamolina.com/wp-content/uploads/2010/04/IMG00071201004121849_thumb.jpg" border="0" alt="IMG00071-20100412-1849" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00256.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00256" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00256_thumb.jpg" border="0" alt="DSC00256" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00257.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00257" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00257_thumb.jpg" border="0" alt="DSC00257" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/IMG00062201004121625.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="IMG00062-20100412-1625" src="http://jamolina.com/wp-content/uploads/2010/04/IMG00062201004121625_thumb.jpg" border="0" alt="IMG00062-20100412-1625" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00262.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00262" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00262_thumb.jpg" border="0" alt="DSC00262" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00263.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00263" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00263_thumb.jpg" border="0" alt="DSC00263" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00264.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00264" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00264_thumb.jpg" border="0" alt="DSC00264" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00265.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00265" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00265_thumb.jpg" border="0" alt="DSC00265" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00266.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00266" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00266_thumb.jpg" border="0" alt="DSC00266" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00267.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00267" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00267_thumb.jpg" border="0" alt="DSC00267" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00268.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00268" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00268_thumb.jpg" border="0" alt="DSC00268" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00269.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" title="DSC00269" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00269_thumb.jpg" border="0" alt="DSC00269" width="180" height="135" /></a> <a href="http://jamolina.com/wp-content/uploads/2010/04/DSC00270.jpg" rel="lightbox[504]"><img style="display: inline; border: 0px;" src="http://jamolina.com/wp-content/uploads/2010/04/DSC00270_thumb.jpg" border="0" alt="" width="180" height="135" /></a></p>
<p>El siguiente evento se llevará a cabo mañana jueves 15 de abril en el CUCEI:</p>
<p><a href="http://www.cucei.udg.mx/">Centro de Ciencias Exactas e Ingenierías, UdG</a><br />
<strong>Fecha: </strong>jueves, 15 de abril de 2010<br />
<strong>Hora:</strong> de 11:30 a.m. a 2:00 p.m.<br />
<strong>Lugar: </strong>Auditorio Antonio Alatorre, CUCEI</p>
<p><strong><a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032447884&amp;Culture=es-MX">Registro para evento CUCEI</a></strong></p>
<p>¡Los esperamos!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F04%2Fevento-de-lanzamiento-de-visual-studio-2010-gracias%2F&amp;linkname=Evento%20de%20lanzamiento%20de%20Visual%20Studio%202010%20%26%238211%3B%20%C2%A1Gracias%21" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/04/evento-de-lanzamiento-de-visual-studio-2010-gracias/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/04/evento-de-lanzamiento-de-visual-studio-2010-gracias/</feedburner:origLink></item>
		<item>
		<title>Probando la Windows Phone 7 hoy</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/gD2d5FeZ1E8/</link>
		<comments>http://jamolina.com/index.php/2010/04/probando-la-windows-phone-7-hoy/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 05:18:47 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[WP7]]></category>
		<category><![CDATA[emulador]]></category>
		<category><![CDATA[wp7]]></category>

		<guid isPermaLink="false">http://jamolina.com/?p=460</guid>
		<description><![CDATA[El día de hoy, Gizmodo puso disponible una guía para hacer que el emulador de Windows Phone 7 que viene incluido en el SDK del cuál ya habiamos hablado previamente corra el sistema operativo completo. Si ya tienen el SDK instalado, solo necesitan bajar la siguiente imagen, ya sea directamente aquí o por torrent aquí. [...]]]></description>
			<content:encoded><![CDATA[<p>El día de hoy, <a href="http://gizmodo.com">Gizmodo</a> puso disponible <a href="http://gizmodo.com/5513871/how-to-try-windows-phone-7-right-now">una guía</a> para hacer que el emulador de Windows Phone 7 que viene incluido en el SDK del cuál ya habiamos <a href="http://jamolina.com/index.php/2010/03/hola-windows-phone-7-series/">hablado previamente</a> corra el sistema operativo completo.</p>
<p><span id="more-460"></span></p>
<p>Si ya tienen el SDK instalado, solo necesitan bajar la siguiente imagen, ya sea directamente <a href="http://forum.xda-developers.com/showpost.php?p=5922577&amp;postcount=295">aquí</a> o por torrent <a href="http://btjunkie.org/torrent/WinPho-7/41960a6955bb69a507fe7a3e855c56ba99022b320e98">aquí</a>. [<strong>NOTA:</strong> Yo bajé el archivo directamente, no me hago responsable del torrent <img src='http://jamolina.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ]</p>
<p>Una vez que tienen la imagen, hay que colocarla en C:\Program Files\Microsoft SDKs\WindowsPhone\v7.0\Emulation\Images. Es muy recomendable respaldar la imagen que ya se encuentra ahí (por ejemplo, agregarle la extensión .old o algo por el estilo) ya que al parecer la imagen completa no permite instalar aplicaciones para debugear. Finalmente solo renombran la imagen descargada a WM70C1.bin</p>
<p>Ahora solo entramos a Visual Studio 2010 y creamos un proyecto nuevo, de cualquier tipo pero que sea para Window Phone, presinamos F5 y ¡Listo!</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/04/image.png" rel="lightbox[460]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/04/image_thumb.png" border="0" alt="image" width="640" height="400" /></a></p>
<p>Lamentablemente, yo no pude logearme a ninguna de mis cuentas para tratar de tener la experiencia completa. Pero por lo menos uno puede darse una idea más completa de lo que será.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F04%2Fprobando-la-windows-phone-7-hoy%2F&amp;linkname=Probando%20la%20Windows%20Phone%207%20hoy" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/04/probando-la-windows-phone-7-hoy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/04/probando-la-windows-phone-7-hoy/</feedburner:origLink></item>
		<item>
		<title>Evento de Lanzamiento Visual Studio 2010 y Windows Azure</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/zw2zU08VwvE/</link>
		<comments>http://jamolina.com/index.php/2010/04/evento-de-lanzamiento-visual-studio-2010-y-windows-azure/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 21:12:01 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/04/evento-de-lanzamiento-visual-studio-2010-y-windows-azure/</guid>
		<description><![CDATA[En La Liga Silverlight y La Comunidad Guadalajara.NET estamos organizando diferentes eventos de lanzamiento de Visual Studio 2010 y Azure, en la ciudad de Guadalajara tendremos dos eventos con la siguiente agenda: Stay in the zone: Mejoras del producto para que el desarrollador no tenga que salir fuera de VS para conseguir lo que necesita [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.ligasilverlight.com/wp-content/uploads/2010/04/img001.jpg" rel="lightbox[456]"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="img001" border="0" alt="img001" src="http://blogs.ligasilverlight.com/wp-content/uploads/2010/04/img001_thumb.jpg" width="644" height="245" /></a></p>
<p><span id="more-456"></span></p>
<p>En <a href="http://blogs.ligasilverlight.com/">La Liga Silverlight</a> y <a href="http://comunidadgdl.net/">La Comunidad Guadalajara.NET</a> estamos organizando diferentes eventos de lanzamiento de Visual Studio 2010 y Azure, en la ciudad de Guadalajara tendremos dos eventos con la siguiente agenda:</p>
<ul>
<li><strong>Stay in the zone</strong>: Mejoras del producto para que el desarrollador no tenga que salir fuera de VS para conseguir lo que necesita para trabajar. Esto incluye mejoras de la interfaz, Extension Manager y Code Snippets.       </li>
<li><strong>Desarrollo para Windows7</strong>: VS2010 permite crear aplicaciones para aprovechar todas las mejoras que Windows7 tiene de manera rápida. Esto incluye soporte multitouch, ribbon, animaciones.       </li>
<li><strong>Desarrollo para Sharepoint</strong>: Las nuevas herramientas de Visual Studio para ayudar a desarrollar sobre esta plataforma tan popular       </li>
<li><strong>Phone+Azure</strong>: Herramientas para crear aplicaciones de Windows Phone Series 7 con Silverlight y utilizar servicios en Windows Azure para que tu aplicación se conecte con otros usuarios.       </li>
<li><strong>Team Collaboration</strong>: Mejoras para la colaboración del equipo, esto incluye, Team Foundation Client como parte de VS profesional además de Team Explorer en la web, diagramas de arquitectura para entender el código que otros desarrolladores escribieron, utilizar información recolectada automáticamente por los testers para corregir defectos en el código y nuevas gráficas creadas automáticamente para visualizar el progreso del equipo. </li>
</ul>
<table border="0" cellspacing="0" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="50%">
<p>Registro evento 1, <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032447471&amp;Culture=es-MX" target="_blank">Centro del Software</a>             <br />Fecha: lunes, 12 de abril de 2010             <br />Hora: de 4:00 p.m. a 8:00 p.m.             <br />Lugar: Sala 2, Centro del Software.             <br />Plaza del Ángel</p>
</td>
<td valign="top" width="50%">
<p>Registro Evento 2, <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032447471&amp;Culture=es-MX" target="_blank">Centro de Ciencias Exactas e Ingenierías, UdG</a>             <br />Fecha: jueves, 15 de abril de 2010             <br />Hora: de 11:30 a.m. a 2:00 p.m.             <br />Lugar: Auditorio Antonio Alatorre, CUCEI</p>
</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Para el evento en el Centro de Software un servidor estará dando las pláticas de Stay in The Zone y Phone + Azure. Estaremos dando un par de obsequios (no, lo siento, no habrá licencias gratis)</p>
<p>Para más información y otros eventos en México entra a: <a href="http://www.tuvidaencodigo.com">http://www.tuvidaencodigo.com</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F04%2Fevento-de-lanzamiento-visual-studio-2010-y-windows-azure%2F&amp;linkname=Evento%20de%20Lanzamiento%20Visual%20Studio%202010%20y%20Windows%20Azure" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/04/evento-de-lanzamiento-visual-studio-2010-y-windows-azure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/04/evento-de-lanzamiento-visual-studio-2010-y-windows-azure/</feedburner:origLink></item>
		<item>
		<title>Silverlight 4 Release Candidate</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/eX8DSrbyu78/</link>
		<comments>http://jamolina.com/index.php/2010/03/silverlight-4-release-candidate/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 16:03:16 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Blend 4]]></category>
		<category><![CDATA[Silverlight 4 RC]]></category>
		<category><![CDATA[wp7]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/03/silverlight-4-release-candidate/</guid>
		<description><![CDATA[El día de ayer, en el Mix10, Scott Guthrie anunció Silverlight 4 RC. Dicha versión esta disponible para descargar desde el momento del anuncio. Aquí un pequeño resumen de lo que necesitan: Visual Studio 2010 RC Silverlight 4 Tools para VS2010. Esto incluye el runtime, SDK, herramientas para VS y WCF RIA Services Silverlight Toolkit [...]]]></description>
			<content:encoded><![CDATA[<p>El día de ayer, en el <a href="http://live.visitmix.com/" target="_blank">Mix10</a>, <a href="http://weblogs.asp.net/scottgu/" target="_blank">Scott Guthrie</a> anunció Silverlight 4 RC. Dicha versión esta disponible para descargar desde el momento del anuncio. Aquí un pequeño resumen de lo que necesitan:<span id="more-455"></span></p>
<ol>
<li><span style="background-color: #ffffff;"><a href="http://go.microsoft.com/fwlink/?LinkID=151797" target="_blank">Visual Studio 2010 RC</a></span></li>
<li><span style="background-color: #ffffff;"><a href="http://go.microsoft.com/fwlink/?LinkID=141284" target="_blank">Silverlight 4 Tools para VS2010</a>. Esto incluye el runtime, SDK, herramientas para VS y WCF RIA Services</span></li>
<li><span style="background-color: #ffffff;"><a href="http://silverlight.codeplex.com/" target="_blank">Silverlight Toolkit</a> release de Marzo 2010 (Opcional, disponible próximamente)</span></li>
<li><span style="background-color: #ffffff;"><a href="http://go.microsoft.com/fwlink/?LinkId=185121" target="_blank">WCF RIA Services toolkit</a> (Opcional, son controles extras a los incluídos en la instalación de SL4 Tools)</span></li>
<li><span style="background-color: #ffffff;"><a href="http://go.microsoft.com/fwlink/?LinkId=169446" target="_blank">Expression Blend 4</a> (Opcional)</span></li>
<li><span style="background-color: #ffffff;"><a href="http://silverlight.net/getstarted/devices/windows-phone" target="_blank">Herramientas para el desarrollo de Windows Phone 7</a> (WP7)</span></li>
<li><span style="background-color: #ffffff;"><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=47f5c718-9dec-4557-9687-619c0fdd3d4f&amp;displaylang=en" target="_blank">Add-in para desarrollo de Windows Phone en Blend</a> y <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=86370108-4c14-42ee-8855-226e5dd9b85b" target="_blank">SDK Preview para Windows Phone en Blend</a></span> (WP7)</li>
</ol>
<p>Próximamente estaremos publicando artículos sobre las novedades de esta versión los cambios. Si no pueden esperar, les recomiendo ver los posts de <a href="http://timheuer.com/blog/archive/2010/03/15/whats-new-in-silverlight-4-rc-mix10.aspx" target="_blank">Tim Heuer</a> y <a href="http://kodierer.blogspot.com/2010/03/silverlight-4-release-candidate.html" target="_blank">René Schulte</a> sobre Silverlight 4 y el de <a href="http://electricbeach.org/?p=438" target="_blank">Christian Schormann</a> sobre Blend 4.</p>
<p>Por lo pronto ya contamos con un pequeño <a href="http://jamolina.com/index.php/2010/03/hola-windows-phone-7-series/" target="_blank">Hola Mundo para Windows Phone 7</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F03%2Fsilverlight-4-release-candidate%2F&amp;linkname=Silverlight%204%20Release%20Candidate" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/03/silverlight-4-release-candidate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/03/silverlight-4-release-candidate/</feedburner:origLink></item>
		<item>
		<title>Hola Windows Phone 7 Series</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/9ab8sayVanw/</link>
		<comments>http://jamolina.com/index.php/2010/03/hola-windows-phone-7-series/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 20:28:54 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[wp7]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/03/hola-windows-phone-7-series/</guid>
		<description><![CDATA[El día de hoy, en el Mix10, se anunció la plataforma de desarrollo para el Windows Phone 7 series (de aquí en adelante WP7). Si bien desde hace varios días corría la noticia, el anuncio oficial genera mucha expectativa y entusiasmo en la comunidad de programadores de Silverlight y XNA. En esta ocasión, les voy [...]]]></description>
			<content:encoded><![CDATA[<p>El día de hoy, en el <a href="http://www.visitmix.com/" target="_blank">Mix10</a>, se anunció la plataforma de desarrollo para el Windows Phone 7 series (de aquí en adelante WP7). Si bien desde hace varios días corría la noticia, el anuncio oficial genera mucha expectativa y entusiasmo en la comunidad de programadores de Silverlight y XNA.</p>
<p><span id="more-453"></span></p>
<p>En esta ocasión, les voy a presentar el típico “Hola Mundo” versión WP7. Necesitarán:</p>
<ul>
<li><font style="background-color: #ffffff"><a href="http://www.microsoft.com/visualstudio/en-us/download" target="_blank">Visual Studio 2010 RC</a></font> </li>
<li><font style="background-color: #ffffff"><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2338b5d1-79d8-46af-b828-380b0f854203&amp;displaylang=en" target="_blank">Windows Phone Developer Tools CTP</a></font> </li>
</ul>
<p>Ó en su defecto, la versión gratuita <a href="http://www.microsoft.com/express/phone/" target="_blank">Visual Studio 2010 Express for Windows Phone</a>.</p>
<p>Una vez instaladas las herramientas requeridas, abrimos Visual Studio 2010 (VS2010) y creamos un nuevo proyecto. Podemos ver que tenemos 2 nuevas secciones en nuestra ventana:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image6.png" rel="lightbox[453]"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="New Project template" border="0" alt="New Project template" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb6.png" width="640" height="436" /></a> </p>
<p>Seleccionamos Windows Phone Application bajo la sección Silverlight for Windows Phone y nombramos el proyecto.</p>
<p>Obtenemos el siguiente template por default:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image7.png" rel="lightbox[453]"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb7.png" width="640" height="383" /></a> </p>
<p>Vamos a hacer unas modificaciones a nuestro XAML, donde cambiaremos los título que aparecen de forma predeterminada y agregaremos al ContentGrid un TextBox y un Button:</p>
<pre class="brush: xml;">&lt;Grid x:Name=&quot;LayoutRoot&quot;
      Background=&quot;{StaticResource PhoneBackgroundBrush}&quot;&gt;
    &lt;Grid.RowDefinitions&gt;
        &lt;RowDefinition Height=&quot;Auto&quot; /&gt;
        &lt;RowDefinition Height=&quot;*&quot; /&gt;
    &lt;/Grid.RowDefinitions&gt;

    &lt;!--TitleGrid is the name of the application and page title--&gt;
    &lt;Grid x:Name=&quot;TitleGrid&quot;
          Grid.Row=&quot;0&quot;&gt;
        &lt;TextBlock Text=&quot;HOLA MUNDO&quot;
                   x:Name=&quot;textBlockPageTitle&quot;
                   Style=&quot;{StaticResource PhoneTextPageTitle1Style}&quot; /&gt;
        &lt;TextBlock Text=&quot;Hola Mundo&quot;
                   x:Name=&quot;textBlockListTitle&quot;
                   Style=&quot;{StaticResource PhoneTextPageTitle2Style}&quot; /&gt;
    &lt;/Grid&gt;

    &lt;!--ContentGrid is empty. Place new content here--&gt;
    &lt;Grid x:Name=&quot;ContentGrid&quot;
          Grid.Row=&quot;1&quot;&gt;
        &lt;TextBox Height=&quot;72&quot;
                 HorizontalAlignment=&quot;Left&quot;
                 Margin=&quot;6,6,0,0&quot;
                 Name=&quot;txtNombre&quot;
                 Text=&quot;&quot;
                 VerticalAlignment=&quot;Top&quot;
                 Width=&quot;468&quot; /&gt;
        &lt;Button Content=&quot;Saluda&quot;
                Height=&quot;70&quot;
                HorizontalAlignment=&quot;Left&quot;
                Margin=&quot;146,84,0,0&quot;
                Name=&quot;button1&quot;
                VerticalAlignment=&quot;Top&quot;
                Width=&quot;160&quot;
                Click=&quot;button1_Click&quot; /&gt;
    &lt;/Grid&gt;
&lt;/Grid&gt;</pre>
<p>&#160;</p>
<p>Además en el evento del botón tendremos este sencillo código:</p>
<pre class="brush: csharp;">private void button1_Click(object sender, RoutedEventArgs e)
{
    this.textBlockListTitle.Text = &quot;Hola &quot; + txtNombre.Text;
}</pre>
<p>&#160;</p>
<p>Ahora solo tenemos que correr la aplicación para ver el resultado en el emulador:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image8.png" rel="lightbox[453]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Demo corriendo" border="0" alt="Demo corriendo" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb8.png" width="640" height="381" /></a> </p>
<p>Es importante hacer notar que el emulador tiene muchas funciones, como cambiar la orientación, capturar el teclado y simular multitouch (con monitores que lo soporten claro está).</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image9.png" rel="lightbox[453]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Demo horizontal" border="0" alt="Demo horizontal" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb9.png" width="631" height="323" /></a> </p>
<p>También hay que considerar que esto es un CTP (Community Technical Preview). En mi caso el emulador es muy lento de cargar y me salian errores de repente. Sin embargo, vale la pena empezar a conocer las herramientas de desarrollo para el WP7.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F03%2Fhola-windows-phone-7-series%2F&amp;linkname=Hola%20Windows%20Phone%207%20Series" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/03/hola-windows-phone-7-series/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/03/hola-windows-phone-7-series/</feedburner:origLink></item>
		<item>
		<title>Photosynth en nuestra app de Silverlight</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/iR3el8gaIEo/</link>
		<comments>http://jamolina.com/index.php/2010/03/photosynth-en-nuestra-app-de-silverlight/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 19:02:33 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[HtmlHost]]></category>
		<category><![CDATA[Photosynth]]></category>

		<guid isPermaLink="false">http://jamolina.com/?p=438</guid>
		<description><![CDATA[Photosynth es una herramienta muy interesante que nos ayuda a crear panoramas semi tridimensionales de una manera muy sencilla (solo seleccionas un conjunto de fotos de un mismo lugar y las subes): El otro día mi amigo Jorge Levy estaba desarrollando una aplicación de Silverlight para una empresa de Tamales. Dicha aplicación cuenta con una [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://photosynth.net/default.aspx" target="_blank">Photosynth</a> es una herramienta muy interesante que nos ayuda a crear panoramas semi tridimensionales de una manera muy sencilla (solo seleccionas un conjunto de fotos de un mismo lugar y las subes):</p>
<p><span id="more-438"></span></p>
<p>El otro día mi amigo <a href="http://jorgelevy.com" target="_blank">Jorge Levy</a> estaba desarrollando una aplicación de Silverlight para una empresa de Tamales. Dicha aplicación cuenta con una página de <a href="http://tamatlan.com/#/Contacto" target="_blank">contacto</a>, donde muestra un control de Bing Maps y una opción para ver la fachada del local. Lo malo de esto es que para ver la fachada, el link te lleva a la página de Photosynth donde puedes ver el synth del local.</p>
<p>Me pareció una buena idea, pero no me gustó el hecho de que no pudieras ver el synth dentro de la aplicación. Me di a la tarea de investigar una forma de hacer esto. Primero pensé, en Silverlight 4 beta es posible poner contenido HTML, pero esto tiene dos problemas actualmente. Primero, ¡Es BETA! por lo que para ver la página estarías obligando al usuario a buscar el runtime de SL4Beta (pues en la página te dan la liga para instalar la última versión estable). Segundo, esta funcionalidad solo funciona fuera del navegador, lo cuál tampoco queremos, pues no queremos forzar al usuario a instalar una appliación nada más para esto.</p>
<p>Pues bien, después de buscar y buscar, encontré este <a href="http://johanneskebeck.spaces.live.com/Blog/cns!42E1F70205EC8A96!10779.entry" target="_blank">post</a> donde aprendí sobre la existencia de un control gratuito llamado <a href="http://www.divelements.co.uk/silverlight/tools.aspx" target="_blank">HtmlHost</a>. Todo lo que hay que hacer es descargar el zip y descomprimirlo en su lugar predilecto para librerías.</p>
<p>Para una pequeña demostración, vamos a crear un proyecto nuevo de Silverlight, y vamos a agregar como referencia el emsamblado que acabamos de descargar: Divelements.SilverlightTools.dll</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image.png" rel="lightbox[438]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb.png" border="0" alt="image" width="279" height="480" /></a></p>
<p>Después abrimos MainPage.xaml en Blend para hacer una layout rápido:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image1.png" rel="lightbox[438]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb1.png" border="0" alt="image" width="633" height="480" /></a></p>
<p>Aquí tenemos una versión resumida del XAML:</p>
<pre class="brush: xml; collapse: false; highlight: [6,17];">&lt;UserControl x:Class="PhotosynthDemo.MainPage"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     xmlns:divel="clr-namespace:Divelements.SilverlightTools;assembly=Divelements.SilverlightTools"
     mc:Ignorable="d"
     d:DesignWidth="640"
     d:DesignHeight="480"&gt;

    &lt;Grid x:Name="LayoutRoot"
          Background="#FF293949"&gt;

        &lt;Border BorderBrush="#FF9A0707"
                BorderThickness="3"
                Margin="82,88,90,120"&gt;
            &lt;divel:HtmlHost Name="htmlHost" /&gt;
        &lt;/Border&gt;

    &lt;/Grid&gt;
&lt;/UserControl&gt;</pre>
<p>En la línea 6 estamos agregando el namespace del control HtmlHost y en la línea 17 es donde colocamos y nombramos nuestro control.</p>
<p>Ahora necesitamos asignar un valor a la propiedad SourceHtml del HtmlHost. Vamos a usar el mismo código que nos da Photosynth como si lo fueramos a poner en una página Html común y corriente:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image2.png" rel="lightbox[438]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb2.png" border="0" alt="image" width="640" height="307" /></a></p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image3.png" rel="lightbox[438]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb3.png" border="0" alt="image" width="443" height="196" /></a></p>
<p>Y en el code behind vamos a asignar esa cadena a la propiedad antes mencionada:</p>
<pre class="brush: csharp; collapse: false;">namespace PhotosynthDemo
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(MainPage_Loaded);
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            htmlHost.SourceHtml = "&lt;iframe frameborder='0' src='http://photosynth.net/embed.aspx?cid=e9f3bd27-c3f5-4e2e-8022-3a746a4b3119&amp;delayLoad=false&amp;slideShowPlaying=false' width='100%' height='100%'&gt;&lt;/iframe&gt;";
        }
    }
}</pre>
<p>Como podemos ver tuvimos que hacer unos cambios a la cadena, primero tenemos que cambiar todas las comillas dobles, por comillas sencillas. También cambiamos el parámetro delayLoad a false y el with y height a 100%.</p>
<p>Si en este momento corren el proyecto, funcionará bien, pero verán un cuadro de dialogo con la siguiente advertencia:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image4.png" rel="lightbox[438]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb4.png" border="0" alt="image" width="491" height="161" /></a></p>
<p>Para corregir esto solo tenemos que ir a nuestro aspx de nuestro proyecto web:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/03/image5.png" rel="lightbox[438]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/03/image_thumb5.png" border="0" alt="image" width="262" height="384" /></a></p>
<p>Y en la sección del div llamado silverlightControlHost vamos a agregar un parámetro:</p>
<pre class="brush: xml; collapse: false;">&lt;param name="windowless" value="true" /&gt;</pre>
<p>Pueden ver un demo en vivo <a href="http://demos.jamolina.com/photosynthdemo/" target="_blank">aquí</a> y descargar el código <a href="http://jamolina.codeplex.com/releases/view/41767" target="_blank">aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F03%2Fphotosynth-en-nuestra-app-de-silverlight%2F&amp;linkname=Photosynth%20en%20nuestra%20app%20de%20Silverlight" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/03/photosynth-en-nuestra-app-de-silverlight/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/03/photosynth-en-nuestra-app-de-silverlight/</feedburner:origLink></item>
		<item>
		<title>Recorriendo elementos del VisualTree</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/7EIDsxKmvfc/</link>
		<comments>http://jamolina.com/index.php/2010/02/recorriendo-elementos-del-visualtree/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 23:11:57 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[VisualTreeHelper]]></category>

		<guid isPermaLink="false">http://jamolina.com/?p=424</guid>
		<description><![CDATA[Todo elemento desplegado en nuestra aplicación de Silverlight pertenece a una estructura jerárquica conocida como el VisualTree. La clase VisualTreeHelper nos provee de varios métodos para recorrer dicha estructura entre ellos: GetChildrenCount – Obtiene el número de Hijos que tiene el UIElement GetChild – Obtiene un hijo del UIElement NOTA: El propósito del siguiente ejemplo [...]]]></description>
			<content:encoded><![CDATA[<p>Todo elemento desplegado en nuestra aplicación de Silverlight pertenece a una estructura jerárquica conocida como el VisualTree. La clase <a href="http://msdn.microsoft.com/es-mx/library/system.windows.media.visualtreehelper.aspx" target="_blank">VisualTreeHelper</a> nos provee de varios métodos para recorrer dicha estructura entre ellos:</p>
<p><span id="more-424"></span></p>
<ul>
<li><a href="http://msdn.microsoft.com/es-mx/library/system.windows.media.visualtreehelper.getchildrencount.aspx" target="_blank">GetChildrenCount</a> – Obtiene el número de Hijos que tiene el UIElement </li>
<li><a href="http://msdn.microsoft.com/es-mx/library/system.windows.media.visualtreehelper.getchild.aspx" target="_blank">GetChild</a> – Obtiene un hijo del UIElement </li>
</ul>
<p><strong>NOTA:</strong> El propósito del siguiente ejemplo es ilustrar el uso del VisualTree. Hay muchas maneras de hacer lo siguiente, como cambiar directamente la fuente de datos para reflejar los cambios en la Interfaz de Usuario. De hecho, si no se usa adecuadamente, el VisualTreeHelper puede hacer nuestra aplicación lenta.</p>
<p>Primero, vamos a usar una clase llamada ListInfo. Esta clase implementa la interfaz <a href="http://msdn.microsoft.com/es-mx/library/system.componentmodel.inotifypropertychanged.aspx" target="_blank">INotifyPropertyChanged</a> y tiene solo dos propiedades: Name y Check. Además cuenta con un método estático llamado getInfo() que devuelve una <a href="http://msdn.microsoft.com/es-mx/library/ms668604.aspx" target="_blank">ObservableCollection</a> de 3 elementos:</p>
<pre class="brush: csharp;">public class ListInfo : INotifyPropertyChanged
{
    private string name;
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
            NotifyPropertyChange(&quot;Name&quot;);
        }
    }

    private bool check;
    public bool Check
    {
        get
        {
            return check;
        }
        set
        {
            check = value;
            NotifyPropertyChange(&quot;Check&quot;);
        }
    }

    public static ObservableCollection&lt;ListInfo&gt; getInfo()
    {
        ObservableCollection&lt;ListInfo&gt; data = new ObservableCollection&lt;ListInfo&gt;();
        data.Add(new ListInfo { Name = &quot;Texto&quot;, Check = true });
        data.Add(new ListInfo { Name = &quot;Qwerty&quot;, Check = false });
        data.Add(new ListInfo { Name = &quot;Asdf&quot;, Check = true });

        return data;
    }

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

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;

    #endregion
}</pre>
<p>&#160;</p>
<p>A continuación tenemos nuestro XAML, que es un simple ListBox con un ItemTemplate definido:</p>
<pre class="brush: xml;">&lt;StackPanel x:Name=&quot;LayoutRoot&quot;&gt;
    &lt;ListBox x:Name=&quot;myList&quot;
             Width=&quot;450&quot;
             SelectionChanged=&quot;myList_SelectionChanged&quot;&gt;
        &lt;ListBox.ItemTemplate&gt;
            &lt;DataTemplate&gt;
                &lt;StackPanel Orientation=&quot;Horizontal&quot;&gt;
                    &lt;CheckBox IsChecked=&quot;{Binding Check, Mode=TwoWay}&quot;
                              IsEnabled=&quot;True&quot;
                              Content=&quot;{Binding Name, Mode=TwoWay}&quot;
                              Margin=&quot;5,0,0,0&quot; /&gt;
                    &lt;TextBlock Text=&quot;Al cambiar el elemento cambia nuestro CheckBox&quot;
                               Margin=&quot;5,0,0,0&quot;
                               Foreground=&quot;Blue&quot; /&gt;
                &lt;/StackPanel&gt;
            &lt;/DataTemplate&gt;
        &lt;/ListBox.ItemTemplate&gt;
    &lt;/ListBox&gt;
&lt;/StackPanel&gt;</pre>
<p>&#160;</p>
<p>Finalmente, nuestro CodeBehind:</p>
<pre class="brush: csharp;">public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
        this.Loaded += new RoutedEventHandler(MainPage_Loaded);
    }

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        myList.ItemsSource = ListInfo.getInfo();
    }

    private void myList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ListInfo current = myList.SelectedItem as ListInfo;

        List&lt;UIElement&gt; checkBoxes = new List&lt;UIElement&gt;();
        getChildTypes(myList, typeof(CheckBox), ref checkBoxes);

        foreach (UIElement element in checkBoxes)
        {
            CheckBox checkBox = (CheckBox)element;
            if (checkBox.Content.ToString() == current.Name)
            {
                checkBox.IsChecked = !checkBox.IsChecked;
            }
        }
    }

    public void getChildTypes(UIElement parent, Type elementType, ref List&lt;UIElement&gt; items)
    {
        int count = VisualTreeHelper.GetChildrenCount(parent);
        if (count &gt; 0)
        {
            for (int i = 0; i &lt; count; i++)
            {
                UIElement child = VisualTreeHelper.GetChild(parent, i) as UIElement;
                if (child.GetType() == elementType)
                {
                    items.Add(child);
                }
                getChildTypes(child, elementType, ref items);
            }
        }
    }
}</pre>
<p>&#160;</p>
<p>El método que nos interesa es getChildTypes. En este caso le mandamos el padre de los elementos que estamos buscando, en este caso, el ListBox myList. Después el tipo de elementos que queremos que nos regrese, osea, ChecBox. Finalmente le mandamos un valor de referencia de tipo List&lt;UIElement&gt;, en el cuál obtendremos nuestros resultados.</p>
<p>La lógica es sencilla, es un método recursivo que recorre todos los hijos y va agregando a la lista todos los que coindicen con el tipo indicado por elementType.</p>
<p>Pueden ver el resultado <a href="http://demos.jamolina.com/VisualTreeDemo/" target="_blank">aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F02%2Frecorriendo-elementos-del-visualtree%2F&amp;linkname=Recorriendo%20elementos%20del%20VisualTree" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/02/recorriendo-elementos-del-visualtree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/02/recorriendo-elementos-del-visualtree/</feedburner:origLink></item>
		<item>
		<title>Curso gratuito de Silverlight 4</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/GUZAOlCFkag/</link>
		<comments>http://jamolina.com/index.php/2010/02/curso-gratuito-de-silverlight-4/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 21:13:50 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight 4 Beta]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/02/curso-gratuito-de-silverlight-4/</guid>
		<description><![CDATA[Mi estimado amigo Rodrigo Díaz ha creado un excelente curso introductorio a Silverlight 4. El curso en sí esta hospedado en el canal de Channel9Mexico y empieza aquí. Pero les recomiendo leer el post de Rodrigo acerca del curso. No olviden dejarle retroalimentación acerca del curso. Aquí una lista de los temas (que pueden ver [...]]]></description>
			<content:encoded><![CDATA[<p>Mi estimado amigo <a href="http://rdiazconcha.com" target="_blank">Rodrigo Díaz</a> ha creado un excelente curso introductorio a Silverlight 4. El curso en sí esta hospedado en el canal de <a href="http://channel9.msdn.com/posts/Channel9Mexico/" target="_blank">Channel9Mexico</a> y empieza <a href="http://channel9.msdn.com/posts/Channel9Mexico/Curso-Introduccin-a-Silverlight-4-1-de-13/" target="_blank">aquí</a>. Pero les recomiendo leer <a href="http://rdiazconcha.com/?p=565" target="_blank">el post de Rodrigo acerca del curso</a>. No olviden dejarle retroalimentación acerca del curso.</p>
<p><span id="more-423"></span></p>
<p>Aquí una lista de los temas (que pueden ver en su post arriba mencionado):</p>
<ol>
<p><a href="http://channel9.msdn.com/posts/Channel9Mexico/Curso-Introduccin-a-Silverlight-4-1-de-13/" target="_blank"><font size="4">Introducción</font></a></p>
<p>Introducción y Bienvenida al Curso de Introducción de Silverlight 4 creado por Rodrigo Díaz Concha, MVP de ASP.NET, fundador de La Liga Silverlight, Orador de INETA Latam y Master Instructor del Silverlight Tour para Latinoamérica y España.</p>
<p>Este curso introductorio a Silverlight 4 te permitirá comprender los conceptos básicos y diversas funcionalidades con las que cuenta esta fabulosa plataforma de desarrollo. Esta primera parte del curso consta de 12 videos y 1 práctica que refuerza los conceptos vistos en la serie de screencasts.</p>
<p>Silverlight es una plataforma de desarrollo para construir aplicaciones enriquecidas para Internet (RIA por sus siglas en inglés) que cada vez está siendo más usada como opción tecnológica en aplicativos modernos.</p>
<p>Una confusión que se tiene hoy en día es que se relaciona únicamente a Silverlight con el sistema operativo Windows, pero lejos de eso, las aplicaciones de Silverlight pueden ejecutar en Mac OS, Linux y Windows.</p>
<p>En este screencast veremos una introducción a la plataforma de desarrollo Silverlight, sus herramientas, aplicaciones reales y los requisitos necesarios para poder comenzar a construir aplicaciones con esta tecnología. Para más artículos acerca de Silverlight totalmente en español visita La Liga Silverlight: La Primera Comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas (<a href="http://blogs.LigaSilverlight.com">http://blogs.LigaSilverlight.com</a>).</p>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Fundamentos-Silverlight-4-2-13/" target="_blank"><strong><font size="4">Fundamentos</font></strong></a>
<p>Una vez instaladas las herramientas de Silverlight para Visual Studio .NET es hora de poner manos a la obra, asimismo es muy importante tener en cuenta algunos conceptos fundamentales acerca de la construcción de soluciones en esta tecnología. En este capítulo veremos conceptos fundamentales en el desarrollo de aplicaciones de Silverlight como las plantillas de Visual Studio .NET, el diseñador, el empaquetado XAP y el hospedaje en la página. Para más artículos acerca de Silverlight totalmente en español visita La Liga Silverlight: La Primera Comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas (<a href="http://blogs.LigaSilverlight.com">http://blogs.LigaSilverlight.com</a>).</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/XAML-Silverlight-4-3-13/" target="_blank"><strong><font size="4">Xaml</font></strong></a>
<p>Xaml (acrónimo de Extensible Application Markup Language) es el lenguaje de marcación utilizado por Silverlight (y también por su hermano mayor WPF) para poder definir las interfaces de usuario de nuestras aplicaciones.&#160; Toda aplicación de Silverlight implica código de Xaml ligado a código en .NET. Por esta razón en este capítulo veremos conceptos básicos acerca de Xaml, sus elementos básicos y transformaciones.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Animaciones-4-13/" target="_blank"><strong><font size="4">Animaciones</font></strong></a>
<p>Para darle vida a nuestras aplicaciones de Silverlight podemos hacer uso entre otras cosas de las Animaciones. Las Animaciones son un mecanismo para cambiar el valor de las propiedades de los elementos y transformaciones conforme pasa un tiempo determinado. En este capítulo describiremos de manera rápida y sencilla el uso y creación de Animaciones dentro de Silverlight.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Expression-Blend-5-13/" target="_blank"><strong><font size="4">Expression Blend</font></strong></a>
<p>Todo desarrollador de Silverlight debe tener en su cinturón de herramientas Expression Blend, ya que nos ayuda de gran manera a hacer más rápido, efectivo y divertido nuestro trabajo al momento de construir soluciones con la plataforma de desarrollo Silverlight. En este capítulo apreciaremos en conjunto el uso de Expression Blend como herramienta de edición nativa de Xaml&#160; además describiremos las opciones más importantes de la herramienta.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Recursos-y-Estilos-6-13/" target="_blank"><strong><font size="4">Recursos y Estilos</font></strong></a>
<p>Los recursos son un concepto básico para poder crear aplicaciones que reutilicen elementos ya que permiten ser un almacenaje de objetos de cualquier tipo para poder reusar en cualquier parte de nuestras aplicaciones. Los estilos son elementos que podemos&#160; guardar en el diccionario de Recursos para poder aplicarlos y lograr así una apariencia estándar en la aplicación. En este capítulo describiremos el concepto de Recursos y también describiremos la creación y utilización de Estilos para controles y elementos.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Controles-y-Plantillas-7-13/" target="_blank"><strong><font size="4">Controles y Plantillas</font></strong></a>
<p>Silverlight cuenta con una gran cantidad de controles que podemos utilizar en nuestras aplicaciones y la gran mayoría soporta el cambio o modificación de su Plantilla.&#160; En este capítulo mostraremos la manera de cómo cambiar la Plantilla en los controles básicos de Silverlight.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/MediaElement-8-13/" target="_blank"><strong><font size="4">MediaElement</font></strong></a>
<p>Silverlight ha sido utilizado como aplicación cliente en la transmisión de importantes eventos en los últimos meses: la toma de poder de Barack Obama, el Memorial de Michael Jackson, los Juegos Olímpicos de Beijing , etc. Debido a su extraordinaria calidad en la reproducción de audio y video Silverlight está siendo la plataforma favorita para sitios multimedia. En este capítulo veremos la utilización del elemento MediaElement, el cual nos permite reproducir audio y video en nuestros aplicativos y apreciaremos la manera tan sencilla de incorporar esta características en nuestras propias aplicaciones.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Impresin/" target="_blank"><strong><font size="4">Impresión</font></strong></a>
<p>Una de las características más esperadas y solicitadas por la comunidad de Silverlight es el soporte de impresión dentro de las aplicaciones, esto es, la capacidad de poder mandar a imprimir el contenido que estemos viendo en la aplicación ya sea una lista de datos de un DataGrid o ListBox o simplemente tomarle una “foto” a la pantalla y enviarla a papel o alguna de las impresoras virtuales instaladas en nuestros equipos (por ejemplo: OneNote, XPS, PDF, etc.).&#160; Silverlight 4 incluye esta característica a través de un modelo de clases muy sencillo.</p>
<p>En este capítulo mostraremos el uso de la clase PrintDocument para poder crear documentos de impresión a través de nuestras aplicaciones de Silverlight 4.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Webcam-10-13/" target="_blank"><strong><font size="4">Webcam</font></strong></a>
<p>Con la llegada de Silverlight 4 también ha llegado a nosotros la posibilidad de implementar en nuestras aplicaciones la capacidad de tomar video a través de la Webcam y capturar audio por medio del micrófono del equipo.&#160; Este fue una de las peticiones más fuertes en Silverlight 3 y la espera ha terminado.&#160; En este capítulo del curso veremos cómo fácilmente podemos utilizar la Webcam para poder realizar capturas de fotografías con el video.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Drag-and-Drop-11-13/" target="_blank"><strong><font size="4">Drag and Drop</font></strong></a>
<p>Silverlight 4 cuenta con soporte de arrastrar uno o varios archivos desde afuera de la aplicación hacia adentro de ella y soltarlo(s) para poder leer su información y contenido.&#160; Esta característica nos permite como desarrolladores crear mejores Experiencias para los Usuarios ya que evitan el número de cajas de diálogo y clics para abrir o leer un archivo o conjunto de archivos. En este capítulo del curso veremos cómo aplicar esta sencilla pero poderosa funcionalidad en nuestras propias soluciones.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/OpenFileDialog/" target="_blank"><strong><font size="4">OpenFileDialog</font></strong></a>
<p>De manera predeterminada, Silverlight requiere el permiso explícito del usuario para poder leer el Sistema de Archivos ya que ejecuta en Confianza Parcial. La caja de diálogo OpenFileDialog nos brinda un mecanismo para permitir a los usuarios que accedan a sus archivos desde las aplicaciones con Silverlight. En este capítulo del curso describiremos el uso de la caja de diálogo OpenFileDialog para poder leer archivos del equipo del usuario.</p>
</li>
<li><a href="http://channel9.msdn.com/posts/Channel9Mexico/Clic-Derecho-13-13/" target="_blank"><strong><font size="4">Clic Derecho</font></strong></a>
<p>Tradicionalmente al hacer clic derecho sobre una aplicación de Silverlight nos muestra un menú con la opción de abrir la caja de diálogo con información del plugin (como la versión, las cuotas para el almacenamiento aislado, etc.). Ahora en Silverlight 4 podemos capturar el evento de clic derecho del mouse para crear nuestra propia Interface de Usuario y código relacionado. En este capítulo describiremos el manejo de esta característica para poder crear menús contextuales en nuestras aplicaciones de Silverlight.</p>
</li>
</ol>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F02%2Fcurso-gratuito-de-silverlight-4%2F&amp;linkname=Curso%20gratuito%20de%20Silverlight%204" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/02/curso-gratuito-de-silverlight-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/02/curso-gratuito-de-silverlight-4/</feedburner:origLink></item>
		<item>
		<title>Trabajando con un navegador en Visual Studio diferente al predeterminado</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/DRTKkuzFl3w/</link>
		<comments>http://jamolina.com/index.php/2010/02/trabajando-con-un-navegador-en-visual-studio-diferente-al-predeterminado/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 04:30:18 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/02/trabajando-con-un-navegador-en-visual-studio-diferente-al-predeterminado/</guid>
		<description><![CDATA[Como muchos, a mi no me gusta usar el Internet Explorer mas que para ciertas cosas, como es transacciones bancarias y, más comúnmente, debugear una aplicación. En lo personal, tengo FireFox como mi navegador predeterminado, pero no me gusta debugear con él porque cuando lo cierra, Visual Studio ni se entera entonces tengo que estar [...]]]></description>
			<content:encoded><![CDATA[<p>Como muchos, a mi no me gusta usar el Internet Explorer mas que para ciertas cosas, como es transacciones bancarias y, más comúnmente, debugear una aplicación. En lo personal, tengo FireFox como mi navegador predeterminado, pero no me gusta debugear con él porque cuando lo cierra, Visual Studio ni se entera entonces tengo que estar manualmente presionando el botón de stop.</p>
<p><span id="more-416"></span></p>
<p>Llevaba varios días tratando de encontrar la opción para cambiar el navegador predeterminado de Visual Studio, sabía que era posible porque así lo tengo en la computadora del trabajo, pero en mi computadora personal (que había sido recientemente formateada) nada más no recordaba la opción (revisé tooooodas las opciones de personalización y nada).</p>
<p>Hoy por fin la encontré y aunque para muchos es obvia, la voy a posterar nada más para que cuando se me olvide encontrarla fácil (que es uno de mis principales propósitos de tener este blog).</p>
<p>Paso 1. Dar clic derecho sobre un aspx como Default.aspx y seleccionar Browse with</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/02/image.png" rel="lightbox[416]"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Opciones del menu de contexto de un aspx" border="0" alt="Opciones del menu de contexto de un aspx" src="http://jamolina.com/wp-content/uploads/2010/02/image_thumb.png" width="277" height="480" /></a> </p>
<p>Paso 2. En el cuadro de dialogo, elegir Internet Explorer y dar clic en el botón “Set as Default”</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/02/image1.png" rel="lightbox[416]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Cuadro de dialogo Browse With" border="0" alt="Cuadro de dialogo Browse With" src="http://jamolina.com/wp-content/uploads/2010/02/image_thumb1.png" width="466" height="354" /></a> </p>
<p>Y ¡Listo!. Nada más que dar clic en Cancel y Debugear con otro navegador. </p>
<p>Nota. Por alguna razón, aquí no aparece mi otro navedagor Google Chrome, no estoy seguro a que se deba, si alguien sabe, por favor deje un comentario.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F02%2Ftrabajando-con-un-navegador-en-visual-studio-diferente-al-predeterminado%2F&amp;linkname=Trabajando%20con%20un%20navegador%20en%20Visual%20Studio%20diferente%20al%20predeterminado" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/02/trabajando-con-un-navegador-en-visual-studio-diferente-al-predeterminado/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/02/trabajando-con-un-navegador-en-visual-studio-diferente-al-predeterminado/</feedburner:origLink></item>
		<item>
		<title>Tutoriales del Blend</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/-TlZbTwTn1M/</link>
		<comments>http://jamolina.com/index.php/2010/01/tutoriales-del-blend/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 18:30:40 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Blend]]></category>
		<category><![CDATA[Rosetta]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/01/tutoriales-del-blend/</guid>
		<description><![CDATA[John Papa publicó un post en el que habla sobre Project Rosetta, si bien el sitio tiene mucho material para gente que está acostumbrada a usar Flash, también puede servir para que un programador de .NET aprenda diferentes conceptos de diseño. Además, el sitio incluye unos tutoriales muy buenos y cortos de Blend. No duden [...]]]></description>
			<content:encoded><![CDATA[<p>John Papa publicó un <a href="http://johnpapa.net/silverlight/hidden-gems-why-net-developers-need-to-take-a-2nd-look-at-project-rosetta/" target="_blank">post</a> en el que habla sobre <a href="http://visitmix.com/labs/rosetta" target="_blank">Project Rosetta</a>, si bien el sitio tiene mucho material para gente que está acostumbrada a usar Flash, también puede servir para que un programador de .NET aprenda diferentes conceptos de diseño. Además, el sitio incluye unos <a href="http://visitmix.com/labs/rosetta/EyesOfBlend/" target="_blank">tutoriales muy buenos y cortos de Blend</a>.</p>
<p><span id="more-409"></span></p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image9.png" rel="lightbox[409]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb9.png" width="640" height="459" /></a> </p>
<p>No duden en echarle un vistazo.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F01%2Ftutoriales-del-blend%2F&amp;linkname=Tutoriales%20del%20Blend" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/01/tutoriales-del-blend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/01/tutoriales-del-blend/</feedburner:origLink></item>
		<item>
		<title>RIA Services en práctica Parte I – Personalizando el diseño</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/L6apmMVBf6k/</link>
		<comments>http://jamolina.com/index.php/2010/01/ria-services-en-prctica-parte-i-personalizando-el-diseo/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 16:32:53 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[RIA Services]]></category>
		<category><![CDATA[Silverlight 4 Beta]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2010/01/ria-services-en-prctica-parte-i-personalizando-el-diseo/</guid>
		<description><![CDATA[WCF RIA Services es una excelente herramienta que podemos utilizar en Silverlight para manejar nuestro acceso a datos. Si aún no te has introducido en el tema, te recomiendo echar un vistazo a la serie de posts sobre RIA Services de Jorge Levy sobre el tema. Esta serie de posts pretende ser un poco menos [...]]]></description>
			<content:encoded><![CDATA[<p>WCF RIA Services es una excelente herramienta que podemos utilizar en Silverlight para manejar nuestro acceso a datos. Si aún no te has introducido en el tema, te recomiendo echar un vistazo a la <a href="http://www.jorgelevy.com/?p=47" target="_blank">serie de posts sobre RIA Services</a> de <a href="http://jorgelevy.com" target="_blank">Jorge Levy</a> sobre el tema.</p>
<p><span id="more-400"></span></p>
<p>Esta serie de posts pretende ser un poco menos introductoria y más enfocada a hacer una aplicación real, pero sencilla.</p>
<p>Vamos a realizar una aplicación para ayudar en un intercambio de regalos (si, este post llega un poco tarde, pero por lo menos espero que sea ilustrativo).</p>
<p><strong>NOTA: Aunque este ejemplo estará hecho en Visual Studio 2010 beta 2 + SL4 Tools Beta, la mayoría de las cosas puede ser hecha en VS2008 SP1 con WCF RIA Services Beta. En caso contrario, se hará notar para evitar confusiones.</strong></p>
<p>Lo primero que debemos hacer es crear una nueva aplicación de tipo Silverlight Business Application, la cual nombraremos “Intercambios”:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb.png" border="0" alt="image" width="500" height="359" /></a></p>
<p>Si corremos nuestro proyecto tal y como está, obtenemos el template base de RIA Services:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image1.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb1.png" border="0" alt="image" width="500" height="344" /></a></p>
<p>Ahora, vamos a personalizar un poco nuestro proyecto. Para esto iremos a la <a href="http://gallery.expression.microsoft.com" target="_blank">Galería de Microsoft Expression</a>, en donde buscaremos un tema para nuestra aplicación. Nuestro tema será <a href="http://gallery.expression.microsoft.com/en-us/riathemelimeshocker" target="_blank">Lime Shocker</a> de <a href="http://timheuer.com/" target="_blank">Tim Heuer</a>.</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image2.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb2.png" border="0" alt="image" width="500" height="338" /></a></p>
<p>Bajamos el tema y extraemos los archivos en un directorio de nuestra elección. A continuación, buscamos en nuestro proyecto la carpeta Assets (en este caso <em>Intercambios\Intercambios\Assets</em>) y renombramos el archivo <em>Styles.xaml </em>(por ejemplo: <em>Styles.xaml.old</em>) y finalmente copiamos el que descargamos. Si volvemos a correr nuestro proyecto, ahora obtenemos algo como esto:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image3.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb3.png" border="0" alt="image" width="500" height="346" /></a></p>
<p>Ahora, debido a que Shock Limer fue hecho para una versión anterior de RIA Services, debemos de cambiar un par de cosas en nuestro Styles.xaml. Primero, debemos agregar a las nuestras referencias (al inicio del archivo) la siguiente linea:</p>
<pre class="csharpcode">xmlns:loginWindow=<span class="str">"clr-namespace:Intercambios.LoginUI"</span></pre>
<p><!--.csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
<p>Después tenemos que encontrar el estilo encabezado con el comentario “&lt;!&#8211; LoginRegistration Window Style –&gt;” y reemplazarlo por el de nuestro archivo Styles.xaml.old (osea, nuestro archivo original). Esto debido a unos estados nuevos incluídos en esta versión de WCF RIA Services.</p>
<p>Vamos a personalizar un poco el tema, para que luzca un poco más navideño (o cualqueir otra festividad que se ajuste más a la época en que nos encontremos). Abrimos nuestro proyecto en Blend Preview for .NET 4 (o Blend 3 esta bien si estan trabajando en VS2008). y con nuestro MainPage.xaml abierto abrimos el panel de Resources. Vamos a modificar dos de nuestras brochas: NavigationBackgroundColorBrush y HighLightColorBrush a Rojo y un Verde más obscuro respectivamente:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image4.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb4.png" border="0" alt="image" width="500" height="358" /></a></p>
<p>Ahora agregamos un par de imagenes al proyecto, un árbol de navidad para nuestra página de bienvenida y unos bastones de caramelo para decorar un poco nuestro borde:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image5.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb5.png" border="0" alt="image" width="500" height="350" /></a></p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image6.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb6.png" border="0" alt="image" width="500" height="340" /></a></p>
<p>Regresamos a Visual Studio. Dentro de la carpeta de Assets, hay otra que se llama Resources, y ahí encontramos un archivo de recursos llamado ApplicationStrings.resx. Este archivo nos permite personalizar distintos textos que aparecen en nuestra aplicación. Vamos a dejarlo algo así:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image7.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb7.png" border="0" alt="image" width="500" height="277" /></a></p>
<p>Corremos nuestro proyecto y obtenemos algo como esto:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2010/01/image8.png" rel="lightbox[400]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2010/01/image_thumb8.png" border="0" alt="image" width="500" height="304" /></a></p>
<p>Puedes descargar el proyecto <a href="http://jamolina.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=38431" target="_blank">aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2010%2F01%2Fria-services-en-prctica-parte-i-personalizando-el-diseo%2F&amp;linkname=RIA%20Services%20en%20pr%26aacute%3Bctica%20Parte%20I%20%26ndash%3B%20Personalizando%20el%20dise%26ntilde%3Bo" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2010/01/ria-services-en-prctica-parte-i-personalizando-el-diseo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2010/01/ria-services-en-prctica-parte-i-personalizando-el-diseo/</feedburner:origLink></item>
		<item>
		<title>Ocultando las líneas del control Chart</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/O5jh5n4NJkw/</link>
		<comments>http://jamolina.com/index.php/2009/12/ocultando-las-lneas-del-control-chart/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 22:58:56 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Chart]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/12/ocultando-las-lneas-del-control-chart/</guid>
		<description><![CDATA[El control Chart, incluído en el Silverlight Toolkit, nos permite mostrar datos de forma gráfica. Recientemente mi amigo Jorge Levy tuvo la necesidad de hacer una gráfica de barras sin las líneas de fondo mostradas por default: Resultó que esto es algo muy sencillo de hacer, pero no tan obvio: &#60;chartingToolkit:Chart Margin=&#34;109,62,116,64&#34; Title=&#34;Chart Title&#34;&#62; &#60;chartingToolkit:Chart.Axes&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>El control Chart, incluído en el <a href="http://silverlight.codeplex.com" target="_blank">Silverlight Toolkit</a>, nos permite mostrar datos de forma gráfica. Recientemente mi amigo <a href="http://jorgelevy.com" target="_blank">Jorge Levy</a> tuvo la necesidad de hacer una gráfica de barras sin las líneas de fondo mostradas por default:</p>
<p><span id="more-381"></span></p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/12/image.png" rel="lightbox[381]"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Gráfica de barras con líneas horizontales" border="0" alt="Gráfica de barras con líneas horizontales" src="http://jamolina.com/wp-content/uploads/2009/12/image_thumb.png" width="240" height="206" /></a> </p>
<p>Resultó que esto es algo muy sencillo de hacer, pero no tan obvio:</p>
<pre class="brush: xml;">&lt;chartingToolkit:Chart Margin=&quot;109,62,116,64&quot;
                       Title=&quot;Chart Title&quot;&gt;
    &lt;chartingToolkit:Chart.Axes&gt;
        &lt;chartingToolkit:LinearAxis Orientation=&quot;Y&quot;
                                    ShowGridLines=&quot;False&quot; /&gt;
    &lt;/chartingToolkit:Chart.Axes&gt;
    &lt;chartingToolkit:Chart.DataContext&gt;
        &lt;PointCollection&gt;
            &lt;Point&gt;1,10&lt;/Point&gt;
            &lt;Point&gt;2,20&lt;/Point&gt;
            &lt;Point&gt;3,30&lt;/Point&gt;
            &lt;Point&gt;4,40&lt;/Point&gt;
        &lt;/PointCollection&gt;
    &lt;/chartingToolkit:Chart.DataContext&gt;
    &lt;chartingToolkit:ColumnSeries DependentValuePath=&quot;X&quot;
                                  IndependentValuePath=&quot;Y&quot;
                                  ItemsSource=&quot;{Binding}&quot; /&gt;
&lt;/chartingToolkit:Chart&gt;</pre>
</p>
<p>&#160;</p>
<p>Aquí podemos observar que de la línea 3 a la 6 definimos la propiedad <strong><em>Axes</em></strong> de nuestro control <strong><em>Chart</em></strong>. Estamos indicando que tendremos un <strong><em>LinearAxis</em></strong> con orientación “Y” (las líneas muestran los valores para los datos en dicho eje) y definimos <strong><em>ShowGridLines</em></strong> como falso para evitar que aparezcan. El resultado es:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/12/image1.png" rel="lightbox[381]"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Gráfica de barras sin líneas horizontales" border="0" alt="Gráfica de barras sin líneas horizontales" src="http://jamolina.com/wp-content/uploads/2009/12/image_thumb1.png" width="240" height="206" /></a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F12%2Focultando-las-lneas-del-control-chart%2F&amp;linkname=Ocultando%20las%20l%26iacute%3Bneas%20del%20control%20Chart" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/12/ocultando-las-lneas-del-control-chart/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/12/ocultando-las-lneas-del-control-chart/</feedburner:origLink></item>
		<item>
		<title>Webcast: SketchFlow</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/9hg5pbpZT-Q/</link>
		<comments>http://jamolina.com/index.php/2009/11/webcast-sketchflow/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 18:03:19 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[SketchFlow]]></category>
		<category><![CDATA[Webcast]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/11/webcast-sketchflow/</guid>
		<description><![CDATA[Esta coordialmente invitados al próximo webcast de la Liga Silverlight. En esta ocasión, su servidor hablará acerca de SketchFlow, esta gran herramienta que nos permite hacer bosquejos o mockups 100% funcionables y reutilizables de nuestras aplicaciones. &#160; Tema: SketchFlow Fecha: 19 de Noviembre 2009 Hora: 6:30 &#8211; 7:30PM (-6 GMT) Orador: Arturo Molina Regístrate aquí.]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.ligasilverlight.com" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="LogoLigaSilverlight" border="0" alt="LogoLigaSilverlight" align="left" src="http://jamolina.com/wp-content/uploads/2009/11/LogoLigaSilverlight.gif" width="95" height="109" /></a>Esta coordialmente invitados al próximo webcast de la Liga Silverlight. En esta ocasión, su servidor hablará acerca de SketchFlow, esta gran herramienta que nos permite hacer bosquejos o mockups 100% funcionables y reutilizables de nuestras aplicaciones. </p>
<p><span id="more-375"></span></p>
<p>&#160;</p>
<p><strong>Tema:</strong> SketchFlow</p>
<p><strong>Fecha:</strong> 19 de Noviembre 2009</p>
<p><strong>Hora:</strong> 6:30 &#8211; 7:30PM (-6 GMT)</p>
<p><strong>Orador:</strong> Arturo Molina</p>
<p><a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032427441&amp;EventCategory=2&amp;culture=es-MX&amp;CountryCode=MX" target="_blank">Regístrate aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F11%2Fwebcast-sketchflow%2F&amp;linkname=Webcast%3A%20SketchFlow" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/11/webcast-sketchflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/11/webcast-sketchflow/</feedburner:origLink></item>
		<item>
		<title>Webcast: Silverlight Toolkit Parte 2</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/jORdOjj_r-w/</link>
		<comments>http://jamolina.com/index.php/2009/11/webcast-silverlight-toolkit-parte-2/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:59:44 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Webcast]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/11/webcast-silverlight-toolkit-parte-2/</guid>
		<description><![CDATA[Los invito a todos al Webcast que se llevará a cabo el día de mañana a las 6:30 de la tarde. Este Webcast continuará con el tema del Silverlight Toolkit, esta  vez conoceremos a detalle controles que nos dan una gran funcionalidad con muy poco código: El DataGrid y el DataForm. También tocaremos un poco [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.ligasilverlight.com" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="LogoLigaSilverlight" src="http://jamolina.com/wp-content/uploads/2009/11/LogoLigaSilverlight.gif" border="0" alt="LogoLigaSilverlight" width="95" height="109" align="left" /></a>Los invito a todos al Webcast que se llevará a cabo el día de mañana a las 6:30 de la tarde. Este Webcast continuará con el tema del Silverlight Toolkit, esta  vez conoceremos a detalle controles que nos dan una gran funcionalidad con muy poco código: El DataGrid y el DataForm. También tocaremos un poco el tema de la nueva versión recién liberada el pasado 19 de octubre, específicamente, la funcionalidad Drag and Drop en el DataGrid.</p>
<p><span id="more-367"></span></p>
<p><strong>Tema:</strong> Silverlight Toolkit Parte II</p>
<p><strong>Fecha:</strong> 05 de Noviembre 2009</p>
<p><strong>Hora:</strong> 6:30 &#8211; 7:30PM (-6 GMT)</p>
<p><strong>Orador:</strong> Arturo Molina</p>
<p><a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032427440&amp;EventCategory=2&amp;culture=es-MX&amp;CountryCode=MX" target="_blank">Regístrate aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F11%2Fwebcast-silverlight-toolkit-parte-2%2F&amp;linkname=Webcast%3A%20Silverlight%20Toolkit%20Parte%202" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/11/webcast-silverlight-toolkit-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/11/webcast-silverlight-toolkit-parte-2/</feedburner:origLink></item>
		<item>
		<title>Cargando un Assembly dinámicamente</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/hQuV5uK9YTM/</link>
		<comments>http://jamolina.com/index.php/2009/09/cargando-un-assembly-dinmicamente/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 21:17:08 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Assembly]]></category>
		<category><![CDATA[interface]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/09/cargando-un-assembly-dinmicamente/</guid>
		<description><![CDATA[Hace tiempo tuve la necesidad de cargar dinámicamente una DLL. Esto puede tener muchas aplicaciones como tener una entrada en un archivo de cofiguración para poder elegir entre usar una clase u otra. Dichas clases podría por ejemplo, implementar diferentes formas de hacer una tarea específica. class Program { static void Main(string[] args) { string [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo tuve la necesidad de cargar dinámicamente una DLL. Esto puede tener muchas aplicaciones como tener una entrada en un archivo de cofiguración para poder elegir entre usar una clase u otra. Dichas clases podría por ejemplo, implementar diferentes formas de hacer una tarea específica.<span id="more-363"></span></p>
<pre class="brush: csharp;">class Program
{
    static void Main(string[] args)
    {
        string className = "Tester.SpanishGreeter";

        Assembly assembly = Assembly.GetExecutingAssembly();

        object o = assembly.CreateInstance(className);

        IGreeter test = (IGreeter)o;
        test.sayHello();
        Console.ReadLine();
    }
}

interface IGreeter
{
    void sayHello();
}

class SpanishGreeter : IGreeter
{
    public void sayHello()
    {
        Console.WriteLine("Hola");
    }
}

class EnglishGreeter : IGreeter
{
    public void sayHello()
    {
        Console.WriteLine("Hello");
    }
}

class DanishGreeter : IGreeter
{
   public void sayHello()
   {
       Console.WriteLine("Hej");
   }
}
</pre>
<p>Fácilmente el nombre de la clase lo podríamos obtener de una entrada del usuario, archivo de configuración o base de datos. Después obtenemos el ensamblado que se está ejecutando actualmente, de ahí podemos crear una instancia de <strong><em>object</em></strong> llamando al método <strong><em>CreateInstance()</em></strong> y enviando el nombre de la clase (namespace incluído). De ahí todo lo que tenemos que hacer es castear el objecto a nuestra clase y ¡Listo! Podemos hacer uso de cualquiera de nuestras implementaciones de la interfaz IGreeter.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F09%2Fcargando-un-assembly-dinmicamente%2F&amp;linkname=Cargando%20un%20Assembly%20din%26aacute%3Bmicamente" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/09/cargando-un-assembly-dinmicamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/09/cargando-un-assembly-dinmicamente/</feedburner:origLink></item>
		<item>
		<title>El programa WebSite Spark</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/mAl0eZ00meI/</link>
		<comments>http://jamolina.com/index.php/2009/09/el-programa-website-spark/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 14:58:26 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Blend]]></category>
		<category><![CDATA[Expression Studio]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[WebSite Spark]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/09/el-programa-website-spark/</guid>
		<description><![CDATA[Hace unas horas Scott Gu anunció el WebSite Spark. Este programa está diseñado para apoyar a desarrolladores y diseñadores a obtener software y recursos de Microsoft sin costo alguno durante tres años. El programa incluye: 3 licencias de Visual Studio 2008 Professional Edition 1 licencia de Epression Studio 3 (Incluyendo Blend, Sketchflow y Web) 2 [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unas horas Scott Gu <a href="http://weblogs.asp.net/scottgu/archive/2009/09/24/announcing-the-websitespark-program.aspx" target="_blank">anunció el WebSite Spark</a>. Este programa está diseñado para apoyar a desarrolladores y diseñadores a obtener software y recursos de Microsoft sin costo alguno durante tres años. El programa incluye:<span id="more-339"></span></p>
<ul>
<li>3 licencias de Visual Studio 2008 Professional Edition</li>
<li>1 licencia de Epression Studio 3 (Incluyendo Blend, Sketchflow y Web)</li>
<li>2 licencias de Expression Web 3</li>
<li>4 licencias por procesador de Windows Web Server 2008 R2</li>
<li>4 licencias pro procesador de SQL Server 2008 Web Edition</li>
<li>Panel de Control DotNetPanel</li>
</ul>
<p>Las licencias de Windows Server y SQL Sever pueden usarse tanto para ambientes de desarrollo como de producción.</p>
<p>Todo lo que necesitan es ser desarrolladores independientes o ser una compañía de 10 o menos empleados.</p>
<p>Después de 3 años, no tiene olbigación alguna de pagar el software, solo un cargo de $100 dlls al final del programa. Si deciden seguir en el programa, este tendrá un costo de $999 dlls por año. Alternativamente, pueden quedarse sólo con las licencias de producción (una de Windows Web Server y otra de SQL Server) por $199 dlls al año.</p>
<p>Para enrolarse solo necesitan entrar a la <a href="http://www.microsoft.com/web/websitespark/" target="_blank">página del programa</a> en donde se les solicitará unos datos sobre su compañía y un referal code que pueden solicitar a <a title="webspark@microsoft.com" href="mailto:webspark@microsoft.com">webspark@microsoft.com</a></p>
<p>No lo duden más y ¡<a href="http://www.microsoft.com/web/websitespark/WebPro/Signup.aspx" target="_blank">enrólense</a>!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F09%2Fel-programa-website-spark%2F&amp;linkname=El%20programa%20WebSite%20Spark" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/09/el-programa-website-spark/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/09/el-programa-website-spark/</feedburner:origLink></item>
		<item>
		<title>Applicaciones fuera del navegador</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/DEa6Sx1l4LA/</link>
		<comments>http://jamolina.com/index.php/2009/09/applicaciones-fuera-del-navegador/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 22:08:38 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[OOB]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/09/applicaciones-fuera-del-navegador/</guid>
		<description><![CDATA[Este post está basado en un video tutorial de Tim Heur titulado Out-of-browser Experiences. Lo primero que vamos a hacer es diseñar la interfaz de nuestra aplicacción. Esta puede ser tan sencilla como quieran, por lo menos necesitamos 2 TextBlock y un Button (liga al código al final del post): Los TextBlock en los que [...]]]></description>
			<content:encoded><![CDATA[<p>Este post está basado en un video tutorial de <a href="http://timheuer.com/" target="_blank">Tim Heur</a> titulado <a href="http://www.silverlight.net/learn/videos/silverlight-videos/out-of-browser-experiences/" target="_blank">Out-of-browser Experiences</a>.</p>
<p><span id="more-328"></span></p>
<p>Lo primero que vamos a hacer es diseñar la interfaz de nuestra aplicacción. Esta puede ser tan sencilla como quieran, por lo menos necesitamos 2 TextBlock y un Button (liga al código al final del post):</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image5.png" rel="lightbox[328]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb5.png" border="0" alt="image" width="359" height="301" /></a></p>
<p>Los TextBlock en los que estamos interesados por el momento son los que en la imagen vemos con la palabra “NO” en rojo. Uno lo llamaremos txtOOB que indicará si la aplicación se encuentra fuera del navegador y el otro txtConexion que indicará si la aplicación cuenta con conexión disponible.</p>
<p>A continuación, vamos a crear un pequeño método para ayudarnos a cambiar el estado de dichos TextBlock.</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> cambiaEstado(TextBlock texto, <span style="color: #0000ff;">bool</span> estado)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">{</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">if</span> (estado)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        texto.Text = <span style="color: #006080;">"Si"</span>;</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        texto.Foreground = <span style="color: #0000ff;">new</span> SolidColorBrush(Colors.Green);</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">else</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        texto.Text = <span style="color: #006080;">"No"</span>;</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        texto.Foreground = <span style="color: #0000ff;">new</span> SolidColorBrush(Colors.Red);</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">}</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>Este método nos permite mandar el TextBlock correspondiente y el valor que le será asignado. Si es verdadero, entonces el TextBlock mostrará la palabra “Si” en verde, si es falso, mostrará la palabra “No” en rojo.</p>
<p>Para la siguiente función declaramos el nombre de espacio <strong><em>System.Net.NetworkInformation</em></strong>. Aquí está contenida la clase NetworkInterface que nos permitirá saber si tenemos una conexión disponible:</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> ActualizarEstados()</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">{</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    cambiaEstado(txtOOB, App.Current.IsRunningOutOfBrowser);</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    cambiaEstado(txtConexion, NetworkInterface.GetIsNetworkAvailable());</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">}</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>Podemos ver GetIsNetworkAvailable() nos regresa un booleano indicando el estado de la conexión. Además, la propiedad App.Current.IsRunningOutOfBrowser nos indica si la aplicación está corriendo fuera del navegador. Solo necesitamos añadir la llamada a ActualizarEstados() en el constructor de nuestra clase MainPage. Al ejecutar nuestra aplicación vemos lo siguiente:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image6.png" rel="lightbox[328]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb6.png" border="0" alt="image" width="428" height="442" /></a></p>
<p>Ahora pasamos a la funcionalidad del botón. Queremos dos cosas: primero crearemos una función que inicialice el botón, dependiendo de si la aplicación está o no fuera del navegador y si está o nó instalada. Segundo, programaremos la funcionalidad de dicho botón, también en función de si está o no fuera del navegador. Veamos primero el método de inicialización:</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> inicializarBoton()</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">{</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">if</span> (App.Current.IsRunningOutOfBrowser)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        btnAccion.Content = <span style="color: #006080;">"Actualizar"</span>;</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">else</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        <span style="color: #0000ff;">if</span> (App.Current.InstallState == InstallState.NotInstalled)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">            btnAccion.Content = <span style="color: #006080;">"Instalar"</span>;</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        <span style="color: #0000ff;">else</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">            btnAccion.Content = <span style="color: #006080;">"Aplicación instalada"</span>;</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">            btnAccion.IsEnabled = <span style="color: #0000ff;">false</span>;</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        }</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">}</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>El primer if determina si la aplicación está fuera del navegador, de ser así, el botón simplemente muestra “Actualizar”. Si estamos dentro del navegador, entonces debemos determinar si la aplicación está o no instalada, si no es así, el botón despliega el mensaje “Instalar” y si ya está instalada, mostramos “Aplicación Instalada” y deshabilitamos el botón para evitar una posible excepción. Este método lo mandamos a llamar también en el constructor y además agregamos el un manejador del evento clic:</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">public</span> MainPage()</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">{</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #008000;">// Required to initialize variables</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    InitializeComponent();</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    btnAccion.Click += <span style="color: #0000ff;">new</span> RoutedEventHandler(btnAccion_Click);</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    NetworkChange.NetworkAddressChanged += <span style="color: #0000ff;">new</span> NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    ActualizarEstados();</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    inicializarBoton();</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">}</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>Aquí además agregamos un manejador al evento NetworkAddressChanged, con el propósito de actualizar el txtConexion. Y ahora, el código de los manejadores de eventos:</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">void</span> btnAccion_Click(<span style="color: #0000ff;">object</span> sender, RoutedEventArgs e)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">{</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">if</span> (App.Current.IsRunningOutOfBrowser)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        App.Current.CheckAndDownloadUpdateCompleted += <span style="color: #0000ff;">new</span> CheckAndDownloadUpdateCompletedEventHandler(Current_CheckAndDownloadUpdateCompleted);</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        App.Current.CheckAndDownloadUpdateAsync();</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">else</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        App.Current.Install();</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">}</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">void</span> Current_CheckAndDownloadUpdateCompleted(<span style="color: #0000ff;">object</span> sender, CheckAndDownloadUpdateCompletedEventArgs e)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">{</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">if</span> (e.UpdateAvailable)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        MessageBox.Show(<span style="color: #006080;">"La applicación ha sido actualizada, por favor reinicia"</span>);</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">else</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    {</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        MessageBox.Show(<span style="color: #006080;">"No hay actualizaciones disponibles"</span>);</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    }</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">}</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">void</span> NetworkChange_NetworkAddressChanged(<span style="color: #0000ff;">object</span> sender, EventArgs e)</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">{</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    cambiaEstado(txtConexion, NetworkInterface.GetIsNetworkAvailable());</pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">}</pre>
<p><!--CRLF--></p>
</div>
</div>
<p>Si la aplicación está dentro del navedador (código en el bloque else) llamamos al método Install(). Cabe mencionar que este método solo funciona cuando es causado por una acción del usuario, si ustedes lo ponen en el constructor por ejemplo, no funcionará. Si la aplicación ya se encuentra fuera del navegador, entonces procedemos a checar si hay actualizaciones disponibles. Primero añadimos un manejador al evento CheckAndDownloadUpdateCompleted y después mandamos a llamar CheckAndDownloadUpdateAsync(). Éste método va y revisa si hay actualizaciones, si las hay las descarga y las instala cuando la aplicación es reiniciada.</p>
<p>En el manejador del evento de CheckAndDownloadUpdateCompleted revisamos nuestro parámetro de tipo CheckAndDownloadUpdateCompletedEventArgs para ver si hay una actualización disponible. Si la hay mostramos un cuadro de dialogo pidiendo al usuario que reinicie para que se instale la nueva versión.</p>
<p>Por cuestiones de ilustración, este demo tiene la funcionalidad de revisar actualizaciones incluída en una acción de un botón. En una aplicación de verdad, quizá sería prudente hacerlo en el constructor de nuestra clase App por ejemplo.</p>
<p>Finalmente el manejador de NetworkAddressChanged simplemente tiene que mandar a llamar a nuestro primer método para revisar si la conexión está disponible.</p>
<p>¡Nuestra aplicación está casi lista! Solo nos queda habilitarla para instalarla fuera del navegador. Para esto nos vamos a las propiedades de nuestro proyecto, nos aseguramos de que <strong><em>Enable running application out of the browser </em></strong>y damos clic en el botón <strong><em>Out-of-Browser Settings</em></strong>:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image61.png" rel="lightbox[328]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image6_thumb.png" border="0" alt="image" width="640" height="464" /></a></p>
<p>Aparecerá un cuadro de dialogo donde podemos definir distintas cosas:</p>
<ul>
<li><span style="background-color: #ffffff;"><strong>Window Title:</strong> El título de la ventana de la aplicación</span></li>
<li><span style="background-color: #ffffff;"><strong>Width y Heigh:</strong> Ancho y Alto de la ventana</span></li>
<li><span style="background-color: #ffffff;"><strong>Shortcut name:</strong> Nombre que llevará el acceso directo</span></li>
<li><span style="background-color: #ffffff;"><strong>Download description: </strong>Texto que se mostrará en un tooltip al posicionar el cursor sobre el acceso directo de la aplicación.</span></li>
<li><span style="background-color: #ffffff;"><strong>Icons:</strong> Imágenes que harán de ícono de la aplicación (deben ser parte del proyecto de la aplicación de Silverlight)</span></li>
</ul>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image8.png" rel="lightbox[328]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border-width: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb8.png" border="0" alt="image" width="509" height="517" /></a></p>
<p>Una vez que llenamos la información que queremos se genera un arhivo xml (dentro de la carpeta de propiedades del proyecto) llamado OutOfBrowserSettings.xml, el cúal es muy sencillo y hasta podemos editarlo manualmente (aunque el cuadro de dialogo es más cómodo).</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">OutOfBrowserSettings</span> <span style="color: #ff0000;">ShortName</span><span style="color: #0000ff;">="OOB Demo"</span> <span style="color: #ff0000;">EnableGPUAcceleration</span><span style="color: #0000ff;">="False"</span> <span style="color: #ff0000;">ShowInstallMenuItem</span><span style="color: #0000ff;">="True"</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">  <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">OutOfBrowserSettings.Blurb</span><span style="color: #0000ff;">&gt;</span>Demo de aplicación fuera del navegador. JAMolina.com<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">OutOfBrowserSettings.Blurb</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">  <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">OutOfBrowserSettings.WindowSettings</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">WindowSettings</span> <span style="color: #ff0000;">Title</span><span style="color: #0000ff;">="OOB Demo"</span> <span style="color: #ff0000;">Height</span><span style="color: #0000ff;">="250"</span> <span style="color: #ff0000;">Width</span><span style="color: #0000ff;">="300"</span> <span style="color: #0000ff;">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">  <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">OutOfBrowserSettings.WindowSettings</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">  <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">OutOfBrowserSettings.Icons</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Icon</span> <span style="color: #ff0000;">Size</span><span style="color: #0000ff;">="16,16"</span><span style="color: #0000ff;">&gt;</span>Icons/Logo16.png<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Icon</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Icon</span> <span style="color: #ff0000;">Size</span><span style="color: #0000ff;">="32,32"</span><span style="color: #0000ff;">&gt;</span>Icons/Logo32.png<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Icon</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Icon</span> <span style="color: #ff0000;">Size</span><span style="color: #0000ff;">="48,48"</span><span style="color: #0000ff;">&gt;</span>Icons/Logo48.png<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Icon</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Icon</span> <span style="color: #ff0000;">Size</span><span style="color: #0000ff;">="128,128"</span><span style="color: #0000ff;">&gt;</span>Icons/Logo128.png<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Icon</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">  <span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">OutOfBrowserSettings.Icons</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">OutOfBrowserSettings</span><span style="color: #0000ff;">&gt;</span></pre>
<p><!--CRLF--></p>
</div>
</div>
<p>¡Listo! Nuestra aplicación está lista. Para probar la funcionalidad de actualización pueden barjarse el proyecto para correrla localmente, instalarla y luego modificar algún valor (por ejemplo, algún valor del XAML de la interfaz), compilan y abren la aplicación previamente instalada para probar la actualización.</p>
<p>El resto de la funcionalidad puede ser probada con el demo que pueden encontrar <a href="http://demos.jamolina.com/OOBDemo/" target="_blank">aquí</a>. El código fuente lo pueden descargar de <a href="http://jamolina.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=32850" target="_blank">aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F09%2Fapplicaciones-fuera-del-navegador%2F&amp;linkname=Applicaciones%20fuera%20del%20navegador" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/09/applicaciones-fuera-del-navegador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/09/applicaciones-fuera-del-navegador/</feedburner:origLink></item>
		<item>
		<title>Tip: Arreglando tu XAML</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/CXrGYMxHw2w/</link>
		<comments>http://jamolina.com/index.php/2009/09/tip-arreglando-tu-xaml/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 16:45:02 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/09/tip-arreglando-tu-xaml/</guid>
		<description><![CDATA[Una de las cosas que más me frustraba de programar en Silverlight era lidiar con el XAML. Y no me refiero a escribirlo, sino ordenarlo. Un tag con muchas propiedades puede convertirse en algo muy feo y difícil de analizar cuando estas buscando errores o una propiedad en particular. Leyendo o viendo un video de [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que más me frustraba de programar en Silverlight era lidiar con el XAML. Y no me refiero a escribirlo, sino ordenarlo. Un tag con muchas propiedades puede convertirse en algo muy feo y difícil de analizar cuando estas buscando errores o una propiedad en particular.</p>
<p><span id="more-314"></span></p>
<p>Leyendo o viendo un video de <a href="http://silverlight.net/blogs/jesseliberty/default.aspx" target="_blank">Jesse Liberty</a> (lo siento, no recuerdo donde fué) descubrí una opción fantástica dentro de Visual Studio. Para activarla pueden entrar a <em><strong>Tools –&gt; Options</strong></em> (Lo siento, solo tengo el VS en inglés).</p>
<p>Una vez dentro bajan por las siguientes categorías: <strong><em>Text Editor –&gt; XAML –&gt; Formatting –&gt; Spacing</em></strong> y seleccionan la opción <strong><em>Position each attribute on a separate line</em></strong>:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image.png" rel="lightbox[314]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb.png" border="0" alt="image" width="640" height="378" /></a></p>
<p>Además, pueden eligir cuando quieren que el auto-formato se active:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image1.png" rel="lightbox[314]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb1.png" border="0" alt="image" width="633" height="377" /></a></p>
<p>Para XAML existente pueden usar la opción de copiar y pegar todo el código y el IDE se encargará de darle el formato deseado, o pueden usar la herramienta de formato incluída en la barra <strong><em>HTML Source Editing</em></strong>:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image2.png" rel="lightbox[314]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb2.png" border="0" alt="image" width="402" height="66" /></a></p>
<p>De esta forma podemos cambiar algo como esto:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image3.png" rel="lightbox[314]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb3.png" border="0" alt="image" width="937" height="364" /></a></p>
<p>A algo como esto:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/09/image4.png" rel="lightbox[314]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/09/image_thumb4.png" border="0" alt="image" width="953" height="500" /></a></p>
<p>¿Más leible no creen?</p>
<p>Espero que les sea de utilidad.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F09%2Ftip-arreglando-tu-xaml%2F&amp;linkname=Tip%3A%20Arreglando%20tu%20XAML" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/09/tip-arreglando-tu-xaml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/09/tip-arreglando-tu-xaml/</feedburner:origLink></item>
		<item>
		<title>Usando el control MediaPlayer para mostrar videos de YouTube</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/FGQ9CSOt_yM/</link>
		<comments>http://jamolina.com/index.php/2009/08/usando-el-control-mediaplayer-para-mostrar-videos-de-youtube/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 23:31:40 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[MediaPlayer]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/08/usando-el-control-mediaplayer-para-mostrar-videos-de-youtube/</guid>
		<description><![CDATA[Santiago Leguiza ya nos mostró platicó un poco sobre el control MediaPlayer. Algo interesante de este control es que nos permite mostrar videos en alta definición (HD) y de fuentes como YouTube. Para lograr esto lo primero que necesitamos es la dirección del video (ojo, no de la página donde esta el video). YouTube guarda [...]]]></description>
			<content:encoded><![CDATA[<p>Santiago Leguiza ya nos mostró platicó un poco sobre <a href="http://blogs.ligasilverlight.com/?p=473" target="_blank">el control MediaPlayer</a>. Algo interesante de este control es que nos permite mostrar videos en alta definición (HD) y de fuentes como YouTube.</p>
<p><span id="more-302"></span></p>
<p>Para lograr esto lo primero que necesitamos es la dirección del video (ojo, no de la página donde esta el video). YouTube guarda distintas versiones del mismo video, incluyendo algunas versiones en HD.</p>
<p>Para obtener una dirección de un video de YouTube podemos instalar el popular plugin para FireFox llamado <a href="https://addons.mozilla.org/en-US/firefox/addon/748" target="_blank">GreaseMonkey</a>, después descargamos el script para este plugin llamado <a href="http://userscripts.org/scripts/show/31864" target="_blank">YouTube HD Ultimate</a>. Este script carga automáticamente la versión HD de un video cuando está disponible. Además nos muestra las ligas de las diferentes versiones del video.</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/08/image1.png" rel="lightbox[302]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/08/image_thumb1.png" border="0" alt="image" width="799" height="297" /></a></p>
<p>Nosotros vamos a escoger la versión “hd mp4”, así que damos clic derecho y elegimos copiar e url destino. En este caso:</p>
<p><a title="http://www.youtube.com/get_video?video_id=IClBpch9vmM&amp;t=vjVQa1PpcFPq3EX07r_nTWsOLK6onBcN-RrZbXR6KuU%3D&amp;fmt=22" href="http://www.youtube.com/get_video?video_id=IClBpch9vmM&amp;t=vjVQa1PpcFPq3EX07r_nTWsOLK6onBcN-RrZbXR6KuU%3D&amp;fmt=22">http://www.youtube.com/get_video?video_id=IClBpch9vmM&amp;t=vjVQa1PpcFPq3EX07r_nTWsOLK6onBcN-RrZbXR6KuU%3D&amp;fmt=22</a></p>
<p>Ahora bien, nos vamos a Expression Blend y colocamos un control MediaPlayer en nuestra applicación (Recuerden que tenemos que tener instalado Expression Encoder para que este control aparezca).</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/08/image2.png" rel="lightbox[302]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/08/image_thumb2.png" border="0" alt="image" width="1044" height="659" /></a></p>
<p>Después nos vamos al panel de propiedades y en la sección de Media creamos un nuevo Playlist.</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/08/image3.png" rel="lightbox[302]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/08/image_thumb3.png" border="0" alt="image" width="274" height="643" /></a></p>
<p>Una vez, creado el Playlist damos clic en el botón de la colección de elementos (mostrado arriba). En la ventana de edición de elementos elegimos Agregar Otro Elemento y al elemento nuevo solo tenemos que definir su propiedad MediaSource con la dirección del video.</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/08/image4.png" rel="lightbox[302]"><img style="display: block; float: none; margin-left: auto; margin-right: auto; border: 0px;" title="image" src="http://jamolina.com/wp-content/uploads/2009/08/image_thumb4.png" border="0" alt="image" width="595" height="595" /></a></p>
<p>¡Listo! Solo nos queda presionar F5 para ejecutar nuestra aplicación y distrutar de nuestro video de YouTube HD desde Silverlight.</p>
<p>Pueden descargarse el proyecto <a href="http://jamolina.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=31859" target="_blank">aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F08%2Fusando-el-control-mediaplayer-para-mostrar-videos-de-youtube%2F&amp;linkname=Usando%20el%20control%20MediaPlayer%20para%20mostrar%20videos%20de%20YouTube" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/08/usando-el-control-mediaplayer-para-mostrar-videos-de-youtube/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/08/usando-el-control-mediaplayer-para-mostrar-videos-de-youtube/</feedburner:origLink></item>
		<item>
		<title>Cambios</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/y6zkG6CJ_b8/</link>
		<comments>http://jamolina.com/index.php/2009/08/bienvenido/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 20:56:05 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Cambios]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/08/bienvenido/</guid>
		<description><![CDATA[A petición popular (de 1 persona), decidí separar dividir mi blog en uno personal y otro profesional (que es este que estan viendo). Así que para no mezclar las cosas, dejamos este blog para todo lo relacionado a programación (en especial .NET y Silverlight) y el otro será para todo lo relacionado con música, humor, [...]]]></description>
			<content:encoded><![CDATA[<p>A petición popular (de 1 persona), decidí separar dividir mi blog en uno <a href="http://turok.jamolina.com/" target="_blank">personal</a> y otro profesional (que es este que estan viendo). Así que para no mezclar las cosas, dejamos este blog para todo lo relacionado a programación (en especial .NET y Silverlight) y el otro será para todo lo relacionado con música, humor, noticias, etc.</p>
<p><span id="more-292"></span></p>
<p>No olviden dejar sus comentarios. Por su atención, ¡Gracias!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F08%2Fbienvenido%2F&amp;linkname=Cambios" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/08/bienvenido/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/08/bienvenido/</feedburner:origLink></item>
		<item>
		<title>Silverlight Toolkit: GridSplitter</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/MzIrjWzez-s/</link>
		<comments>http://jamolina.com/index.php/2009/08/silverlight-toolkit-gridsplitter-2/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 19:08:57 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[GridSplitter]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/08/silverlight-toolkit-gridsplitter-2/</guid>
		<description><![CDATA[Seguimos con esta serie de posts acerca del Silverlight Toolkit. En esta ocasión veremos el GridSplitter, un control muy útil al momento de diseñar interfaces personalizables en nuestra aplicación de Silverlight. Propiedades PreviewStyle – Maneja el estilo usado para la vista previa de los cambios ShowsPreview – Indica si se mostrará una vista previa a [...]]]></description>
			<content:encoded><![CDATA[<p>Seguimos con esta serie de posts acerca del <a href="http://jamolina.com/index.php/tag/silverlight-toolkit/" target="_blank">Silverlight Toolkit</a>. En esta ocasión veremos el <a href="http://msdn.microsoft.com/es-mx/library/system.windows.controls.gridsplitter%28VS.95%29.aspx" target="_blank">GridSplitter</a>, un control muy útil al momento de diseñar interfaces personalizables en nuestra aplicación de Silverlight.</p>
<p><span id="more-287"></span></p>
<p><strong>Propiedades</strong></p>
<ul>
<li><strong>PreviewStyle – </strong>Maneja el estilo usado para la vista previa de los cambios</li>
<li><strong>ShowsPreview</strong> – Indica si se mostrará una vista previa a los cambios</li>
</ul>
<p>El GridSplitter se coloca en cualquier celda de un Grid y dependiendo de los valores que asignemos a sus propiedades <strong><em>HorizontalAlignment</em></strong> y <strong><em>VerticalAlignment</em></strong> es la forma en que se comportará:</p>
<table border="1" cellspacing="0" cellpadding="2" width="588">
<tbody>
<tr>
<td width="133" valign="top"><strong>HorizontalAlignment</strong></td>
<td width="133" valign="top"><strong>VerticalAlignment</strong></td>
<td width="320" valign="top"><strong>Resultado</strong></td>
</tr>
<tr>
<td width="133" valign="top">Stretch</td>
<td width="133" valign="top">Otra</td>
<td width="320" valign="top">Redimensiona filas</td>
</tr>
<tr>
<td width="133" valign="top">Otra</td>
<td width="133" valign="top">Stretch</td>
<td width="320" valign="top">Redimensiona columnas</td>
</tr>
<tr>
<td width="133" valign="top">Stretch</td>
<td width="133" valign="top">Stretch</td>
<td width="320" valign="top">Redimensiona columnas si <strong><em>ActualHeight</em></strong> es mayor o igual que <strong><em>ActualWidth</em></strong>. De otra forma, redimensiona filas.</td>
</tr>
</tbody>
</table>
<p>Para usar este control necesitamos por lo menos dos controles Grid. En este ejemplo vamos a construir un layout de una aplicación con sus paneles de tamaño personalizable:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/08/image.png" rel="lightbox[287]"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" src="http://jamolina.com/wp-content/uploads/2009/08/image_thumb.png" border="0" alt="image" width="635" height="480" /></a></p>
<p>En este caso, solo usaremos ShowsPreview en el panel inferior del centro (el amarillo). Como siempre, debemos comenzar por agregar la referencia de System.Windows.Controls a nuestro proyecto y luego la agregamos a nuestro MainPage.xaml:</p>
<div id="codeSnippetWrapper" style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 102.57%; font-family: 'Courier New',courier,monospace; direction: ltr; height: 38px; max-height: 200px; font-size: 8pt; cursor: text;">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 98.39%; font-family: 'Courier New',courier,monospace; direction: ltr; height: 20px; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"> <span style="color: #ff0000">xmlns:controls</span><span style="color: #0000ff">="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"</span></pre>
<p><!--CRLF--></div>
</div>
<p>Después procedemos a definir nuestras columnas y filas para crear el layout mostrado en la imagen de arriba:</p>
<div id="codeSnippetWrapper">
<div id="codeSnippet" style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"><span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="LayoutRoot"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid.ColumnDefinitions</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">ColumnDefinition</span> <span style="color: #ff0000">Width</span><span style="color: #0000ff">="0.208*"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">ColumnDefinition</span> <span style="color: #ff0000">Width</span><span style="color: #0000ff">="0.578*"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">ColumnDefinition</span> <span style="color: #ff0000">Width</span><span style="color: #0000ff">="0.214*"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">      <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid.ColumnDefinitions</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">Canvas</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="panelIzquierdo"</span> <span style="color: #ff0000">Background</span><span style="color: #0000ff">="#FF0E3EA3"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">Canvas</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="panelDerecho"</span> <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="2"</span> <span style="color: #ff0000">Background</span><span style="color: #0000ff">="#FFC11B1B"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">controls:GridSplitter</span> <span style="color: #ff0000">Width</span><span style="color: #0000ff">="10"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="0"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Stretch"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">HorizontalAlignment</span><span style="color: #0000ff">="Right"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">Margin</span><span style="color: #0000ff">="0,0,-5,0"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">Background</span><span style="color: #0000ff">="Transparent"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">controls:GridSplitter</span> <span style="color: #ff0000">Width</span><span style="color: #0000ff">="10"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="2"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Stretch"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">HorizontalAlignment</span><span style="color: #0000ff">="Left"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">Margin</span><span style="color: #0000ff">="-5,0,0,0"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                             <span style="color: #ff0000">Background</span><span style="color: #0000ff">="Transparent"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">      <span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="panelCentral"</span> <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="1"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">Grid.RowDefinitions</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">              <span style="color: #0000ff">&lt;</span><span style="color: #800000">RowDefinition</span> <span style="color: #ff0000">Height</span><span style="color: #0000ff">="0.179*"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">              <span style="color: #0000ff">&lt;</span><span style="color: #800000">RowDefinition</span> <span style="color: #ff0000">Height</span><span style="color: #0000ff">="0.652*"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">              <span style="color: #0000ff">&lt;</span><span style="color: #800000">RowDefinition</span> <span style="color: #ff0000">Height</span><span style="color: #0000ff">="0.169*"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid.RowDefinitions</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">Canvas</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="panelCentralSuperior"</span> <span style="color: #ff0000">Background</span><span style="color: #0000ff">="#FF24C504"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">Canvas</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="panelCentralInferior"</span> <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="2"</span> <span style="color: #ff0000">Background</span><span style="color: #0000ff">="#FFB1DA00"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">Canvas</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="panelCentralCentral"</span> <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="1"</span> <span style="color: #ff0000">Background</span><span style="color: #0000ff">="#FFD2A819"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">controls:GridSplitter</span> <span style="color: #ff0000">Height</span><span style="color: #0000ff">="10"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="1"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">Margin</span><span style="color: #0000ff">="0,-5,0,0"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Top"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">HorizontalAlignment</span><span style="color: #0000ff">="Stretch"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">Background</span><span style="color: #0000ff">="Transparent"</span> <span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">controls:GridSplitter</span> <span style="color: #ff0000">Height</span><span style="color: #0000ff">="10"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="2"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Top"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">HorizontalAlignment</span><span style="color: #0000ff">="Stretch"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">Background</span><span style="color: #0000ff">="Transparent"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">Margin</span><span style="color: #0000ff">="0,-5,0,0"</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">                                 <span style="color: #ff0000">ShowsPreview</span><span style="color: #0000ff">="True"</span><span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">        <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Grid</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></div>
</div>
<p>Podemos ver como el primer GridSplitter se coloca en la primera celda del grid principal, ahí le indicamos que se alinea a la derecha horizontalmente y que abarque todo su espacio verticalmente, lo que provoca que el usuario pueda redimensionar el espacio de la columna de la izquierda y la central.</p>
<p>Lo mismo pasa con el resto de los separadores. Un caso a notar es el del último GridSplitter, donde usamos ShowsPreview. Cuando tratamos de redimensionar el panel amarillo, observamos una línea horizontal que actúa como vista previa, en vez de cambiarlo en tiempo real como el comportamiento de el resto de los separadores.</p>
<p>Como podemos ver, este control es una gran herramienta para proveer al usuario final una interfaz personalizable de manera sencilla.</p>
<p>Pueden ver el demo en línea <a href="http://demos.jamolina.com/GridSplitterDemo/" target="_blank">aquí</a> o descargarse el proyecto <a href="http://jamolina.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=31393" target="_blank">aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F08%2Fsilverlight-toolkit-gridsplitter-2%2F&amp;linkname=Silverlight%20Toolkit%3A%20GridSplitter" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/08/silverlight-toolkit-gridsplitter-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/08/silverlight-toolkit-gridsplitter-2/</feedburner:origLink></item>
		<item>
		<title>Silverlight Toolkit: DatePicker</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/s9XcVaFi9qg/</link>
		<comments>http://jamolina.com/index.php/2009/07/silverlight-toolkit-datepicker/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 06:01:30 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[DatePicker]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://jamolina.com/?p=277</guid>
		<description><![CDATA[DatePicker es un control conformado de un campo de texto y un calendario. Esto le da al usuario final la flexibilidad de escribir la fecha en el campo de texto o seleccionarla desde un calendario como el del post pasado. De hecho, muchas de las propiedades del DatePicker son para manejar el calendario de la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="The user account must be created as both a local account on the web servers and a domain account which will be giving permissions to the share on the File server" target="_blank">DatePicker</a> es un control conformado de un campo de texto y un calendario. Esto le da al usuario final la flexibilidad de escribir la fecha en el campo de texto o seleccionarla desde un calendario como el del <a href="http://jamolina.com/index.php/2009/07/silverlight-toolkit-calendar/" target="_blank">post pasado</a>. De hecho, muchas de las propiedades del DatePicker son para manejar el calendario de la misma manera en que manejamos el control <a href="http://msdn.microsoft.com/es-mx/library/system.windows.controls.calendar%28VS.95%29.aspx" target="_blank">Calendar</a>.</p>
<p><span id="more-277"></span></p>
<p>Propiedades:</p>
<ul>
<li><strong>BlackoutDates</strong> – Los días en esta colección aparecerán tachados y no podrán ser seleccionados.</li>
<li><strong>DisplayDate</strong> – Indica una fecha que será visible al momento de desplegarse, sin importar la fecha que esté seleccionada actualmente</li>
<li><strong>DisplayDateStart</strong> y <strong>DisplayDateEnd</strong> – Indican el rango de fechas que serán visibles. Cualquier fecha fuera de este rango simplemente no aparecerá en el calendario.</li>
<li><strong>FirstDateOfWee</strong>k – Primer día de la semana en el calendario (Sunday/Monday/Tuesday/Wednesday/Thursday/Friday/Saturday)</li>
<li><strong>IsDropDownOpen – </strong>Indica si el calendario esta abierto</li>
<li><strong>IsTodayHighlighted</strong> – Indica si queremos que el día actual esté resaltado (True/False)</li>
<li><strong>SelectedDate</strong> – Fecha seleccionada</li>
<li><strong>SelectedDateFormat – </strong>Formato de la fecha
<ul>
<li><strong><em>Short – </em></strong>27/07/2009</li>
<li><strong><em>Long -</em></strong> lunes, 27 de julio de 2009</li>
</ul>
</li>
<li><strong>SelectionBackground – </strong>El color de fondo de la fecha seleccionada en el campo de texto</li>
<li><strong>Text – </strong>Contenido del campo de text</li>
</ul>
<p>Eventos:</p>
<ul>
<li><strong>CalendarClosed </strong>– Se dispara cuando el calendario se cierra</li>
<li><strong>CalendarOpened</strong> – Se dispara cuando el calendario se abre</li>
<li><strong>DateValidationError – </strong>Ocurre cuando el valor insertado en el campo de texto no puede ser interpretado como una fecha</li>
<li><strong>SelectedDatesChanged</strong> – Se dispara cuando se cambia de fecha(s)seleccionada(s)</li>
</ul>
<p>Nuevamente, debemos comenzar por agregar la referencia System.Windows.Controls a nuestro proyecto. Además de ponerla en nuestro MainPage.xaml:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; height: 30px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #800000">UserControl</span> <span style="color: #ff0000">xmlns:controls</span><span style="color: #0000ff">="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"</span></pre>
<p><!--CRLF--></div>
</div>
<p>Para ejemplificar las distintas propiedades y eventos del DatePicker, vamos a contruir un pequeño control que nos permita escoger dos fechas para reservar un boleto de avión. Primero, usamos Blend 3 para hace rápidamente una pequeña interfaz de usuario:</p>
<p><a href="http://jamolina.com/wp-content/uploads/2009/07/image1.png" rel="lightbox[277]"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" src="http://jamolina.com/wp-content/uploads/2009/07/image_thumb1.png" border="0" alt="image" width="653" height="491" /></a></p>
<p>A continuación vamos a escribir toda lafuncionalidad en el archivo de código de nuestro control, en este caso, MainPage.cs. Vamos a bloquear las fechas anteriores al día actual:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000">//Bloqueamos las fechas pasadas</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">fechaSalida.BlackoutDates.AddDatesInPast();</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">fechaRegreso.BlackoutDates.AddDatesInPast();</pre>
<p><!--CRLF--></div>
</div>
<p>Cuando se selecciona la fecha de Salida queremos asegurarnos de que la fecha de Regreso sea igual o mayor. Para esto, agregamos un delegado al evento SelectedDateChanged del DatePick de salida:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">fechaSalida.SelectedDateChanged +=</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">new</span> EventHandler&lt;SelectionChangedEventArgs&gt;(fechaSalida_SelectedDateChanged);</pre>
<p><!--CRLF--></div>
</div>
<p>En dicho delegado reiniciamos el mensaje de error y las blackoutDates a los valores originales. Hacemos una validación para asegurarnos que si la fecha de Regreso ya había sido seleccionada y es menor a la nueva fecha de Salida, será reseteada a nulo. Agregamos a la colección BlackoutDates un rango de fechas entre el día actual y el día de Salida seleccionado menos uno (para no excluirlo). Nótese el uso de GetValueOrDefault() para la propiedad SelectedDate, esto es debido a que dicha propiedad es de tipo DateTime?, osea que es Nullable, y queremos asegurarnos de obtener un valor válido:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; height: 218px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">void</span> fechaSalida_SelectedDateChanged(<span style="color: #0000ff">object</span> sender, SelectionChangedEventArgs e)</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">{</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #008000">//Reiniciamos mensaje de error</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    textoErrorSalida.Text = <span style="color: #006080">""</span>;</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #008000">//Reiniciamos las BlackoutDates</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    fechaRegreso.BlackoutDates.Clear();</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    fechaRegreso.BlackoutDates.AddDatesInPast();</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">if</span> (fechaSalida.SelectedDate &gt; fechaRegreso.SelectedDate)</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        fechaRegreso.SelectedDate = <span style="color: #0000ff">null</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">if</span> (fechaSalida.SelectedDate == DateTime.Today)</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #008000">//No hacemos nada</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">else</span> <span style="color: #008000">//Evitamos que la fecha de regreso pueda ser menor a la de salida</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #008000">//Agregamos las necesarias</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        DateTime fechaSalidaActual = fechaSalida.SelectedDate.GetValueOrDefault();</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        CalendarDateRange rangoBlackout =</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff">new</span> CalendarDateRange(DateTime.Today, fechaSalidaActual.AddDays(-1));</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        fechaRegreso.BlackoutDates.Add(rangoBlackout);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">}</pre>
<p><!--CRLF--></div>
</div>
<p>El siguiente paso es lidiar con fechas no válidas. Debido a que el usuario puede escribir cualquier cosa en el campo de texto, hay probabilidades de que la fecha escrita no pueda ser interpretada como fecha y por tanto debemos lidiar con ello. Agregamos los delegados de la siguiente manera:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">fechaSalida.DateValidationError +=</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">new</span> EventHandler&lt;DatePickerDateValidationErrorEventArgs&gt;(fecha_DateValidationError);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">fechaRegreso.DateValidationError +=</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">new</span> EventHandler&lt;DatePickerDateValidationErrorEventArgs&gt;(fecha_DateValidationError);</pre>
<p><!--CRLF--></div>
</div>
<p>Y lidiamos con errores así:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">void</span> fecha_DateValidationError(<span style="color: #0000ff">object</span> sender, DatePickerDateValidationErrorEventArgs e)</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">{</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    DatePicker pick = (DatePicker)sender;</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">if</span> (pick == fechaSalida)</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        textoErrorSalida.Text = <span style="color: #006080">"La fecha no es válida"</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">else</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        textoErrorRegreso.Text = <span style="color: #006080">"La fecha no es válida"</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">}</pre>
<p><!--CRLF--></div>
</div>
<p>Finalmente, lidiamos con otros detalles como el evento del botón, limpiar errores, etcétera. El resultado final pueden verlo <a href="http://demos.jamolina.com/DatePickerDemo/" target="_blank">aquí</a> y puden bajarse la solución <a href="http://jamolina.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30784" target="_blank">aquí</a>.</p>
<p>Dudas y comentarios, no duden en contactarme.</p>
<p>¡Saludos!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F07%2Fsilverlight-toolkit-datepicker%2F&amp;linkname=Silverlight%20Toolkit%3A%20DatePicker" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/07/silverlight-toolkit-datepicker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/07/silverlight-toolkit-datepicker/</feedburner:origLink></item>
		<item>
		<title>Silverlight Toolkit: Calendar</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/qY3m6A3NaJo/</link>
		<comments>http://jamolina.com/index.php/2009/07/silverlight-toolkit-calendar/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 04:29:05 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Calendar]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/07/silverlight-toolkit-calendar/</guid>
		<description><![CDATA[Muy bien, el primer control en nuestra lista es el Calendar. Este control nos permite darle al usuario una forma visual de seleccionar una fecha. Este control forma parte del Silverlight SDK, pero podemos tener acceso al código fuente al instalar el Toolkit. Lo primero que debemos hacer es agregar a nuestro proyecto la referencia [...]]]></description>
			<content:encoded><![CDATA[<p>Muy bien, el primer control en nuestra lista es el <a href="http://msdn.microsoft.com/es-es/library/system.windows.controls.calendar%28VS.95%29.aspx" target="_blank">Calendar</a>. Este control nos permite darle al usuario una forma visual de seleccionar una fecha.</p>
<p><span id="more-266"></span></p>
<p>Este control forma parte del Silverlight SDK, pero podemos tener acceso al código fuente al instalar el Toolkit. Lo primero que debemos hacer es agregar a nuestro proyecto la referencia del nombre de espacio: System.Windows.Controls. Una vez hecho esto debemos de declarar la referencia dentro de nuestro XAML:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; height: 27px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">xmlns:controls="clr-namespace:<span style="color: #006080">System.Windows.Controls;</span>assembly=System<span style="color: #cc6633">.Windows</span><span style="color: #cc6633">.Controls</span>"</pre>
<p><!--CRLF--></div>
</div>
<p>Aquí una lista de las propiedades y eventos que nos interesan:</p>
<p>Propiedades:</p>
<ul>
<li><strong>BlackoutDates</strong> – Los días en esta colección aparecerán tachados y no podrán ser seleccionados.</li>
<li><strong>DisplayDate</strong> – Indica una fecha que será visible al momento de desplegarse, sin importar la fecha que esté seleccionada actualmente</li>
<li><strong>DisplayDateStart</strong> y <strong>DisplayDateEnd</strong> – Indican el rango de fechas que serán visibles. Cualquier fecha fuera de este rango simplemente no aparecerá en el calendario.</li>
<li><strong>DisplayMode</strong> – Modo en que empieza el calendario
<ul>
<li><em><strong>Month</strong></em> – Despliega un mes con todos sus días</li>
<li><em><strong>Year</strong></em> &#8211; Despliega el año con todos sus meses</li>
<li><strong><em>Decade </em></strong>– Despliega la década con todos sus años</li>
</ul>
</li>
<li><strong>FirstDateOfWee</strong>k – Primer día de la semana en el calendario (Sunday/Monday/Tuesday/Wednesday/Thursday/Friday/Saturday)</li>
<li><strong>IsTodayHighlighted</strong> – Indica si queremos que el día actual esté resaltado (True/False)</li>
<li><strong>SelectedDate</strong> – Última fecha seleccionada</li>
<li><strong>SelectedDates</strong> – Colección de fechas seleccionadas actualmente
<ul>
<li><strong><em>SelectionMode</em> </strong>– Modo de selección de fechas:</li>
<li><strong><em>MultipleRange</em></strong> – Varias fechas salteadas</li>
<li><em><strong>None</strong></em> – No se puede seleccionar ninguna fecha</li>
<li><strong><em>SingleDate </em></strong>– Una sola fecha es seleccionable</li>
<li><strong><em>SingleRange</em></strong> – Un rango de fechas contiguas</li>
</ul>
</li>
</ul>
<p>Eventos:</p>
<ul>
<li><strong>DisplayDateChanged </strong>– Dependiendo del DisplayMode actual, se dispara cuando cambiamos de mes, año ó década.</li>
<li><strong>DisplayModeChanged</strong> – Se dispara cuando cambiamos el DisplayMode</li>
<li><strong>SelectedDatesChanged</strong> – Se dispara cuando se cambia de fecha(s)seleccionada(s)</li>
</ul>
<p>En su forma más sencilla, podemos agregar el calendario con tan solo escribir:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">&lt;</span><span style="color: #800000">controls:Calendar</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="Calendario"</span> <span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></div>
</div>
<p>Así obtenemos un calendario en modo Mes, con la fecha del día de hoy seleccionada, la opción de elegir una sola fecha a la vez, que muestra todas las fechas y en el que todas las fechas son seleccionables.</p>
<p>La propiedad BlackoutDates es de tipo <a href="http://msdn.microsoft.com/es-es/library/system.windows.controls.calendarblackoutdatescollection%28VS.95%29.aspx" target="_blank">CalendarBlackoutDatesCollection</a> nos permite añadir o remover fechas o rangos de fechas no disponibles como cualquier otra ObservableCollection pero además nos permite agregar todas las fechas anteriores al día actual de una manera muy sencilla:</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">calendario.BlackoutDates.AddDatesInPast();</pre>
<p><!--CRLF--></div>
</div>
<p>Vamos a ver un ejemplo sencillo en donde podemos ver las fechas elegidas actualmente en un calendario (noten como las fechas en XAML se escriben en formato MM/DD/AA):</p>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; height: 230px; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">&lt;</span><span style="color: #800000">UserControl</span> <span style="color: #ff0000">x:Class</span><span style="color: #0000ff">="CalendarDemo.MainPage"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             <span style="color: #ff0000">xmlns:x</span><span style="color: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             <span style="color: #ff0000">xmlns:d</span><span style="color: #0000ff">="http://schemas.microsoft.com/expression/blend/2008"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             <span style="color: #ff0000">xmlns:mc</span><span style="color: #0000ff">="http://schemas.openxmlformats.org/markup-compatibility/2006"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             <span style="color: #ff0000">xmlns:controls</span><span style="color: #0000ff">="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">             <span style="color: #ff0000">mc:Ignorable</span><span style="color: #0000ff">="d"</span> <span style="color: #ff0000">d:DesignWidth</span><span style="color: #0000ff">="640"</span> <span style="color: #ff0000">d:DesignHeight</span><span style="color: #0000ff">="480"</span> <span style="color: #ff0000">Background</span><span style="color: #0000ff">="Transparent"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">StackPanel</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="LayoutRoot"</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">TextBlock</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="fechasSeleccionadas"</span> <span style="color: #ff0000">HorizontalAlignment</span><span style="color: #0000ff">="Center"</span> <span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff">&lt;</span><span style="color: #800000">controls:Calendar</span> <span style="color: #ff0000">x:Name</span><span style="color: #0000ff">="calendario"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #ff0000">FirstDayOfWeek</span><span style="color: #0000ff">="Monday"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #ff0000">DisplayDate</span><span style="color: #0000ff">="7/1/2009"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #ff0000">DisplayDateStart</span><span style="color: #0000ff">="1/1/1995"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #ff0000">DisplayDateEnd</span><span style="color: #0000ff">="12/31/2015"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #ff0000">DisplayMode</span><span style="color: #0000ff">="Month"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #ff0000">IsTodayHighlighted</span><span style="color: #0000ff">="True"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #ff0000">SelectionMode</span><span style="color: #0000ff">="MultipleRange"</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                           <span style="color: #0000ff">/&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">StackPanel</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">UserControl</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></div>
</div>
<div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;">
<div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">public</span> <span style="color: #0000ff">partial</span> <span style="color: #0000ff">class</span> MainPage : UserControl</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff">public</span> MainPage()</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            InitializeComponent();</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            calendario.BlackoutDates.AddDatesInPast();</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            calendario.SelectedDatesChanged +=</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                <span style="color: #0000ff">new</span> EventHandler&lt;SelectionChangedEventArgs&gt;(calendario_SelectedDatesChanged);</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<p><!--CRLF--></p>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        <span style="color: #0000ff">void</span> calendario_SelectedDatesChanged(<span style="color: #0000ff">object</span> sender, SelectionChangedEventArgs e)</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            fechasSeleccionadas.Text = <span style="color: #006080">"Fechas seleccionadas: "</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            <span style="color: #0000ff">foreach</span> (DateTime fecha <span style="color: #0000ff">in</span> calendario.SelectedDates)</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            {</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">                fechasSeleccionadas.Text += fecha.ToShortDateString() + <span style="color: #006080">" "</span>;</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">            }</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">        }</pre>
<p><!--CRLF--></p>
<pre style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    }</pre>
<p><!--CRLF--></div>
</div>
<p>Otro punto a notar es que la clase SelectionChangedEventArgs nos permite incluye las colecciones AddedItems y RemovedItems que contiene las fechas que fueron añadidas y removidas al momento de disparse ese evento.</p>
<p>Pueden ver el ejemplo en línea <a href="http://demos.jamolina.com/CalendarDemo/" target="_blank">aquí</a> y pueden descargarse el proyecto <a href="http://jamolina.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30636" target="_blank">aquí</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F07%2Fsilverlight-toolkit-calendar%2F&amp;linkname=Silverlight%20Toolkit%3A%20Calendar" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/07/silverlight-toolkit-calendar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/07/silverlight-toolkit-calendar/</feedburner:origLink></item>
		<item>
		<title>Silverlight Toolkit: Introducción</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/N3gIBPS5RUo/</link>
		<comments>http://jamolina.com/index.php/2009/07/silverlight-toolkit-introduccin/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 04:24:45 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/07/silverlight-toolkit-introduccin/</guid>
		<description><![CDATA[En esta serie de post estaremos revisando lo visto dentro del webcast del pasado martes. Este primer post es una breve descripción de lo que es el Silverlight Toolkit y qué es lo que necesitamos para trabajar con él. Lo primero que hay que hacer es dirigirse a la página del Silverligt Toolkit. Ahí además [...]]]></description>
			<content:encoded><![CDATA[<p>En esta serie de post estaremos revisando lo visto dentro del webcast del pasado martes. Este primer post es una breve descripción de lo que es el Silverlight Toolkit y qué es lo que necesitamos para trabajar con él.</p>
<p><span id="more-263"></span></p>
<p>Lo primero que hay que hacer es dirigirse a la <a href="http://silverlight.codeplex.com/" target="_blank">página del Silverligt Toolkit</a>. Ahí además de tener la opción descargar tanto la versión más reciente como el código fuente en la sección Downloads, podrán leer de qué es lo que trata el Silverlight Toolkit. Una vez instalado, pueden acceder al código fuente de los controles en una ruta como la siguiente:</p>
<p>C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Toolkit\Jul09\Source</p>
<p>Además dentro del folder hermano “Samples” pueden consultar un demo interactivo, el cuál también está disponible <a href="http://silverlight.net/samples/sl3/toolkitcontrolsamples/run/default.html" target="_blank">aquí</a>.</p>
<p>La idea detrás de este proyecto es permitir que la misma comunidad de desarrolladores tenga una forma de dar retroalimentación de los controles y así darle forma al SDK de Silverlight.</p>
<p>Así que ¡Comencemos!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F07%2Fsilverlight-toolkit-introduccin%2F&amp;linkname=Silverlight%20Toolkit%3A%20Introducci%C3%B3n" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/07/silverlight-toolkit-introduccin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/07/silverlight-toolkit-introduccin/</feedburner:origLink></item>
		<item>
		<title>Recordatorio: Webcast: Silverlight 3 Toolkit</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/ZG9ae5GfE_U/</link>
		<comments>http://jamolina.com/index.php/2009/07/recordatorio-webcast-silverlight-3-toolkit/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 05:42:30 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Webcast]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/07/recordatorio-webcast-silverlight-3-toolkit/</guid>
		<description><![CDATA[Este post es para recordarles que el día de hoy 21 de Julio del 2009 a las 7pm será la siguiente reunión virtual de La Liga Silverlight en donde un servidor les platicará sobre algunos controles del Silverlight 3 Toolkit. Pueden registrarse aquí. ¡Hasta pronto!]]></description>
			<content:encoded><![CDATA[<p><a href="http://silverlight.codeplex.com/"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://jamolina.com/wp-content/uploads/2009/07/image2.png" width="204" height="55" /></a> </p>
<p><span id="more-260"></span></p>
<p>Este post es para recordarles que el día de hoy 21 de Julio del 2009 a las 7pm será la siguiente reunión virtual de <a href="http://blogs.ligasilverlight.com/" target="_blank">La Liga Silverlight</a> en donde un servidor les platicará sobre algunos controles del Silverlight 3 Toolkit.</p>
<p>Pueden registrarse <a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032417692&amp;Culture=es-MX">aquí</a>.</p>
<p>¡Hasta pronto!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F07%2Frecordatorio-webcast-silverlight-3-toolkit%2F&amp;linkname=Recordatorio%3A%20Webcast%3A%20Silverlight%203%20Toolkit" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/07/recordatorio-webcast-silverlight-3-toolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/07/recordatorio-webcast-silverlight-3-toolkit/</feedburner:origLink></item>
		<item>
		<title>Estación de metro más cercana con iPhone 3GS</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/hs8yLVOXZyg/</link>
		<comments>http://jamolina.com/index.php/2009/07/estacin-de-metro-ms-cercana-con-iphone-3gs/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 21:57:24 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/07/estacin-de-metro-ms-cercana-con-iphone-3gs/</guid>
		<description><![CDATA[La verdad no me convencía tanto el nuevo iPhone, en sí lo único nuevo es que es más rápido y tiene una especie de brújula, y? Pues es prácticamente todo en cuanto a hardware se refiere. Pero después de ver este video de una aplicación que te encuentra dice ubica cualquier estación de metro en [...]]]></description>
			<content:encoded><![CDATA[<p>La verdad no me convencía tanto el nuevo iPhone, en sí lo único nuevo es que es más rápido y tiene una especie de brújula, y? Pues es prácticamente todo en cuanto a hardware se refiere. Pero después de ver este video de una aplicación que te encuentra dice ubica cualquier estación de metro en la ciudad de Nueva York, me quedé bastante impresionado y emocionado del potencial que algo así tiene.</p>
<p><span id="more-255"></span></p>
<p align="center"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/cH6r2tIaRXU&amp;hl=en&amp;fs=1&amp;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/cH6r2tIaRXU&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F07%2Festacin-de-metro-ms-cercana-con-iphone-3gs%2F&amp;linkname=Estaci%26oacute%3Bn%20de%20metro%20m%26aacute%3Bs%20cercana%20con%20iPhone%203GS" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/07/estacin-de-metro-ms-cercana-con-iphone-3gs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/07/estacin-de-metro-ms-cercana-con-iphone-3gs/</feedburner:origLink></item>
		<item>
		<title>Web Cast: Silverlight 3 Toolkit</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/pL63l7LyRi0/</link>
		<comments>http://jamolina.com/index.php/2009/07/web-cast-silverlight-3-toolkit/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 19:23:00 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Webcast]]></category>

		<guid isPermaLink="false">http://jamolina.com/index.php/2009/07/web-cast-silverlight-3-toolkit/</guid>
		<description><![CDATA[Están todos coordialmente invitados a la siguiente reunión virtual de La Liga Silverlight en donde un servidor platicará acerca del Silverlight 3 Toolkit.&#160; Si quieren saber cómo extender sus aplicaciones de Silverlight por medio de controles bastante interesantes y sobre todo… de código fuente abierto este Web Cast es para ustedes! Tema: Silverlight 3 Toolkit [...]]]></description>
			<content:encoded><![CDATA[<p>Están todos coordialmente invitados a la siguiente reunión virtual de <a href="http://blogs.ligasilverlight.com/" target="_blank">La Liga Silverlight</a> en donde un servidor platicará acerca del <a href="http://www.codeplex.com/Silverlight">Silverlight 3 Toolkit</a>.&#160; Si quieren saber cómo extender sus aplicaciones de Silverlight por medio de controles bastante interesantes y sobre todo… de código fuente abierto este Web Cast es para ustedes!</p>
<p><span id="more-254"></span></p>
<h4>Tema: Silverlight 3 Toolkit</h4>
<p>21 de Julio</p>
<p>7:00pm (-06:00 GTM)</p>
<p>Expositor: <a href="http://jamolina.com">Arturo Molina</a></p>
<p><a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032417692&amp;Culture=es-MX">El registro está abierto aquí</a></p>
<p>Los esperamos!</p>
<p>Próximos Web Casts:</p>
<ul>
<li><a href="http://rdiazconcha.com/?p=292" target="_blank">Serie de 5 Web Casts: Silverlight 3 Aquí y Ahora</a><font color="#efefef"> – Rodrigo Diaz       <br />Lunes 13 de Julio a Viernes 17 de Julio. 7:00pm a 8:00pm (-06:00 GMT)</font></li>
<li><a href="http://blogs.ligasilverlight.com/?p=318" target="_blank">Web Cast : Construyendo aplicaciones para Twitter con Silverlight 3</a><font color="#efefef"> &#8211; Misael Monterroca       <br />Miércoles 19 de Agosto 2009. 7:00pm (-06:00 GMT)</font></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F07%2Fweb-cast-silverlight-3-toolkit%2F&amp;linkname=Web%20Cast%3A%20Silverlight%203%20Toolkit" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/07/web-cast-silverlight-3-toolkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/07/web-cast-silverlight-3-toolkit/</feedburner:origLink></item>
		<item>
		<title>ScreenCast: Cómo hacer un botón con efecto de gel</title>
		<link>http://feedproxy.google.com/~r/Jamolinacom/~3/tvfb4LUgi8k/</link>
		<comments>http://jamolina.com/index.php/2009/06/screencast-cmo-hacer-un-botn-con-efecto-de-gel/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 05:20:22 +0000</pubDate>
		<dc:creator>Arturo Molina</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Blend]]></category>
		<category><![CDATA[Button]]></category>

		<guid isPermaLink="false">http://blogs.ligasilverlight.com/?p=241</guid>
		<description />
			<content:encoded><![CDATA[<p><object id="stVU5QQkBIR11ZRF9YXlNQVFdR" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="flashvars" value="video=stVU5QQkBIR11ZRF9YXlNQVFdR" /><param name="src" value="http://www.screentoaster.com/swf/STPlayer.swf" /><param name="allowfullscreen" value="true" /><embed id="stVU5QQkBIR11ZRF9YXlNQVFdR" type="application/x-shockwave-flash" width="425" height="344" src="http://www.screentoaster.com/swf/STPlayer.swf" flashvars="video=stVU5QQkBIR11ZRF9YXlNQVFdR" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fjamolina.com%2Findex.php%2F2009%2F06%2Fscreencast-cmo-hacer-un-botn-con-efecto-de-gel%2F&amp;linkname=ScreenCast%3A%20C%26%23243%3Bmo%20hacer%20un%20bot%26%23243%3Bn%20con%20efecto%20de%20gel" target="_blank"><img src="http://jamolina.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://jamolina.com/index.php/2009/06/screencast-cmo-hacer-un-botn-con-efecto-de-gel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jamolina.com/index.php/2009/06/screencast-cmo-hacer-un-botn-con-efecto-de-gel/</feedburner:origLink></item>
	</channel>
</rss>
