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

<channel>
	<title>Thinking in .NET</title>
	<atom:link href="http://thinkingindotnet.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://thinkingindotnet.wordpress.com</link>
	<description></description>
	<pubDate>Mon, 12 May 2008 20:15:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>es</language>
			<item>
		<title>Professional ASP.NET 3.5 (sólo 16$ en Amazon por unos días)</title>
		<link>http://thinkingindotnet.wordpress.com/2008/05/12/professional-aspnet-35-solo-16-en-amazon-por-unos-dias/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/05/12/professional-aspnet-35-solo-16-en-amazon-por-unos-dias/#comments</comments>
		<pubDate>Mon, 12 May 2008 20:15:34 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ASP .NET]]></category>

		<category><![CDATA[Scott Guthrië]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=179</guid>
		<description><![CDATA[Una de las cosas de las que me gusta estar pendiente es de los precios de los libros en Amazon.com, que nos brinda un punto de estudio para saber en qué están interesados los desarrolladores. Uso el sitio www.TitleZ.com (que está hecho en ASP.NET) para estar al tanto de títulos específicos que quiero ver - [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Una de las cosas de las que me gusta estar pendiente es de los precios de los libros en Amazon.com, que nos brinda un punto de estudio para saber en qué están interesados los desarrolladores. Uso el sitio <a href="http://www.TitleZ.com">www.TitleZ.com</a> (que está hecho en ASP.NET) para estar al tanto de títulos específicos que quiero ver - y me genera un informe que me muestra el precio en tiempo real de las ventas de Amazon, así como el ranking de los últimos 7, 30 y 90 días.<span id="more-179"></span></p>
<p>Esta mañana he ido a ver ese informe y he visto unos de los libros que encabezan mi lista, y estaba apunto de cerrar el informe cuando he visto el libro &#8220;<a href="http://www.amazon.com/gp/product/0470187573/104-4617720-5654313?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0470187573">Professional ASP.NET 3.5: en C# y VB</a>&#8221; de Bill Evjen, Scott Hanselman y Devin Rader. Indicaba que el ranking de ventas estaba alrededor de #95 (de todos los libros de Amazon), lo que significa que es más vendido incluso que Harry Potter (que es mucho más bonito que un libro de tecnología).</p>
<p>De esta manera, Amazon ha ofertado un precio de promoción por un tiempo limitado de unos cuantos libros - y este ha sido uno de los que he seleccionado. Su precio habitual es de 54$, ahora podéis comprarlo por $16.49. No estoy seguro de cuánto va a durar esta promoción - pero si buscáis un libro sobre ASP.NET 3.5 este es uno que posiblemente os gustará:</p>
<p><a href="http://www.amazon.com/gp/product/0470187573/104-4617720-5654313?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0470187573" target="_blank"><img src="http://silverlight1blogpost.s3.amazonaws.com/scotthabook.jpg" alt="" /></a> </p>
<p>Es un gran libro y un gran recurso. Ha estado en la lista de best seller de libros de programación desde que salió en Marzo (entre los 5 primeros), y ha recibido un montón de revisiones (Yo posteé una hace unas semanas en Amazon y le di 5 estrellas).</p>
<p>Si buscáis un buen libro de ASP.NET, aquí tenéis una oportunidad de haceros con una gran obra (y perdón si termina la oferta antes de que leáis esto).</p>
<p>Espero que sirva.</p>
<p>Scott</p>
<p>P.D: Si buscáis otros libros de .NET 3.5 y VS 2008 os recomiendo:  <a href="http://www.amazon.com/gp/product/0596527578/002-5242737-1614454?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0596527578" target="_blank">C# 3.0 In a Nutshell</a>, <a href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1933988169" target="_blank">LINQ in Action</a>, y <a href="http://www.amazon.com/gp/product/1590597893/002-5242737-1614454?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1590597893" target="_blank">Pro LINQ: Language Integrated Query in C# 2008</a> ( todos con 5 estrellas en Amazon).</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/05/06/professional-asp-net-3-5-book-only-16-on-amazon-for-a-short-time.aspx">Artículo original.</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/179/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/179/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=179&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/05/12/professional-aspnet-35-solo-16-en-amazon-por-unos-dias/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/scotthabook.jpg" medium="image" />
	</item>
		<item>
		<title>Enlaces de Abril: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Silverlight</title>
		<link>http://thinkingindotnet.wordpress.com/2008/05/02/enlaces-de-abril-aspnet-aspnet-ajax-aspnet-mvc-silverlight/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/05/02/enlaces-de-abril-aspnet-aspnet-ajax-aspnet-mvc-silverlight/#comments</comments>
		<pubDate>Fri, 02 May 2008 11:07:56 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[ASP .NET]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Enlaces]]></category>

		<category><![CDATA[MVC]]></category>

		<category><![CDATA[Scott Guthrië]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=176</guid>
		<description><![CDATA[Aquí tenéis otra recopilación de enlaces que ha hecho Scott:

ASP.NET

Mostrar el número de usuarios activos en un sitio ASP.NET: Scott Mitchell continua con su serie de post sobre membership, roles y profiles en ASP.NET. En este artículo habla sobre cómo usar las capacidades de Membership de ASP.NET para estimar y mostrar el número de usuarios [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Aquí tenéis otra recopilación de enlaces que ha hecho Scott:</p>
<p><span id="more-176"></span></p>
<p><strong>ASP.NET</strong></p>
<ul>
<li><a href="http://aspnet.4guysfromrolla.com/articles/041608-1.aspx">Mostrar el número de usuarios activos en un sitio ASP.NET:</a> Scott Mitchell continua con su serie de post sobre membership, roles y profiles en ASP.NET. En este artículo habla sobre cómo usar las capacidades de Membership de ASP.NET para estimar y mostrar el número de usuarios que están visitando el sitio actualmente.</li>
<li><a href="http://geekswithblogs.net/frankw/archive/2008/04/27/new-dynamic-data-preview-0423-refresh.aspx">Actualización de ASP.NET Dynamic Data: </a>El equipo de ASP.NET  ha publicado una actualización del nuevo ASP.NET Dynamic Data. Esta actualización tiene muchas mejoras como soporte <a href="http://blogs.msdn.com/brada/archive/2008/04/23/updated-asp-net-dynamic-data-bits-posted.aspx">más claro de urls </a>usando la misma forma que tiene ASP.NET MVC para esto, y mejor soporte para confirmaciones, claves ajenas.</li>
<li><a href="http://www.paraesthesia.com/archive/2008/04/16/asp.net-testing-with-ivonna.aspx">Testing de ASP.NET  con Ivonna:</a> Travis Illig nos muestra un <a href="http://www.sm-art.biz/Ivonna.aspx">nuevo framework de test llamado Ivonna</a> que nos permite hacer test unitarios en formularios web ASP.NET</li>
</ul>
<p><strong>ASP.NET AJAX</strong></p>
<ul>
<li><a href="http://www.nikhilk.net/Ajax-Templates.aspx">Templates para UI en ASP.NET AJAX:</a> Nikhil Kothari del equipo de ASP.NET nos muestra un prototipo de lo que ha estado desarrollando, nos permite crear templates AJAX en el lado del cliente para la interfaz de usuario.</li>
<li><a href="http://mattberseth.com/blog/2008/04/ajaxcontroltoolkit_tabcontaine.html">Galería de temas para el TabContainer de ASP.NET AJAX Control Toolkit:</a> Matt Berseth nos deleita con otro post excelente - en este nos enseña unos cuantos temas que podemos usar para el control TabContainer del ASP.NET AJAX Control Toolkit.</li>
<li><a href="http://weblogs.asp.net/pglavich/archive/2008/04/07/reducing-page-load-times-with-updatepanels-and-timers.aspx">Reducir el tiempo de carga con UpdatePanels y Timers:</a> Paul Glavich nos enseña un truco muy curioso que podemos usar con controles tab para que se cargen dinámicamente en background mejorando así el tiempo de carga percivido.</li>
<li><a href="http://encosia.com/2008/04/16/why-do-aspnet-ajax-page-methods-have-to-be-static/">¿Porqué los métodos de las páginas ASP.NET AJAX tienen que ser estáticos? </a>Dave Ward nos habla sobre los métodos de página ASP.NET AJAX, y nos explica porqué tiene que ser estáticos.</li>
<li><a href="http://weblogs.asp.net/bradvincent/archive/2008/04/28/better-jquery-intellisense-in-vs2008.aspx">Intellisense JQuery en Vs 2008</a>: Brad Vincent nos dice cómo usar el <a href="http://thinkingindotnet.wordpress.com/2008/02/09/vs-2008-web-development-hot-fix-roll-up/">HotFix que sacamos en febrero </a>para tener una experiencia de usuario agradable con el intellisense de JavaScript en VS 2008 cuando usamos la librería de AJAX JQuery.</li>
</ul>
<p><strong>ASP.NET MVC</strong></p>
<ul>
<li><a href="http://www.iridescence.no/Posts/Inversion-of-Control-ASPNET-MVC-and-Unit-Testing.aspx">Inversión del control, ASP.NET MVC y test unitarios:</a> Fredrik Kalseth nos habla sobre los conceptos que hay detrás de la inversión de control (IOC) y cómo podemos usarlo con ASP.NET MVC para aislar dependencias y permitir un mejor test unitario de nuestro código.</li>
<li><a href="http://weblogs.asp.net/stephenwalther/archive/2008/04/27/talks-asp-net-mvc-post-conference-workshop-at-asp-net-connections-orlando.aspx">Charla de Stephen Walther sobre ASP.NET MVC:</a> Stephen Walther ha dado una conferencia de varias horas sobre ASP.NET MVC la semana pasada en ASP.NET Connections. Podéis descargar las presentaciones y las demos gratuitamente. Hechadle un vistado a sus post <a href="http://weblogs.asp.net/stephenwalther/archive/2008/03/19/tdd-test-driven-development-with-visual-studio-2008-unit-tests.aspx">Unit Test con VS 2008 </a>y <a href="http://weblogs.asp.net/stephenwalther/archive/2008/03/22/tdd-introduction-to-rhino-mocks.aspx">TDD with Rhino Mocks</a>.</li>
<li><a href="http://blog.jeremyskinner.me.uk/2008/04/19/testing-action-results-with-aspnet-mvc/">Resultados de acciones de test con ASP.NET MVC:</a> Jeremy Skinner nos habla sobre algunos de los métodos de extensión que ha añadido a MVCContrib que permiten testear acciones de los controladores.</li>
<li><a href="http://www.squaredroot.com/post/2008/04/MVC-Membership-Starter-Kit-1-2.aspx">Starter Kit de MVC Membership:</a> Troy Goode ha publicado una actualización de su starter kit de MVC Membership. Esta versión funciona con la última versión del código de ASP.NET MVC.</li>
</ul>
<p><strong>Silverlight</strong></p>
<ul>
<li><a href="http://blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx">Definiendo Columnas de un DataGrid en tiempo de ejecución con Silverlight: </a>Scott Morrison del equipo de Silverlight habla sobre cómo definir las columnas de un datagrid en tiempo de ejecución. Visitad mi página sobre<a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx"> links de Silverlight </a>para más post sobre DataGrids.</li>
<li><a href="http://scorbs.com/2008/04/05/silverlight-http-networking-stack-part-1-site-of-origin-communication">Pila HTTP de Silverlight </a>(<a href="http://scorbs.com/2008/04/05/silverlight-http-networking-stack-part-1-site-of-origin-communication">Parte 1</a>), (<a href="http://scorbs.com/2008/04/15/silverlight-http-networking-stack-part-2-cross-domain-communication-overview/">Parte 2</a>), (<a href="http://scorbs.com/2008/04/22/silverlight-http-networking-stack-part-3-configuring-a-cross-domain-policy-file/">Parte 3</a>): Karen Corby del equipo de Silverlight nos habla sobre la pila de red de Silverlight 2 y cómo funciona la seguridad multiplataforma.</li>
<li><a href="http://weblogs.asp.net/dwahlin/archive/2008/04/10/pushing-data-to-a-silverlight-client-with-sockets-part-i.aspx">Dar datos a un cliente Silverlight con Sockets (Parte 1)</a> y <a href="http://weblogs.asp.net/dwahlin/archive/2008/04/13/pushing-data-to-a-silverlight-client-with-sockets-part-ii.aspx">(Parte 2)</a>: Dan Wahlin nos muestra cómo implementar un servidor de sockets &#8220;GameStream&#8221;  y cómo conectarnos con un cliente Silverlight usando el soporte de Silverlight 2 para sockets.</li>
<li><a href="http://weblogs.asp.net/dwahlin/archive/2008/04/27/silverlight-the-song.aspx">Silverlight - La cancion:</a> Spike Xavier y Dan Wahlin han publicado otra de sus únicas y especiales canciones. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p>Espero que sirva.</p>
<p>Scott.</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/04/28/april-28th-links-asp-net-asp-net-ajax-asp-net-mvc-silverlight.aspx">Artículo original.</a></p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/176/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/176/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/176/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=176&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/05/02/enlaces-de-abril-aspnet-aspnet-ajax-aspnet-mvc-silverlight/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>
	</item>
		<item>
		<title>Presentaciones de mis charlas de ASP.NET Connections en Orlando</title>
		<link>http://thinkingindotnet.wordpress.com/2008/05/01/presentaciones-de-mis-charlas-de-aspnet-connections-en-orlando/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/05/01/presentaciones-de-mis-charlas-de-aspnet-connections-en-orlando/#comments</comments>
		<pubDate>Thu, 01 May 2008 12:20:07 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[Charlas]]></category>

		<category><![CDATA[MVC]]></category>

		<category><![CDATA[Scott Guthrië]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=175</guid>
		<description><![CDATA[La semana pasada presenté las conferencias ASP.NET Connections en Orlando. Di una sesion general el Lunes y luego dos charlas más ese día. Podéis descargar las siguientes transparencias y ejemplos más abajo.
Sesion General
Las transparencias del keynote las tenéis aquí.
En la charla mostré cómo debugear el código fuente de .NET Framework. Aquí tenéis los pasos que [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>La semana pasada presenté las conferencias <a href="http://www.asp-connections.com/shows/SP2008ASP/default.asp?s=112&amp;refer=">ASP.NET Connections en Orlando</a>. Di una sesion general el Lunes y luego dos charlas más ese día. Podéis descargar las siguientes transparencias y ejemplos más abajo.</p>
<p><strong>Sesion General</strong></p>
<p>Las transparencias del keynote las tenéis <a href="http://www.scottgu.com/blogposts/orlando2008/keynote.zip">aquí</a>.</p>
<p>En la charla mostré cómo debugear el código fuente de .NET Framework. <a href="http://thinkingindotnet.wordpress.com/2008/01/19/ya-esta-disponible-el-codigo-del-net-framework/">Aquí </a>tenéis los pasos que hay que seguir para hacerlo con VS 2008.</p>
<p>También vimos cómo crear un sitio con el nuevo soporte para ASP.NET Dynamic Data - podéis aprender más sobre esto <a href="http://thinkingindotnet.wordpress.com/2008/04/14/disponible-aspnet-dynamic-data/">aquí</a>. Y también vimos cómo usar el nuevo ASP.NET MVC Framework - podéis aprender más sobre él <a href="http://thinkingindotnet.wordpress.com/2008/04/21/actualizacion-del-codigo-de-aspnet-mvc/">aquí</a>.</p>
<p>También vimos el nuevo sitio Hard Rock Memorabilia hecho con Silverlight 2. Podéis probar esa aplicación <a href="http://memorabilia.hardrock.com/">aquí</a>. También podéis aprender más sobre Silverlight con<a href="http://thinkingindotnet.wordpress.com/2008/04/27/tutorial-de-silverlight-en-espanol/"> este tutorial</a>.</p>
<p><strong>Crear aplicaciones .NET con Silverlight</strong></p>
<p>Las presentaciones y las demos de esta charla las tenéis <a href="http://www.scottgu.com/blogposts/orlando2008/silverlight.zip">aquí</a>.</p>
<p>Podéis aprender más de silverlight con <a href="http://thinkingindotnet.wordpress.com/2008/04/27/tutorial-de-silverlight-en-espanol/">este tutorial</a>. Os recomiendo que le hechéis un vistazo a estos dos post <a href="http://thinkingindotnet.wordpress.com/2008/02/24/primer-vistazo-a-silverlight-2/">aqui </a>y <a href="http://thinkingindotnet.wordpress.com/2008/03/03/primer-vistazo-usando-expression-blend-con-silverlight-2/">aquí</a></p>
<p><strong>ASP.NET MVC</strong></p>
<p>Podéis descargar las transparencias y las demos de la charla de ASP.NET MVC desde <a href="http://www.scottgu.com/blogposts/orlando2008/mvc.zip">aquí</a>.</p>
<p>Tenéis más información sobre la última publicación del código de ASP.NET MVC <a href="http://thinkingindotnet.wordpress.com/2008/04/21/actualizacion-del-codigo-de-aspnet-mvc/">aquí</a>. Stephen Walther también a publicado sus transparencias y demos <a href="http://weblogs.asp.net/stephenwalther/archive/2008/04/27/talks-asp-net-mvc-post-conference-workshop-at-asp-net-connections-orlando.aspx">aquí</a>.</p>
<p>Espero que sirva.</p>
<p>Scott.</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/04/27/slides-from-my-asp-net-connections-orlando-talks.aspx">Artículo original</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/175/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/175/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=175&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/05/01/presentaciones-de-mis-charlas-de-aspnet-connections-en-orlando/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>
	</item>
		<item>
		<title>Tutorial de Silverlight en Español</title>
		<link>http://thinkingindotnet.wordpress.com/2008/04/27/tutorial-de-silverlight-en-espanol/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/04/27/tutorial-de-silverlight-en-espanol/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 14:47:30 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[Scott Guthrië]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=174</guid>
		<description><![CDATA[Por fin he terminado de traducir el tutorial que Scott Guthrie  ha hecho de Silverlight
Aquí tenéis los enlaces:
Parte 1: Crear el &#8220;Hola mundo&#8221; con Silverlight 2 y VS 2008
Parte 2: Administracion del Layout
Parte 3: Usar la red para obtener datos y rellenar un datagrid
Parte 4: Uso de estilos para encapsular el Look &#38; Feel
Parte 5: [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Por fin he terminado de traducir el tutorial que Scott Guthrie  ha hecho de Silverlight</p>
<p>Aquí tenéis los enlaces:</p>
<li><a href="http://thinkingindotnet.wordpress.com/2008/03/08/tutorial-de-silverlight-parte1-crear-el-hola-mundo-con-silverlight-2-y-vs-2008/"><span style="color:#0000ff;">Parte 1: Crear el &#8220;Hola mundo&#8221; con Silverlight 2 y VS 2008</span></a></li>
<li><a href="http://thinkingindotnet.wordpress.com/2008/03/18/tutorial-silverlight-parte-2-administracion-de-layout/"><span style="color:#0000ff;">Parte 2: Administracion del Layout</span></a></li>
<li><span style="text-decoration:underline;"><span style="color:#0000ff;"><a href="http://thinkingindotnet.wordpress.com/2008/03/21/tutorial-silverlight-parte-3-usar-la-red-para-obtener-datos-y-rellenar-un-datagrid/">Parte 3: Usar la red para obtener datos y rellenar un datagrid</a></span></span></li>
<li><a href="http://thinkingindotnet.wordpress.com/2008/03/21/tutorial-silverlight-parte-4-uso-de-estilos-para-encapsular-el-look-feel/" target="_blank"><span style="color:#0000ff;">Parte 4: Uso de estilos para encapsular el Look &amp; Feel</span></a></li>
<li><a href="http://thinkingindotnet.wordpress.com/2008/03/22/tutorial-silverlight-parte-5-listbox-y-databinding-para-listar-datos/" target="_blank"><span style="color:#0000ff;">Parte 5: ListBox y DataBinding para listar datos</span></a></li>
<li><a href="http://thinkingindotnet.wordpress.com/2008/04/26/parte-6-user-controls-para-implementar-escenarios-maestro-detalle/" target="_blank"><span style="color:#0000ff;">Parte 6: User Controls para implementar escenarios Maestro/Detalle</span></a></li>
<li><a rel="bookmark" href="http://thinkingindotnet.wordpress.com/2008/04/26/parte-7-templates-de-user-controls-para-personalizar-el-look-feel/"><span style="color:#0000ff;">Parte 7: Templates de User Controls para personalizar el Look &amp; Feel</span></a><span style="color:#0000ff;"> </span></li>
<li><a href="http://thinkingindotnet.wordpress.com/2008/04/27/parte-8-crear-la-version-de-escritorio-con-wpf/" target="_blank"><span style="color:#0000ff;">Parte 8: Crear la versión de escritorio con WPF</span></a></li>
<p>Espero que os sirva.</p>
<p>Juan María.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/174/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/174/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/174/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=174&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/04/27/tutorial-de-silverlight-en-espanol/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>
	</item>
		<item>
		<title>Parte 8: Crear la versión de escritorio con WPF</title>
		<link>http://thinkingindotnet.wordpress.com/2008/04/27/parte-8-crear-la-version-de-escritorio-con-wpf/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/04/27/parte-8-crear-la-version-de-escritorio-con-wpf/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 14:41:47 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[Scott Guthrië]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Wpf]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=173</guid>
		<description><![CDATA[Este es el último de los ocho tutoriales en el que estamos creando un cliente de Digg con la Beta 1 de Silverlight 2. La idea es que estos tutoriales se lean en orden, con el objetivo de explicar los fundamentos de la programación con Silverlight.
Podéis descargar el código completo del cliente Digg del ejemplo aquí
Crear [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Este es el último de los ocho tutoriales en el que estamos creando un cliente de Digg con la Beta 1 de Silverlight 2. La idea es que estos tutoriales se lean en orden, con el objetivo de explicar los fundamentos de la programación con Silverlight.</p>
<p>Podéis descargar el código completo del cliente Digg del ejemplo <a href="http://www.scottgu.com/blogposts/slbeta1apps/diggsample.zip"><span style="color:#aa7d39;">aquí</span></a><span id="more-173"></span></p>
<p><strong>Crear una aplicación de escritorio con WPF</strong></p>
<p>El objetivo con este último tutorial es un poco diferente del de los otros siete. No vamos a usar Silverlight en este post - sino que usaremos WPF y .NET 3.5. Cojeremos el código de la aplicación que estamos creando con Silverlight y lo reutilizaremos como una aplicación de escritorio.</p>
<p>Silverlight viene con un subconjunto compatible de la API del .NET Framework. Uno de los objetivos de esto es permitir a los desarrolladores aprender un mismo modelo de programación que les permita reusar código y contenido rico, tanto para la web como para aplicaciones escritorio.</p>
<p>Aquí tenéis los pasos que he hecho para convertir la aplicación Silverlight que hemos creado (que se ejecuta en un navegador) en una aplicación de escritorio Windows (que no se ejecuta en el navegador).</p>
<p><strong>Paso 1: Crear una nueva aplicación WPF de escritorio</strong></p>
<p>Empezamos creando una nueva aplicación WPF con VS 2008. La llamaremos &#8220;DiggDescktopSample&#8221;:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step122.png" alt="" width="753" height="464" /></p>
<p>Esto creará un proyecto en VS con dos archivos - un App.xaml y un Window.xaml:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step123.png" alt="" width="203" height="217" /></p>
<p><strong>Paso 2: Copiar el código existente en la aplicación WPF</strong></p>
<p>Copiaremos y pegaremos el código que ya tenemos en Silverlight en nuestro nuevo proyecto:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step124.png" alt="" width="181" height="236" /></p>
<p>En la Beta1 esta parte de copiar y pegar es un paso manual - estamos viendo la posibilidad de tener una forma más automática de hacer esto.</p>
<p><strong>Paso 3: Corregir un par de cositas</strong></p>
<p>He tenido que hacer dos cambios para que nuestro código compile:</p>
<p>1) El esquema de Silverlight Beta1 xmlns: la url es diferente de la versión de WPF. He tenido que corregir esto en los archivos XAML que hemos copiado en el proyecto para que apunten al esquema de WPF. Esto es algo que estamos mejorando antes de publicarlo.</p>
<p>2) He tenido que cambiar el control &lt;WaterMarkTextbox&gt; a un &lt;TextBox&gt; y cambiar el control &lt;HyperlinkButton&gt; para que sea un &lt;TextBlock&gt;. Estos dos controles son nuevos en la Beta 1 de Silverlight y no están aún en WPF (los añadiremos en futuras versiones). <strong>No tengo que cambiar </strong>ningún código para que funcione con estos controles, ni siquiera la red, LINQ to XML, ni el código de enlace a la base de datos.</p>
<p>Una vez que hemos hecho estos cambios, el código se compila sin ningún problema.</p>
<p><strong>Paso 4: Hosting de la aplicación en una ventana</strong></p>
<p>Entonces abrí el archivo Windows1.xaml en el proyecto de escritorio (que es la ventana que se carga por defecto cuando arranca la aplicación).</p>
<p>Acutalizé el titulo de la ventana a &#8220;Digg Desktop Version&#8221; y aumenté el Width y el Height de la ventana.</p>
<p>Luego añadí nuestro user control Page.xaml del proyecto de Silverlight como el control raíz de la ventana. Esto hará que sea visible y que se cargue cuando se cargue la ventana. No tengo que cambiar ningún código de la clase Page ni renombrar nada. Como hereda de la clase UserControl puede hostearse dentro de cualquier ventana o control WPF.</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step125.png" alt="" width="580" height="215" /></p>
<p>Lo último que he tenido que cambiar una cosilla debido a que el servidor de la api de Digg detecta cuando un cliente no es un navegador y algunas veces le deniega el acceso (probablemente para evitar scripts automáticos accedan a su servicio). Esto lo resolví a través de una url de proxy (sin cambiar código, sólo un cambio de url).</p>
<p><strong>Paso 5: Ejecutar la aplicación</strong></p>
<p>Ya estamos listos para ejecutar la aplicación de Windows. Funciona todo exactamente igual que con la versión de silverlight:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step126.png" alt="" width="640" height="459" /></p>
<p> Y cuando seleccionamos un elemento de la lista, vemos los detalles:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step127.png" alt="" width="659" height="461" /></p>
<p>Hay un par de diferencias cosméticas entre la versión del navegador y la de escritorio. Esto es porque WPF hereda todos los estilos por defecto (fuentes, colores, scroll bars, etc) basándose en el tema de escritorio del sistema operativo que está seleccionado, mientras que Silverlight tiene un tema por defecto que usamos en todos los sistemas operativos. Si queremos que las versiones de escritorio y la web sean el mismo podemos conseguirlo siendo explícitos en nuestros estilos y en los templates de los controles - de otra manera la versión de escritorio se adaptará al tema del usuario.</p>
<p><strong>Resumen</strong></p>
<p>Pronto tendremos algunas notas y sugerencias de buenas prácticas a la hora de compartir código entre aplicaciones Silverlight y WPF más adelante. Creo que habéis encontrado las características necesarias para crear aplicaciones Silverlight y que es muy sencillo pasarlo a proyectos WPF. También estamos trabajando en que haya una mayor compatibilidad entre este tipo de aplicaciones para que permitir la reutilización de código entre soluciones, controles, contenido y código fácilmente.</p>
<p>Espero que sirva</p>
<p>Scott.</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-8-creating-a-digg-desktop-application-using-wpf.aspx">Artículo original.</a></p>
<p><strong></strong></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/173/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/173/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=173&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/04/27/parte-8-crear-la-version-de-escritorio-con-wpf/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step122.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step123.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step124.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step125.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step126.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step127.png" medium="image" />
	</item>
		<item>
		<title>Parte 7: Templates de User Controls para personalizar el Look &#38; Feel</title>
		<link>http://thinkingindotnet.wordpress.com/2008/04/26/parte-7-templates-de-user-controls-para-personalizar-el-look-feel/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/04/26/parte-7-templates-de-user-controls-para-personalizar-el-look-feel/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 11:54:12 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[Scott Guthrië]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=172</guid>
		<description><![CDATA[Este es el séptimo de ocho tutoriales en el que estamos creando un cliente de Digg con la Beta 1 de Silverlight 2. La idea es que estos tutoriales se lean en orden, con el objetivo de explicar los fundamentos de la programación con Silverlight.
Podéis descargar el código completo del cliente Digg del ejemplo aquí
Cómo [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Este es el séptimo de ocho tutoriales en el que estamos creando un cliente de Digg con la Beta 1 de Silverlight 2. La idea es que estos tutoriales se lean en orden, con el objetivo de explicar los fundamentos de la programación con Silverlight.</p>
<p>Podéis descargar el código completo del cliente Digg del ejemplo <a href="http://www.scottgu.com/blogposts/slbeta1apps/diggsample.zip"><span style="color:#aa7d39;">aquí</span></a><span id="more-172"></span></p>
<p><strong>Cómo personalizar el Look &amp; Feel de Controles</strong></p>
<p>Una de las características más potentes del modelo de programación de WPF y Silverlight es la posibilidad de personalizar el look&amp;feel de los controles que usamos. Esto permite que los desarrolladores y diseñadores se centren en lo que le corresponde a cada uno, permitiendo una flexibilidad increible para crear mejores experiencias de usuario.</p>
<p>En este tutorial veremos varias formas de personalizar los controles, y terminaremos mejorando la interfaz de nuestra aplicación con estas técnicas.</p>
<p><strong>Personalizar el contenido de los controles.</strong></p>
<p>En la primera parte de esta serie de tutoriales añadimos un boton a la página y vimos cómo poner la cadena &#8220;Push Me!&#8221; dentro. Luego escribimos el método Click que se ejecutaría:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step13.png" alt="" width="690" height="43" /></p>
<p>Esto hace que el boton se renderize de la siguiente manera en el navegador:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step109.png" alt="" width="172" height="86" /></p>
<p>Una de las cosas que puede sorprenderos es que el contenido del boton no tiene porqué ser sólo un string. Podemos hacer que la propiedad &#8220;Content&#8221; tenga cualqueir secuencia de controles que queramos.</p>
<p>Por ejemplo, podemos embeber un StackPanel con un &lt;Image&gt; y un &lt;TextBlock&gt;:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step107.png" alt="" width="745" height="249" /></p>
<p>Esto hará que la apariencia del botón en ejecución sea la siguiente. Fijáos que sigue teniendo el mismo comportamiento:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step108.png" alt="" width="473" height="246" /></p>
<p>Podemos usa controles Shape (como una Ellipse) para crear gráficos vectoriales dentro del control:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step21.png" alt="" width="636" height="324" /></p>
<p>Fijáos cómo estamos rellenando el control Ellpise con un RadialGraidentBrush para añadir efectos de luz:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step22.png" alt="" width="571" height="298" /></p>
<p>Podríamos volvernos locos y añadir controles interactivos como un calendario dentro del botón:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step23.png" alt="" width="695" height="211" /></p>
<p>El calendario es totalmente interactivo - los usuarios podrán ir hacia delante y hacia atrás en los meses, seleccionar una fecha, y pulsarlo haciendo que se lance el evento clic:(Nota: no estoy seguro de que esto sea una grata experiencia de usuario - pero nos muestra la flexibilidad que podemos tener).</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step24.png" alt="" width="524" height="463" /></p>
<p>Esto que hemos visto no sólo funciona para el control Boton, sino que funciona con cualquier control que herede de la clase ContentControl.</p>
<p><strong>Personalizando controles con Templates</strong></p>
<p>El modelo de controles de Silverlight y WPF nos permite ir más allá aparte de personalizar el contenido interno de un control. También nos permite reemplazar el arbol de visualización de cualquiera que queramos - mientras mantengamos el comportamiento.</p>
<p>Por ejemplo, digamos que no queremos que nuestros botones tengan una forma de rectángulo, sino que queremos un boton redondo como el siguiente:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step111.png" alt="" width="306" height="248" /></p>
<p>Podemos conseguirlo creando un estilo &#8220;Roundbutton&#8221; en el archivo App.xaml. En el que sobreescribimos la propiedad &#8220;Template&#8221; de los botones, dando un ControlTemplate que reemplace el rectángulo con una elpise y un TextBlock:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step110.png" alt="" width="562" height="457" /></p>
<p>Ahora podemos hacer que un control &lt;Button&gt; use este template :</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step112.png" alt="" width="702" height="51" /></p>
<ul>
<li>Añadir contenido a nuestros templates</li>
</ul>
<p>Os habréis dado cuenta que en el template &#8220;RoundButton&#8221; el tamaño del boton, y el contenido están en el código (siempre dice &#8220;Push Me!&#8221;).</p>
<p>Lo bueno es que tanto WPF como Silvelright nos permiten personalizar esto también. Podemos lograr con la extensión {TemplateBinding <em>ControlProperty</em>} . Esto permite que nuestro template se adapte a las propiedades del control:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step113.png" alt="" width="704" height="503" /></p>
<p>Fijáos que en lugar de añadir un control &lt;TextBlock&gt; para mostrar el contenido, estamos usando el control &lt;ContentPresenter&gt;. Esto nos permitirá que el botón no solo muestre cadenas, sino cualquier contenido que podemos personalizar (como ya hicimos antes).</p>
<p>Podemos usar el estilo anterior en tres botones (cada uno con un contenidos y propiedades diferentes):</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step114.png" alt="" width="814" height="406" /></p>
<p>Se mostrará de la siguiente forma (y si - el calendario se escala y sigue dando soporte a la paginación y la selección de fechas):</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step115.png" alt="" width="576" height="230" /></p>
<p>Si queremos ir más allá podemos añadir animaciones al template (para administrar estados del boton como &#8220;hover&#8221;, &#8220;focus&#8221; y &#8220;pushed&#8221;). Esta capacidad nos permite crear interfaces de usuario y unos escenarios increibles que antes no eran posibles con HTML</p>
<p>Los desarrolladores pueden olvidarse de cómo &#8220;pintar&#8221; los controles en la interfaz de usuario. Pueden programar los eventos de los controles y manipularlos como siempre, y tendrán un diseñador que se encargue de personalizar el look&amp;feel con estilos y templates.</p>
<p><strong>Puliendo nuestra aplicación Digg</strong></p>
<p>Ahora que hemos visto lo básico de cómo se trabaja con los templates, vamos a usarlos en un par de sitios para pulir la interfaz de nuestra aplicación de ejemplo.</p>
<p>Hasta ahora tenemos un lugar obvio en el que nuestra aplicación necesita un poco más de trabajo - El boton &#8220;close&#8221; del user control:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step116.png" alt="" width="714" height="472" /></p>
<p>Es muy sencillo para nosotros (o para un diseñador que trabaje con nosotros) arreglarlo. Podemos añadir un ControlTemlate al estilo del botón en el app.xaml y añadir algunas formas vectoriales para hacerlo más atracivo (nota: un diseñador más competente que yo podría añadir animaciones a las formas vectoriales):</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step118.png" alt="" width="703" height="455" /></p>
<p>Cuando ejecuetmos la aplicación otra vez, el botón se mostrará de la siguiente forma:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step117.png" alt="" width="712" height="474" /></p>
<p>El segundo lugar en el que podemos aplicar esto es en el aspecto del ListBox. Si os fijáis bien, podemos ver que el ListBox en la Beta1 tiene un borde por defecto:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step119.png" alt="" width="526" height="500" /></p>
<p>Podemos cambiarlo con un border algo más ancho personalizando el template del List Box. Aquí tenéis un estilo que hace esto:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step120.png" alt="" width="538" height="385" /></p>
<p>Fijáos cómo hemos eliminado todos los controles de borde del ListBox. Estamos usando un control &lt;ScrollViewer&gt; en Silverlight (que nos permite hacer scroll con cualquier contenido) y le estamos embebiendo un &lt;ItemsPresenter&gt; que renderizará los items del ListBox (usará  el &lt;DataTemplate&gt; que creamos en la Parte 4 del tutorial)</p>
<p>Así es como quedaría:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step121.png" alt="" width="684" height="461" /></p>
<p>Lo increíble es que no hemos tenido que cambiar ni una sola línea de código de nuestra aplicación, ni modificiar el XAML de nuestros controles para hacer que esto funcione. Esta separación entre codigo/diseño permite a un buen programador y diseñador trabajar juntos en aplicaciones Silverlight y WPF. Expression Blend y toda la suite Expression Studio permiten sacarle el máximo partido a estas características.</p>
<p>Traducido por: Juan María Laó Ramos</p>
<p><a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-7-using-control-templates-to-customize-a-control-s-look-and-feel.aspx">Artículo Original.</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/172/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/172/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/172/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=172&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/04/26/parte-7-templates-de-user-controls-para-personalizar-el-look-feel/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step13.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step109.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step107.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step108.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step21.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step22.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step23.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step24.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step111.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step110.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step112.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step113.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step114.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step115.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step116.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step118.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step117.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step119.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step120.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step121.png" medium="image" />
	</item>
		<item>
		<title>Parte 6: User Controls para implementar escenarios Maestro Detalle</title>
		<link>http://thinkingindotnet.wordpress.com/2008/04/26/parte-6-user-controls-para-implementar-escenarios-maestro-detalle/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/04/26/parte-6-user-controls-para-implementar-escenarios-maestro-detalle/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 11:07:31 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[Scott Guthrië]]></category>

		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=171</guid>
		<description><![CDATA[Este es el sexto de ocho tutoriales en el que estamos creando un cliente de Digg con la Beta 1 de Silverlight 2. La idea es que estos tutoriales se lean en orden, con el objetivo de explicar los fundamentos de la programación con Silverlight.
Podéis descargar el código completo del cliente Digg del ejemplo aquí
Comprendiendo [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Este es el sexto de ocho tutoriales en el que estamos creando un cliente de Digg con la Beta 1 de Silverlight 2. La idea es que estos tutoriales se lean en orden, con el objetivo de explicar los fundamentos de la programación con Silverlight.</p>
<p>Podéis descargar el código completo del cliente Digg del ejemplo <a href="http://www.scottgu.com/blogposts/slbeta1apps/diggsample.zip"><span style="color:#aa7d39;">aquí</span></a><span id="more-171"></span></p>
<p><strong>Comprendiendo los User Controls</strong></p>
<p>Uno de los fines principales en el diseño de Silverlight y WPF es permitir a los desarrolladores encapsular la funcionalidad de la interfaz gráfica en user controls reutilizables. Podemos crear controles personalizados heredando de cualquier clase existente Control (tanto de la clase base Control como de TextBox, Button, etc). Otra forma es crear User Controls - que hacen más sencillo el uso del lenguaje XAML, y son más fáciles de implementar.</p>
<p>Para la aplicación que estamos desarrollando, queremos implementar un escenario Maestro/Detalle en el que la aplicación permita a los usuarios buscar, obtener una lista de historias relacionadas con la búsqueda, y permitirles seleccionar una para ver los detalles. Por ejemlpo, si seleccionamos una historia de la lista:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/app1.png" alt="" width="668" height="541" /></p>
<p>Veremos algunos detalles:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/app2.png" alt="" width="667" height="545" /></p>
<p>Vamos a implementar esto creando un user control &#8220;StoryDetailsView&#8221; que mostrará el contenido cuando se seleccione un elemento de nuestro ListBox.</p>
<p><strong>Creación del user control StoryDetailsView</strong></p>
<p>Empezamos haciendo clic derecho en el proyecto DiggSample y seleccionamos &#8220;Add New Item&#8221;. Esto nos mostrará una ventana de diálogo. Seleccionamos el template UserControl y le daremos el nombre &#8220;StoryDetailsView&#8221;</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step88.png" alt="" width="665" height="418" /></p>
<p>De esta forma hemos añadido un User Control con este nombre al proyecto DiggSample:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step89.png" alt="" width="232" height="269" /></p>
<p><strong>Crear un diálogo modal básico con un UserControl</strong></p>
<p>Usaremos este control para mostrar en un diálogo los detalles del elemento seleccionado. Cuando se muestran esos detalles queremos que aparezca encima del contenido de la página, y queremos asegurarnos de que el usuario no puede hacer otras cosas en la página hasta que no cierre esos detalles.</p>
<p>Hay un par de formas de implementar este comportamiento. Para nuestro caso  abrimos el archivo StoryDetailsView.xaml y añadimos el siguiente contenido:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step91.png" alt="" /></p>
<p>El control &lt;Rectangle&gt; está configurado para que ocupe todo el espacio en la pantalla. El color de fondo es un gris transparente (su opacidad es 7.65 como podéis ver). El control &lt;Border&gt; será pintado encima del control Rectángulo, y ocupará una parte de la pantalla. El color de fondo es azul y contiene un botón de cerrar.</p>
<p>Cuando es visible, el user control StoryDetailsview se mostrará así:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step92.png" alt="" width="717" height="508" /></p>
<p>Implementaremos el código del evento &#8220;CloseBtn_Click&#8221; en el código trasero. Cuando se presione, este evento pondrá la Visibilidad del UserControl a &#8220;Collapsed&#8221; - lo que lo hará desaparecer de la pantalla y volveremos a ver el contenido de detrás:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step93.png" alt="" width="526" height="376" /></p>
<p><strong>Mostrando el control StoryDetailsView</strong></p>
<p>Una forma sencilla de hacer aparecer el control StoryDetailsView sería añadirlo al final del archivo Page.xaml, y poner su visibilidad por defecto en Collapsed (lo que significa que no es visible cuando se carga por primera vez la aplicación):</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step94.png" alt="" width="680" height="137" /></p>
<p>Y ahora podemos trabajar con el evento &#8220;SelectionChanged&#8221; el control ListBox en el código trasero:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step96.png" alt="" width="716" height="510" /></p>
<p>Cuando un usuario seleccione un elemento de la lista, podemos usar este evento parhacer que el user control ShowDetailsView se muestre:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step95.png" alt="" width="590" height="84" /></p>
<p>Esto hará que se muestre el diálogo modal. Cuando se haga clic en el boton &#8220;Close&#8221; desaparacerá, volviendo a mostrar la lista de historias.</p>
<p><strong>Pasando los datos de la historia al control StoryDetailsView</strong></p>
<p>Por último queremos mostrar en el user control StoryDetailsView los detalles de la información que tiene la historia que hemos seleccionado en el ListBox.</p>
<p>En el evento &#8220;SelectionChanged&#8221; del list box podemos acceder al objeto DiggStory que hemos seleccionado  a través de la propoiedad &#8220;SelectedItem&#8221;.</p>
<p>La forma más sencilla para acceder a esos datos sería poner la propiedad &#8220;DataContext&#8221; del user control al objeto que se ha seleccionado antes de hacer que el control sea visible:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step97.png" alt="" width="581" height="136" /></p>
<p>Ahora podemos escribir el el código necesario para mostrar esos datos en el user control. O usar expresiones de databinding.</p>
<p>Por ejemplo, podemos actualizar el xaml de StoryDetailsView para mostrar el título de la historia con la siguiente expresion:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step99.png" alt="" width="876" height="423" /></p>
<p>Y ahora cuando se haga clic en una historia:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step98.png" alt="" width="666" height="398" /></p>
<p>El evento de selección, pondrá el DataContext del user control al objeto DigStory seleccionado, y luego lomostrará:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step100.png" alt="" width="697" height="461" /></p>
<p>Fijáos que ahora aparece el título del elemento que hemos seleccionado.</p>
<p><strong>Terminando el aspecto del user control</strong></p>
<p>Ya hemos visto cómo hacer de manera simple un maestro/detalle. Para terminarlo añadiremos más controles al StoryDetailsView y más expresiones de databinding:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step101.png" alt="" width="700" height="486" /></p>
<p>Podemos actualizar el user control StoryDetailsView para que sea igual que el anterior actualizando el control &lt;Border&gt; de la siguiente manera:</p>
<p><img src="http://silverlight1blogpost.s3.amazonaws.com/step103.png" alt="" width="882" height="668" /></p>
<p>No hace falta cambiar el código después de esto. Ya que estamos usando las expresiones de databinding para obtener los valores del DataContext.</p>
<p> </p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-6-using-user-controls-to-implement-master-detail-scenarios.aspx">Artículo Original</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/171/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/171/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=171&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/04/26/parte-6-user-controls-para-implementar-escenarios-maestro-detalle/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/app1.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/app2.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step88.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step89.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step91.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step92.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step93.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step94.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step96.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step95.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step97.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step99.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step98.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step100.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step101.png" medium="image" />

		<media:content url="http://silverlight1blogpost.s3.amazonaws.com/step103.png" medium="image" />
	</item>
		<item>
		<title>Actualización del código de ASP.NET MVC</title>
		<link>http://thinkingindotnet.wordpress.com/2008/04/21/actualizacion-del-codigo-de-aspnet-mvc/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/04/21/actualizacion-del-codigo-de-aspnet-mvc/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 06:54:51 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ASP .NET]]></category>

		<category><![CDATA[MVC]]></category>

		<category><![CDATA[Scott Guthrië]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=170</guid>
		<description><![CDATA[Hace poco creamos un proyecto ASP.NET  en CodePlex que usaremos para poner ahí (con el código fuente) las nuevas características y releases de ASP.NET
El mes pasado lo usamos para poner la primera versión del código de ASP.NET MVC. Esta primera versión se corresponde con la Preview 2 que presentamos en el MIX, junto con los [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace poco creamos <a href="http://www.codeplex.com/aspnet">un proyecto ASP.NET  en CodePlex </a>que usaremos para poner ahí (con el código fuente) las nuevas características y releases de ASP.NET</p>
<p>El mes pasado lo usamos para poner <a href="http://thinkingindotnet.wordpress.com/2008/03/21/disponible-el-codigo-fuente-de-aspnet-mvc/">la primera versión del código de ASP.NET MVC</a>. Esta primera versión se corresponde con la Preview 2 que presentamos en el MIX, junto con los archivos de proyecto de Visual Studio para que podamos compilarlas y montarlas en local.<span id="more-170"></span></p>
<p>Hace unas horas<a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=12640"> publicamos una nueva versión del código</a>. Esta versión <strong>no es </strong>una versión oficial de ninguna release de ASP.NET MVC - sino una versión intermedia para ver cómo está el estado del arte del código. Publicaremos la release 3 de ASP.NET MVC en unas semanas, después de terminar algún que otro trabajo (nuevas características y mejoras en otras ya existentes, mejor integración en VS, soporte en las versiones express de VS, documentación, etc). Si eres de los que quiere una instalación de ASP.NET MVC con documentación y soporte total de la herramienta, querrás esperar a la publicación de una preview oficial. Si quieres investigar y ver qué se está haciendo de nuevo, esta preview de la preview es tu oportunidad para empezar a usarla y darnos algún feedback.</p>
<p><strong>Mejoras en el código de ASP.NET MVC</strong></p>
<p>En esta actualización (que podéis descargar <a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=12640">aquí</a>) se incluyen algunas mejoras. Entre las que están:</p>
<ul>
<li>Además de poner el código fuente del framework de ASP.NET MVC, también hemos publicado los test unitarios que usamos. Estos test están hechos con MSTest y el framework <a href="http://code.google.com/p/moq/">Mog</a>. También incluimos el archivo de proyecto para VS con los test de manera que sea más fácil ejecutarlos localmente.</li>
<li>Mayor soporte para testeo de las clases Controladoras. Ahora podéis crear test en las controladoras sin tener que hacer objetos mock.</li>
<li>Varias mejoras en la usabilidad del sistema de rutado de urls.</li>
</ul>
<p><strong>Crear un nuevo proyecto ASP.NET MVC</strong></p>
<p>Podemos tener una copia de los assemblies de MVC descargando el código y compilarlo localmente, o descargar el paquete de templates para Visual Studio para tener una versión precompilada de ellos.</p>
<p>Después de instalar el template .VSI, aparecerá un nuevo template en Visual Studio llamado &#8220;ASP.NET MVC Application&#8221; en la sección &#8220;My Templates&#8221; en el diálogo &#8220;New Project&#8221;:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step1.png" alt="" /></p>
<p>Esta nueva versión del template de MVC puede coexisitir con las versiones anteriores (ya lo podéis ver en la imagen anterior). Permitiendo de esta forma crear nuevos proyectos y usar la última versión del código ó la versión de la preview oficial en la misma máquina.</p>
<p>Cuando creamos un proyecto nuevo con la nueva versión, tendremos un proyecto con la siguiente estructura:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step23.png" alt="" width="217" height="436" /></p>
<p>Esta solución contiene un controlador (&#8221;HomeController&#8221;) en el directorio &#8220;\Controllers&#8221; y dos vistas (&#8221;About&#8221; y &#8220;Index&#8221;) en el directorio &#8220;\Views\Home&#8221;. Ambas vistas están basadas en una master page (&#8221;Site.master&#8221;) que tiene definida toda la css en &#8220;site.css&#8221; en el directorio &#8220;\Content&#8221;.</p>
<p>Si ejecutamos la aplicación tendremos lo siguiente:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step3.png" alt="" width="700" height="484" /></p>
<p>Si hacemos clic en el tab &#8220;About us&#8221; tendremos:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step5.png" alt="" width="701" height="482" /></p>
<p>La clase &#8220;HomeController&#8221; es la responsable de administrar las dos urls anteriores y tiene dos métodos de acción:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step6.png" alt="" width="521" height="356" /></p>
<p>El template &#8220;Site.master&#8221; busca el valor &#8220;Title&#8221; en la colección ViewData y la usa para renderizar el elemento &lt;title&gt; de la página. La vista &#8220;Index&#8221; busca el valor &#8220;Message&#8221; y lo usa para renderizar la página de bienvenida. Obviamente podemos personalizar estos archivos como queramos.</p>
<p><strong>Cambios en los controladores de esta nueva versión</strong></p>
<p>Si os habéis fijado bien, os habréis dado cuenta de un par de cosillas sobre cómo están implementadas las clases controladoras.</p>
<p>En la preview 2 la clase anterior tendría el siguiente código:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step8.png" alt="" width="497" height="356" /></p>
<p>El equipo de MVC está experimentando con unas cuantas ideas en esta versión del código:</p>
<ol>
<li>Los métodos de acción devuelven un objeto del tipo &#8220;ActionResult&#8221; en lugar de void. Este objeto indica el resultado de la acción (una vista a renderizar, una url a la que redireccionar, otra acción a ejecutar, etc).</li>
<li>Los métodos RenderView(), RedirectToAction() y Redirect() de la clase base Contorlador también devuelven objetos ActionResult (que podremos manipular o devolver desde los métodos de acción).</li>
<li>El método RenderView() puede llamarse sin tener que pasar el nombre de la vista a renderizar. Si no le pasamos ningún nombre, el método renderizará por defecto la vista con el nombre del método de acción. Así que llamar a RenderView sin parametros en el método de acción &#8220;About()&#8221;, sería lo mismo que escribir &#8220;RenderView(&#8217;About&#8217;)&#8221;</li>
</ol>
<p>Es realmente simple actualizar las clases controladoras a esta Preview 2 usando este nuevo patrón (sólo cambiar el void a ActionResult y añadir una sentencia return delante de cualquier método RenderView o RedirectToAction).</p>
<p><strong>Devolver objetos ActionResult en los métodos de acción</strong></p>
<p>¿Pero porqué cambiar esto? Varios frameworks MVC muy populares usan esta solución (como Django, Tapestry y otros), y creemos que aportará grandes beneficios a ASP.NET MVC:</p>
<ol>
<li>Permite una forma más clara y sencilla de crear test para las clases controladoras. No tendremos que usar objetos mocks en los objetos Response o ViewEngine para ver si todo ha ido bien. Sólo con añadir los asserts necesarios que usen estos objetos en las llamadas a los métodos de acción.</li>
<li>Hace que el flujo de la lógica de las clases controladoras sea más claro y explícito en escenarios donde queramos tener dos formas diferentes de actuar dependiendo de alguna condición (por ejemplo: redireccionar si la condición A es verdadera, o renderizar una vista si es falsa). Esto puede hacer que el código no trivial de un método de acción sea más fácil de leer y seguir.</li>
<li>Permite escenarios de composición en donde un FilterActionAttribute pueda coger el resultado de un método de acción y modificarlo ántes de que se ejecute. Por ejemplo: una acción &#8220;Browse&#8221; en un controlador de ProductCatalog puede devolver un RenderActionResult que indica que queremos renderizar una lista de productos. Un FilterActionAttirute puede personalizar esta vista de productos a List-html.aspx o a List-xml.aspx dependiendo del tipo MIME del cliente.</li>
<li>Aporta un mecanismo extensible para personas (incluidos nosotros) que quieran añadir nuevas características en el futuro. Se pueden crear nuevos tipos ActionResult heredando de ActionResult y sobreescribir el método &#8220;ExecuteResult&#8221;. Sería muy sencillo crear un método &#8220;RenderFile()&#8221;, por ejemplo, al que un desarrollador pueda llamar devolviendo un objeto &#8220;FileActionResult&#8221;.</li>
<li>Permite también escenarios de ejecución asíncrona en el futuro. Los métodos de acción serán capaces de devolver objetos del tipo AsyncActionResult que indiquen que están esperando una operación de red y que queremos volver al thread en eejcución de manera que ASP.NET lo usase para ejcutar otra petición hasta que la llamada de red terminase. Esto nos permitirá evitar bloqueos de threads en el servidor, y soportarán un código muy eficiente y escalable.</li>
</ol>
<p>Uno de los objetivos de esta versión no oficial es dar a la gente una oportunidad para que juege con estas cosas y que hagan aplicaciónes reales y aprendan con ello.</p>
<p>También postearemos una clase Controller base alternativa para que podamos usar métodos de acción que devuelvan void. No publicamos esta versión en la nueva versión deliberadamente, ya que queremos darle una oportunidad a los ActionResult para ver si gusta o no.</p>
<p><strong>Cómo testear métodos de acción.</strong></p>
<p>Hemos hablado sobre los tipos ActionResult para hacer test unitarios en las clases controladoras mucho más sencillas (evitando tener que usar objetos mocks). Veamos un ejemplo:</p>
<p>Imaginemos la siguiente clase:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step22.png" alt="" width="564" height="413" /></p>
<p>Esta clase tiene un método de acción &#8220;IsEvenNumber&#8221; que toma el parámetro desde la URL. Este método comprueba si es negativo - en ese caso redirecciona a una página de error. Si es positivo comprueba si es par o impar, y dependiendo de eso renderiza una vista u otra:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step11.png" alt="" width="703" height="364" /></p>
<p>Crear un test unitario para este método es muy fácil gracias a los ActionResult.</p>
<p>Aquí tenéis un ejemplo de un test que comprueba la corrección de la redirección Http cuando se da un número negativo (por ejemplo: /Number/IsEvenNumber/-1):</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step17.png" alt="" width="745" height="294" /></p>
<p>Fijáos que no hemos tenido que usar un mock object para testear el método. Sino que sólo hemos instanciado la clase NumberController y hemos llamado al método de acción directamente (pasándole un número negativo) y asignándole el resultado a una variable local &#8220;result&#8221;. He usado el comando &#8220;as type&#8221; de C# para hacer un casting de la variable &#8220;result&#8221; como un tipo fuertemente tipado &#8220;HttpRedirectResult&#8221;.</p>
<p>Lo sencillo del comando &#8220;as&#8221; de C# es que asignará un valor null en lugar de elevar una excepción si el casting falla (por ejemplo: si el método devuelve un RenderViewResult). Con esto podemos añadir assertions en nuestros test para comprobar que el resultado no es nullo para comprobar que la redirección ha ocurrido. Ahora puedo añadir un segundo assert para comprobar que la dirección url es la correcta.</p>
<p>Testear los escenarios en los que se pasan números que no sean 0 también es fácil. Par ahacer esto crearemos dos métodos de test -uno para comprobar numeros pares y otro para los impares. En ambos casos comprobaremos el RenderViewResult que se ha devuelto, y comprobaremos el string &#8220;Message&#8221; que se le pasó con el ViewData asociado:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step31.png" alt="" width="918" height="422" /></p>
<p>Haciendo clic derecho en la clase NumberControllerTest podemos ejecutar el tes:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step20.png" alt="" width="582" height="378" /></p>
<p>Esto ejecutará los tres test en memoria (no hace falta un servidor web) y nos informará si el método de acción  NumberController.IsEvenNumber() está comportándose de la manera esperada:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step21.png" alt="" width="618" height="162" /></p>
<p><em>Nota: En la versión de esta semana seguimos necesitando objetos mock para testear la propiedad TempData. Nuestros planes son no necesitar en ASP.NET MVC Preview 3 estos objetos en ningún lugar.</em></p>
<p><strong>Le método MapRoute</strong></p>
<p>Las reglas de rutado url en ASP.NET MVC son declaradas en el método &#8220;RegisterRouters&#8221; de la clase Global.asax.</p>
<p>En las preview 1 y 2 de ASP.NET MVC las retlas de rutado se añadían a esta colección instanciando un objeto Route directamente y enlazándola a la clase MvcRouteHandler,  configurabamos sus propiedades:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step27.png" alt="" width="706" height="287" /></p>
<p>El código anterior continuará funcionando. Sin embargo, también podemos usar el método &#8220;MapRoute&#8221; que nos aporta una sintaxis más simple para hacer lo mismo. Aquí tenéis la ruta por defecto que se añade cuando creamos un proyecto MVC:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step26.png" alt="" width="859" height="290" /></p>
<p>El método MapRoute tiene está sobrecargado y tiene dos, tres o cuatro parámetros (nombre, sintaxis parámetros por defecto y una expresion regular).</p>
<p>Podemos llamarlo las veces que necesitemos para registrar varias rutas del sistema. por ejemplo, además de la regla por defecto, podemos añadir una ruta llamada &#8220;Products-Browse&#8221; de la siguiente forma:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step28.png" alt="" width="861" height="232" /></p>
<p>Ahora podemos referirnos a la regla &#8220;Products-Browse&#8221; explícitamente en los controladores y vistas cuando queramos generar una url hacia ella. Por ejemplo, podemos usar la vista HTml.RouterLink para indicar quequeremos un enlace a la ruta &#8220;Products-Browse&#8221; y pasarle la categoría &#8220;Food&#8221; con el siguiente código:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step29.png" alt="" width="778" height="78" /></p>
<p>Este métdo accederá al sistema de rutado y devolverá el link HTML necesario:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step30.png" alt="" width="519" height="64" /></p>
<p><em>Nota: en la versión de esta semana necesitamos pasarle el controlador y las acciones como parámetros (además de la categoría) al Html.RouteLink() para que se genere la url adecuada. La preview 3 de ASP.NET MVC no necesitará esto, y nos permitirá usar la llamada Html.RouteLink como la he escrito antes.</em></p>
<p><strong>Otras características del mapeado de rutas url</strong></p>
<p>La versión de esta semana también soporta varias nuevas características en el mapeo de rutas url. Podemos inluir &#8220;-&#8221;, &#8220;.&#8221;, &#8220;;&#8221;  o cualquier caracter que queramos en nuestras reglas de rutado.</p>
<p>Por ejemplo, usar el operador &#8220;-&#8221; podemos parsear el lenguaj y valores locales de nuestras urls con la siguiente regla:<img src="http://www.scottgu.com/blogposts/aprilmvc/step32.png" alt="" width="838" height="165" /></p>
<p>Esto pasará los parámetros &#8220;language&#8221;, &#8220;locale&#8221; y &#8220;category&#8221; al método de acción ProductsController.Browse:</p>
<table border="1" cellspacing="0" cellpadding="2" width="856">
<tbody>
<tr>
<td width="297" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">URL Route Rule</span></span></td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">Example URL</span></span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">Parameters Passed to Action method</span></span></td>
</tr>
<tr>
<td width="297" valign="top"><span style="font-size:x-small;font-family:arial;">{language}-{locale}/products/browse/{category}</span></td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;">/en-us/products/browse/food</span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;">language=en, locale=us, category=food</span></td>
</tr>
<tr>
<td width="296" valign="top"> </td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;">/en-uk/products/browse/food</span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;">language=en, locale=uk, category=food</span></td>
</tr>
</tbody>
</table>
<p>O podemos usar la extensión de archivos &#8220;.&#8221; al final de la url para determinar cuándo devolver el formato en XML o HTML:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step33.png" alt="" width="827" height="152" /></p>
<p>Esto le pasará los parámetros &#8220;category&#8221; y &#8220;format&#8221; al método de acción ProductsController.Browse cuando se le invoque:</p>
<table border="1" cellspacing="0" cellpadding="2" width="852">
<tbody>
<tr>
<td width="297" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">URL Route Rule</span></span></td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">Example URL</span></span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">Parameters Passed to Action method</span></span></td>
</tr>
<tr>
<td width="297" valign="top"><span style="font-size:x-small;font-family:arial;">products/browse/{category}.{format}</span></td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;">/products/browse/food.xml</span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;">category=food, format=xml</span></td>
</tr>
<tr>
<td width="296" valign="top"> </td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;">/products/browse/food.html</span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;">category=food, format=html</span></td>
</tr>
</tbody>
</table>
<p>ASP.NET MVC Preview 2 introdujo reglas wildcard. Porj ejemplo, podemos indicar en la regla que se le pase el resto del contenido URI como un nombre parametrizado al método de acción:</p>
<p><img src="http://www.scottgu.com/blogposts/aprilmvc/step34.png" alt="" width="817" height="160" /></p>
<p>De esta manera pasamos el parámetro &#8220;contentUrl&#8221; al método de acción WikiController.DisplayPage:</p>
<table border="1" cellspacing="0" cellpadding="2" width="852">
<tbody>
<tr>
<td width="297" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">URL Route Rule</span></span></td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">Example URL</span></span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;"><span style="text-decoration:underline;">Parameters Passed to Action method</span></span></td>
</tr>
<tr>
<td width="297" valign="top"><span style="font-size:x-small;font-family:arial;">Wiki/Pages/{*contentUrl}</span></td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;">/Wiki/Pages/People/Scott</span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;">contentUrl=&#8221;People/Scott&#8221;</span></td>
</tr>
<tr>
<td width="296" valign="top"> </td>
<td width="198" valign="top"><span style="font-size:x-small;font-family:arial;">/Wiki/Pages/Countries/UK</span></td>
<td width="355" valign="top"><span style="font-size:x-small;font-family:arial;">contentUrl=&#8221;Countries/UK&#8221;</span></td>
</tr>
</tbody>
</table>
<p>Estas rutas continuarán funcionando bien con la preview de esta semana - y es muy útil hecharle un vistazo si estamos creando un blog, wiki, cms o cualquier otro sistema de contenidos.</p>
<p>Fijaos que además de usar el nuevo sistema de rutas de ASP.NET MVC, también podemos usar el mismo sistema con <a href="http://thinkingindotnet.wordpress.com/2008/04/14/disponible-aspnet-dynamic-data/">ASP.NET Dynamic Data </a>(que usa ASP.NET Web Forms).</p>
<p><strong>Resumen</strong></p>
<p>Hemos visto una rápida introducción a las nuevas características que aparecen en la última versión del código de ASP.NET MVC</p>
<p>Podéis descargarlo <a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=12640">aquí </a>si queréis empezar a usarlo ya. También podemos esperar unas semanas para tener la versión oficial de la preview 3 de ASP.NET MVC - que tendrá más características (e incorporará el feedback de los que han probado la versión de esta semana), un instalador más parecido, mayor integración con VS, y una documentación actualizada.</p>
<p>Si queréis hacer preguntas sobre esta versión, mirad el <a href="http://forums.asp.net/1146.aspx">foro de msdn de MVC </a>en <a href="http://www.asp.net">www.asp.net</a></p>
<p>Espero que sirva.</p>
<p>Scott</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx">Artículo original.</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/170/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/170/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=170&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/04/21/actualizacion-del-codigo-de-aspnet-mvc/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step1.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step23.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step3.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step5.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step6.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step8.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step22.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step11.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step17.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step31.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step20.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step21.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step27.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step26.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step28.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step29.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step30.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step32.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step33.png" medium="image" />

		<media:content url="http://www.scottgu.com/blogposts/aprilmvc/step34.png" medium="image" />
	</item>
		<item>
		<title>Enlaces de Abril: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Visual Studio, Silverlight</title>
		<link>http://thinkingindotnet.wordpress.com/2008/04/14/enlaces-de-abril-aspnet-aspnet-ajax-aspnet-mvc-visual-studio-silverlight/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/04/14/enlaces-de-abril-aspnet-aspnet-ajax-aspnet-mvc-visual-studio-silverlight/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 20:31:50 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ASP .NET]]></category>

		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[MVC]]></category>

		<category><![CDATA[Scott Guthrië]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=169</guid>
		<description><![CDATA[Aquí tenéis otros cuantos links que he recopilado este mes:
ASP.NET

Más tutoriales de seguridad de ASP.NET: Lo últimos tres post del tutorial de seguridad de Scott MItchell. En estos tres últimos nos enseña a seleccionar cuentas de usuario, recuperar y cambiar contraseñas y bloquear y aprobar cuentas de usuario.
Crear un Grid con estilo en VS 2008 [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Aquí tenéis otros cuantos links que he recopilado este mes:<span id="more-169"></span></p>
<p><strong>ASP.NET</strong></p>
<ul>
<li><a href="http://scottonwriting.net/sowblog/posts/13196.aspx">Más tutoriales de seguridad de ASP.NET: </a>Lo últimos tres post del<a href="http://asp.net/learn/security/"> tutorial de seguridad de Scott MItchell.</a> En estos tres últimos nos enseña a seleccionar cuentas de usuario, recuperar y cambiar contraseñas y bloquear y aprobar cuentas de usuario.</li>
<li><a href="http://mattberseth.com/blog/2008/04/building_a_vs2008_styled_grid.html">Crear un Grid con estilo en VS 2008 con los controles ListView y DataPager</a>: Matt Berseth nos habla sobre las técnicas que podemos usar con el control ListView de ASP.NET 3.5 para crear un grid con estilo - manteniendo un control total sobre el HTML y las CSS&#8217;s que usamos. <a href="http://mattberseth.com/blog/2008/04/building_a_vs2008_styled_grid_1.html">Leed este post</a> sobre cómo obtener este mismo efecto con un GridView.</li>
<li><a href="http://www.emmaalvarez.com/2008/04/most-useful-50-css-tips-and-tools-for.html">50 trucos sobre CSS</a>: Una página muy útil con una lista de trucos y herramientas para CSS que podemos usar en escenarios web comunes.</li>
<li><a href="http://mattberseth.com/blog/2008/04/using_a_datapager_with_the_gri.html">Usar un DataPager con un GridView - Implementando IPageableContainer:</a> Matt Berseth nos explica cómo usar la nueva interfaz IPageableContainer para implementar el soporte de paginación con el control DataPager de ASP.NET 3.5</li>
</ul>
<p><strong>ASP.NET AJAX</strong></p>
<ul>
<li><a href="http://dotnetslackers.com/articles/ajax/AccessibleUpdatePanel.aspx">UpdatePanel Accesible</a>: Bertrand Le Roy del equipo de ASP.NET nos enseña cómo hacer que un control UpdatePanel sea accesible para los lectores de pantalla.</li>
<li><a href="http://aspadvice.com/blogs/garbin/archive/2008/04/02/ASP.NET-AJAX-meets-Virtual-Earth-series-on-DotNetSlackers.aspx">ASP.NET AJAX conoce a Virtual Earth:</a> Alessandro Gallo, autor del <a href="http://www.amazon.com/gp/product/1933988142/104-9219624-7383145?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=1933988142">libro ASP.NET AJAX in Action</a>, habla sobre cómo usar ASP.NET AJAX con Virtual Earth para implementar mapas en nuestro sitio.</li>
<li><a href="http://weblogs.asp.net/omarzabir/archive/2008/04/06/fast-page-loading-by-moving-asp-net-ajax-scripts-after-visible-content.aspx">Aumentar la carga de páginas moviendo los Scripts de ASP.NET AJAX detrás de contenido visible</a>: Omar Al Zabir (el cofundador de <a href="http://www.PageFlakes.com">www.PageFlakes.com</a>) no enseña una técnica para incrementar el rendimiento de carga de una página ASP.NET AJAX. También recominedo la lectura del libro de Omar <a href="http://www.amazon.com/gp/product/0596510500/002-5242737-1614454?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0596510500">Building a Web 2.0 Portal with ASP.NET 3.5</a> para aprender más de sus sugerencias y técnicas.</li>
<li>Tres trucos para trabajar con el control TabContainer de ASP.NET AJAX: Matt Berseth continúa con sus artículos sobre ASP.NET AJAX y nos enseña algunos trucos del control TabContainer del ASP.NET AJAX Control Toolkit.</li>
<li><a href="http://blogs.msdn.com/mikeormond/archive/2008/03/28/building-asp-net-ajax-controls-index-post.aspx">Crear componentes ASP.NET AJAX:</a> Mike Ormond ha escrito una serie de 8 post sobre cómo escribir componentes ASP.NET AJAX reutilizables que funcionan tanto en el lado del cliente como en el servidor.</li>
</ul>
<p><strong>ASP.NET MVC</strong></p>
<ul>
<li><a href="http://www.myvbprof.com/2007_Version/MVC_Intro_Tutorial.aspx">Una introducción a ASP.NET MVC con VB</a>: Bill Burrows de <a href="http://www.MyVBprof.com">www.MyVBprof.com</a> ha puesto una serie de videos online introduciendo ASP.NET MVC con Visual Basic. Aseguráos de ver los videos e <a href="http://www.myvbprof.com/2007_Version/VB9_XML.aspx">LINQ to XML</a> y <a href="http://www.myvbprof.com/2007_Version/LINQ_to_SQL.aspx">LINQ to SQL con VB</a>.</li>
<li><a href="http://www.squaredroot.com/post/2008/04/MVC-Membership-Starter-Kit.aspx">ASP.NET MVC: Membership Starter Kit:</a> Troy Goode ha creado un starter kit para ASP.NET MVC que nos proporciona páginas de registro y login para que los usuarios se autentiquen en nuestros sitios web, además de un montón de funcionalidades de administración que permite a los administradores crear/administrar usuarios y roles. Descargarosla <a href="http://www.codeplex.com/MvcMembership">aquí</a>.</li>
<li><a href="http://www.squaredroot.com/post/2008/04/MVC-Error-Handler-Filter.aspx">ASP.NET MVC: Filtros de acción para administrar errores:</a> Troy Goode tiene otro post donde nos enseña a usar los filtros de acción de ASP.NET MVC para administrar errores.</li>
<li><a href="http://biasecurities.com/blog/2008/how-to-enable-pretty-urls-with-asp-net-mvc-and-iis6/">Cómo habilitar urls bonitas con ASP.NET MVC e IIS6</a>: James Geurts a posteado un artículo donde describe cómo habilitar urls sin extensión con ASP.NET MVC en IIS6 (nota: no tenéis que configurar nada especial con ASP.NET MVC en IIS7 para esto).</li>
</ul>
<p><strong>Visual Studio</strong></p>
<ul>
<li><a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionId=df3f0c30-3d37-4e06-9ef8-3bff3508be31">PowerCommands para VS 2008:</a> Un conjunto de extensiones libres para VS 2008 que añaden un monton de características al IDE.</li>
<li><a href="http://blogs.msdn.com/kirillosenkov/archive/2008/04/03/coding-productivity-macros-shortcuts-and-snippets.aspx">Productividad de codificación: Macros, accesos directos y snippets:</a> Kirill Osenkov tiene un post donde nos enseña a usar las macros de VS para ahorrarnos tiempo.</li>
</ul>
<p><strong>Silvellight</strong></p>
<ul>
<li><a href="http://geekswithblogs.net/WynApseTechnicalMusings/Default.aspx">Serie de links de Dave Campbell:</a> Dave Campbell esta posteando una serie de links a nuevos artículos sobre Silverlight y contenido en la web. Os recomiendo que os suscribáis a su blog si queréis estar al día sobre Silverlight.</li>
<li><a href="http://blogs.msdn.com/jasonz/archive/2008/04/04/silverlight-2-map-datagrid-demo-part-2.aspx">Tutorial Silverlight</a>: Jason Zander tiene un tutorial de dos post sobre Silverlight donde nos enseña cómo crear una aplicación data driven que integra un control de mapeado con un datagrid para filtrar y analizar datos.</li>
<li><a href="http://blogs.msdn.com/swiss_dpe_team/archive/2008/04/04/crud-operations-with-optimistic-locking-using-silverlight-2-beta1-wcf-and-linq-to-sql-inserts-updates-and-deletes.aspx">Operaciones CRUD con Silverlight, WCF y LINQ to SQL:</a> Ronnie Saurenmann del equipo Swiss MSDN tiene un video enseñándonos a soportar inserciones, actualiaciones y borrados con Silverlight 2 conectado con WCF a un backend LINQ to SQL.</li>
<li><a href="http://blogs.msdn.com/sburke/archive/2008/03/22/tutorial-writing-a-templated-silverlight-2-control.aspx">Crear un control template en Silverlight 2:</a> Shawn Burke tiene un tutorial sobre cómo crear un control template en Silverlight que implementa un control expandir/collapsar.</li>
</ul>
<p>Espero que sirva.</p>
<p>Scott</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/04/11/april-11th-links-asp-net-asp-net-ajax-asp-net-mvc-visual-studio-silverlight.aspx">ARtículo original.</a></p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/169/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/169/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/169/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=169&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/04/14/enlaces-de-abril-aspnet-aspnet-ajax-aspnet-mvc-visual-studio-silverlight/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>
	</item>
		<item>
		<title>Disponible ASP.NET Dynamic Data</title>
		<link>http://thinkingindotnet.wordpress.com/2008/04/14/disponible-aspnet-dynamic-data/</link>
		<comments>http://thinkingindotnet.wordpress.com/2008/04/14/disponible-aspnet-dynamic-data/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 19:27:53 +0000</pubDate>
		<dc:creator>Vio</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ASP .NET]]></category>

		<category><![CDATA[LINQ]]></category>

		<category><![CDATA[Scott Guthrië]]></category>

		<guid isPermaLink="false">http://thinkingindotnet.wordpress.com/?p=168</guid>
		<description><![CDATA[Hace unos meses publicamos la preview de las extensiones de ASP.NET 3.5 que contenían un montón de nuevas características que se publicarían más tarde este año ( incluyendo las ASP.NET AJAX Improvements, ASP.NET MVC, Soporte de Silverlight, y ASP.NET Dynamic Data).
El soporte para datos dinámicos de ASP.NET nos hacen ver una nueva característica que nos permite [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace unos meses publicamos la<a href="http://thinkingindotnet.wordpress.com/2007/12/16/publicada-aspnet-35-extensions-ctp/"> preview de las extensiones de ASP.NET 3.5</a> que contenían un montón de nuevas características que se publicarían más tarde este año ( incluyendo las ASP.NET AJAX Improvements, ASP.NET MVC, Soporte de Silverlight, y ASP.NET Dynamic Data).<span id="more-168"></span></p>
<p>El <a href="http://thinkingindotnet.wordpress.com/2007/12/16/nuevo-soporte-para-datos-dinamicos-en-aspnet/">soporte para datos dinámicos de ASP.NET </a>nos hacen ver una nueva característica que nos permite crear data driven webs* sobre LINQ to SQL o LINQ to Entities. ASP.NET Dynamic Data nos permite crear entradas e informes de datos rápidamente en paginas web que se crean dinámicamente desde los metadatos del ORM. También nos permite sobreescribir y personalizar cualquier template con cualquier HTML o con el código que queramos (dándonos un control total). </p>
<p><strong>ASP.NET Dynamic Data Preview</strong> </p>
<p>Hoy publicamos una actualización de ASP.NET Dynamic Data Preview. Podéis aprender más y descargarla desde <a href="http://code.msdn.microsoft.com/dynamicdata">aquí</a>.</p>
<p>Esta nueva preview funciona con los controles estándar de ASP.NET (GridView, ListView, FromView, DetailsView, etc). El soporte de datos dinámicos permite a estos controles administrar relaciones de clave ajena. Por ejemplo, en un gridview tendremos una manera bonita de mostrar los valores de columnas de las claves ajenas y una selección en forma de lista desplegable cuando estemos editando una fila:</p>
<p><img src="http://www.scottgu.com/blogposts/dynamicdata/step11.png" alt="" width="701" height="311" /></p>
<p>El soporte para datos dinámicos también nos aportan soporte de validación (tanto en lado cliente como en el lado servidor) basándose en las restricciones que le hemos puesto a las clases de nuestro modelo de datos. Por ejempl, si una columna de la base de datos está limitada a 50 caracteres, y está marcada como que no puede ser nula, se añadirán controles de validación automáticamente por ASP.NET Dynamic Data para asegurar esas restricciones. Si cambiamos estas restricciones en el modelo de LINQ to SQL o LINQ to Entities, la interfaz de usuario se enterará de esos cambios y forzará que se cumplan esas nuevas restricciones en las siguientes peticiones web.</p>
<p>Además del metadata del modelo de datos estándar, también podemos declarar metadatas personalizados para tener mayour control sobre la validación y cómo se van a mostrar estos controles.</p>
<p>También seremos capaces de usar todas estas características tanto en LINQ to SQL como en LINQ to Entitites.</p>
<p><strong>Visual Studio Dynamic Data Project Wizard</strong></p>
<p>Además del soporte de datos dinámicos en el núcleo de ASP.NET, el equipo de herramientas web de VS ha publicado la primera preview del asistente para projectos de datos dinámicos que nos permite crear rápidamente data driven webs * . Este asistente nos permite seleccionar una base de datos, luego las tablas, vistas y procedimientos almacenados que queramos par acrear un modelo LINQ to SQL:</p>
<p><img src="http://blogs.msdn.com/photos/webdevtools/images/8371317/original.aspx" alt="" width="524" height="385" /></p>
<p>Después de crear el modelo de datos, el asistente nos permite seleccionar un modelo de páginas para crear la interfaz de usuario:</p>
<p><img src="http://blogs.msdn.com/photos/webdevtools/images/8371312/original.aspx" alt="" width="524" height="385" /></p>
<p>Ahora seleccionamos que tipo de operaciones queremos habilitar en la interfaz de usuario, como insertar/modificar/actualizar:</p>
<p><img src="http://blogs.msdn.com/photos/webdevtools/images/8371319/original.aspx" alt="" width="524" height="385" /></p>
<p>Y cuando le demos al botón &#8220;Finish&#8221; creará un proyecto con nuestro modelo de datos y páginas con las que empezar a trabajar. Podéis aprender más sobre este asistente y ver cómo funciona <a href="http://blogs.msdn.com/webdevtools/archive/2008/04/09/asp-net-dynamic-data-preview-released-on-msdn-code-gallery.aspx">aquí</a>.</p>
<p><strong>Cómo empezar</strong></p>
<p>Podéis aprender más sobre esta preview de datos dinámicos y descargarla y ejecutarla localmente desde <a href="http://code.msdn.microsoft.com/dynamicdata">aquí</a>.</p>
<p>Podéis ver el video de la <a href="http://sessions.visitmix.com/?selectedSearch=T24">presentación del Mix 08 de datos dinámicos de David Ebbo </a>para ver cómo funciona. También deberíais ver <a href="http://davidebbo.members.winisp.net/screencasts/dbimage.wmv">el screen-cast de Scott Hunter</a>, y <a href="http://blogs.msdn.com/webdevtools/archive/2008/04/09/asp-net-dynamic-data-preview-released-on-msdn-code-gallery.aspx">Brad Millington aquí</a>. David también ha escrito un post <a href="http://blogs.msdn.com/davidebb/archive/2008/03/06/dynamic-data-at-mix-and-upcoming-changes.aspx">aquí </a>que habla sobre los cambios que se le han hecho a la preview de Diciembre y en la nueva release.</p>
<p>Podéis hacer todas las preguntas que queráis y opinar en los foros de <a href="http://www.asp.net">www.asp.net</a> <a href="http://forums.asp.net/1145.aspx">aquí</a>.</p>
<p>Espero que sirva.</p>
<p>Scott</p>
<p>Traducido por: Juan María Laó Ramos.</p>
<p><a href="http://weblogs.asp.net/scottgu/archive/2008/04/10/asp-net-dynamic-data-preview-available.aspx">Artículo Original.</a></p>
<p>*Data driven Webs: hace referencia a crear webs muy acoplada a los datos que va a mostrar.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/thinkingindotnet.wordpress.com/168/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/thinkingindotnet.wordpress.com/168/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thinkingindotnet.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thinkingindotnet.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thinkingindotnet.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thinkingindotnet.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thinkingindotnet.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thinkingindotnet.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thinkingindotnet.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thinkingindotnet.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thinkingindotnet.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thinkingindotnet.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thinkingindotnet.wordpress.com&blog=919157&post=168&subd=thinkingindotnet&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://thinkingindotnet.wordpress.com/2008/04/14/disponible-aspnet-dynamic-data/feed/</wfw:commentRss>
<enclosure url="http://davidebbo.members.winisp.net/screencasts/dbimage.wmv" length="19191867" type="video/x-ms-wmv" />
	
		<media:content url="http://a.wordpress.com/avatar/vioswords-128.jpg" medium="image">
			<media:title type="html">Vio</media:title>
		</media:content>

		<media:content url="http://www.scottgu.com/blogposts/dynamicdata/step11.png" medium="image" />

		<media:content url="http://blogs.msdn.com/photos/webdevtools/images/8371317/original.aspx" medium="image" />

		<media:content url="http://blogs.msdn.com/photos/webdevtools/images/8371312/original.aspx" medium="image" />

		<media:content url="http://blogs.msdn.com/photos/webdevtools/images/8371319/original.aspx" medium="image" />
	</item>
	</channel>
</rss>