<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Sector 7G</title><link>http://kartones.net/blogs/sector7g/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/pedroafa" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>SplashScreen en Silverlight</title><link>http://feedproxy.google.com/~r/pedroafa/~3/xutHlXIN77s/splashscreen-en-silverlight.aspx</link><pubDate>Wed, 25 Nov 2009 23:27:09 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50552</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/11/26/splashscreen-en-silverlight.aspx#comments</comments><description>&lt;p&gt;Cuando una aplicación o componente Silverlight es cargado aparece un icono indicando que el plugin se está cargando. Existe un diseño por defecto. Este Sphlas Screen puede modificarse por uno de diseño propio. Lo único que hay que tener en cuenta es que sólo se pueden utilizar controles de Silverlight 1.0. &lt;/p&gt;  &lt;p&gt;Para crear un nuevo SplashScreen hay que añadir al proyecto web un nuevo elemento del tipo &lt;b&gt;Silverlight JScript Page&lt;/b&gt;. Esto añade al proyecto dos archivos: uno archivo .xaml y otro .js. Dentro del .xaml irá el diseño de la pantalla y en el .js su funcionalidad.&lt;/p&gt;  &lt;p&gt;Dentro de la definición del control de Silverlight se le puede indicar que utilice la nueva página como Splash Screen. Para ello se hace uso de la propiedad &lt;b&gt;SplashScreenSource&lt;/b&gt;.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Silverlight &lt;/span&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;server&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;Source&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;~/ClientBin/Client.xap&amp;quot; 
    &lt;/span&gt;&lt;span style="color:red;"&gt;MinimumVersion&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;3.0.40624.0&amp;quot; 
    &lt;/span&gt;&lt;span style="color:red;"&gt;SplashScreenSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;~/SplashScreen.xaml&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Para conseguir centrar nuestro diseño dentro de la ventana, lo más sencillo es utilizar un elemento &lt;b&gt;Grid&lt;/b&gt;, con el tamaño a Auto. Este elemento por si sólo centrará cualquier elemento hijo.&lt;/p&gt;

&lt;p&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&amp;quot; 

  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&amp;quot; 

  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:red;"&gt;Background&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Black&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt; 
    &lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Para suscribirse al evento que indica el porcentaje cargado hay que definir un método dentro del archivo .js. Este método actuará de handler para el evento &lt;b&gt;OnSourceDownloadProgressChanged&lt;/b&gt;.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;function &lt;/span&gt;onSourceDownloadProgressChanged(sender, eventArgs){
 sender.findName(&lt;span style="color:#a31515;"&gt;&amp;quot;progressBar&amp;quot;&lt;/span&gt;).Width = 
   eventArgs.progress * sender.findName(&lt;span style="color:#a31515;"&gt;&amp;quot;progressBarBackground&amp;quot;&lt;/span&gt;).Width;
}&lt;/pre&gt;

&lt;p&gt;Para asociar el método se debe de utilizar la propiedad &lt;b&gt;OnSourceDownloadProgressChanged&lt;/b&gt;.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;param &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;onSourceDownloadProgressChanged&amp;quot; 
    &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;onSourceDownloadProgressChanged&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Un diseño completo como ejemplo podría ser:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/span&gt;&amp;quot; 
      &lt;span style="color:red;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&amp;quot; 
      &lt;span style="color:red;"&gt;Background&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Black&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Sector7G&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;FontSize&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;14&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;Foreground&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FFFFFFFF&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Center&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;FontFamily&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Segoe UI&lt;/span&gt;&amp;quot; 
               &lt;span style="color:red;"&gt;FontWeight&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Bold&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Border &lt;/span&gt;&lt;span style="color:red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;progressBarBackground&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Center&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Center&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FFB6D5EC&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;BorderThickness&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;14&lt;/span&gt;&amp;quot; 
            &lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;200&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle &lt;/span&gt;&lt;span style="color:red;"&gt;x:Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;progressBar&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;14&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Left&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot; 
                 &lt;span style="color:red;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Bottom&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle.Fill&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;LinearGradientBrush &lt;/span&gt;&lt;span style="color:red;"&gt;EndPoint&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.5,1&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;StartPoint&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.5,0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;GradientStop &lt;/span&gt;&lt;span style="color:red;"&gt;Color&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FF6DAAD9&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Offset&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.548&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;GradientStop &lt;/span&gt;&lt;span style="color:red;"&gt;Color&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;#FF496272&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;Offset&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0.961&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
          &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;LinearGradientBrush&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle.Fill&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Rectangle&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Border&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://kartones.net/images_posts/sector7g/splashscreenensilveright.jpg" alt="splashscreenensilveright.jpg" /&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50552" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/xutHlXIN77s" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/Silverlight+3.0/default.aspx">Silverlight 3.0</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/11/26/splashscreen-en-silverlight.aspx</feedburner:origLink></item><item><title>TextTrimming</title><link>http://feedproxy.google.com/~r/pedroafa/~3/6T_uKm1VpXM/texttrimming.aspx</link><pubDate>Thu, 19 Nov 2009 19:08:46 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50525</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/11/19/texttrimming.aspx#comments</comments><description>&lt;p&gt;Hoy he leído que Silverlight 4 ya incluirá un control que &lt;b&gt;TextTrimming&lt;/b&gt;. Este control es capaz de ajustar un texto al tamaño de un &lt;b&gt;TextBlock&lt;/b&gt; y cortarlo concatenándole “…” en caso de que sea demasiado largo y no entre dentro del &lt;b&gt;TextBlock&lt;/b&gt;. &lt;/p&gt;  &lt;p align="center"&gt;“Sertor7G es un blog sobre…”&lt;/p&gt;  &lt;p&gt;El otro día tuve que implementar esta funcionalidad en una de las aplicación que estoy desarrollando sobre Silverlight 3. Después de buscar en google, encontré un post donde exponían el código fuente de un control que se habían hecho a mano. Dejo la dirección del blog por si a alguien le resulta de utilidad &lt;a href="http://blog.nerdplusart.com/archives/texttrimming-textblock-for-silverlight"&gt;TextTrimming TextBlock for Silverlight &lt;/a&gt;. Dentro del código fuente describen los términos de licencia de su uso.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50525" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/6T_uKm1VpXM" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/Silverlight+3.0/default.aspx">Silverlight 3.0</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/11/19/texttrimming.aspx</feedburner:origLink></item><item><title>Migración de Silverilght 2 a Silverlight 3</title><link>http://feedproxy.google.com/~r/pedroafa/~3/JCeVaQqruLk/migraci-243-n-de-silverilght-2-a-silverlight-3.aspx</link><pubDate>Tue, 17 Nov 2009 22:01:31 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50521</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/11/17/migraci-243-n-de-silverilght-2-a-silverlight-3.aspx#comments</comments><description>&lt;p&gt;Ahora que ha salido Silverilght 3 seguramente se empiecen a migrar muchos proyectos hechos con Silverlight 2 a esta nueva versión. No es que sea estrictamente necesario, ya que con el plug-in de Silverlight 3 se pueden ejecutar ambas versiones. Aunque si se quieren aprovechar las novedades de Silverlight 3 es algo recomendable migrar. Además el proceso de migración es bastante sencillo, como se describe a continuación.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 1&lt;/b&gt;: El primer paso es erradicar de la máquina cualquier vestigio de Silverlight 2. Así que hay que desinstalar: Silverlight 2 SDK, Silverlight 2.0 tools for VS2008 SP1 y Silverlight. Si el equipo tiene instalado el toolkit de controles para Siverlight 2, también es necesario desinstalarlo. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 2&lt;/b&gt;: El siguiente paso es instalar Silverlight 3. Hay que instalar todas las herramientas: &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DD&amp;amp;displaylang=en"&gt;Silverlight 3 Tools for Visual Studio 2008 SP1&lt;/a&gt; y &lt;a href="http://silverlight.net/getstarted/silverlight3/"&gt;Silverlight 3&lt;/a&gt;. Opcionalmente se puede instalar el &lt;a href="http://www.codeplex.com/Silverlight"&gt;Silverlight Toolkit&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nota&lt;/b&gt;: Silverlight 3.0 tools for VS2008 SP1 instala el SDK también.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 3&lt;/b&gt;: Una vez instalado Silverlight 3 hay que abrir la solución del proyecto a migrar. Al abrirla Visual Studio lanzará un Wizard. Este Wizard se encarga de realizar la migración de los proyecto.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 4&lt;/b&gt;: Hay que cambiar la versión de Silverlight utilizada en nuestra página. Así que hay que cambiar el valor de la propiedad &lt;b&gt;MinimumVersion&lt;/b&gt; de 2.0.31005.0 a 3.0.40624.0.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Paso 5&lt;/b&gt;: Cambiar de referencias de controles y librerías. Por ejemplo en el caso del control AutoCompleteBox, ya no se encuentra en el control toolkil. Si no que el control AutoCompleteBox ha sido absorbido por la librería de controles propia de Silverlight.&lt;/p&gt;  &lt;p&gt;El proceso de migración es bastante sencillo. Si la aplicación es de un tamaño mediano / grande y se han utilizado controles del control toolkit, probablemente de bastante guerra hacer que compile. &lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50521" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/JCeVaQqruLk" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/Silverlight+2.0/default.aspx">Silverlight 2.0</category><category domain="http://kartones.net/blogs/sector7g/archive/tags/Silverlight+3.0/default.aspx">Silverlight 3.0</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/11/17/migraci-243-n-de-silverilght-2-a-silverlight-3.aspx</feedburner:origLink></item><item><title>Error En Excel: Old Format Or Invalid Type Library</title><link>http://feedproxy.google.com/~r/pedroafa/~3/rYdEXACfnqc/error-en-excel-old-format-or-invalid-type-library.aspx</link><pubDate>Tue, 20 Oct 2009 19:38:03 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50446</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/10/20/error-en-excel-old-format-or-invalid-type-library.aspx#comments</comments><description>&lt;p&gt;Trabajando con Excel puede que te hayas encontrado con este mensaje de error.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Error: Old format or invalid type library. (Exception from HRESULT: &lt;/b&gt;&lt;b&gt;0x80028018 (TYPE_E_INVDATAREAD))&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Este error se produce cuando la versión del Excel instalada en el equipo se encuentra en inglés y el sistema operativo en español. &lt;/p&gt;  &lt;p&gt;Para solucionar el problema basta con cambiar la cultura del thread de ejecución. Debe de estar en inglés. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Thread.CurrentThread.CurrentCulture = new CultureInfo(&amp;quot;en-US&amp;quot;);&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50446" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/rYdEXACfnqc" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/Excel/default.aspx">Excel</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/10/20/error-en-excel-old-format-or-invalid-type-library.aspx</feedburner:origLink></item><item><title>Review: No Me Hagas Pensar</title><link>http://feedproxy.google.com/~r/pedroafa/~3/a3gDiqFmZGk/review-no-me-hagas-pensar.aspx</link><pubDate>Wed, 14 Oct 2009 22:04:08 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50441</guid><dc:creator>Pedroafa</dc:creator><slash:comments>1</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/10/15/review-no-me-hagas-pensar.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;img style="display:inline;margin-left:0px;margin-right:0px;" align="left" src="http://www.kartones.net/images_posts/sector7g/review_no_me_hagas_pensar.jpg" width="180" height="242" alt="review_no_me_hagas_pensar.jpg" /&gt; Título&lt;/b&gt;: NO ME HAGAS PENSAR. Una aproximación a la usabilidad en la web     &lt;br /&gt;&lt;b&gt;Autor&lt;/b&gt;: &lt;a href="http://www.amazon.com/Steve-Krug/e/B001KHCFUU/ref=ntt_athr_dp_pel_1"&gt;Steve Krug&lt;/a&gt;     &lt;br /&gt;&lt;b&gt;Nº Páginas&lt;/b&gt;: 216&lt;/p&gt;  &lt;p&gt;“No me hagas pensar” se trata de un libro sobre usabilidad en el entorno web. El libro intenta dar una serie de consejos y enseñadas sobre el diseño web. Con el objetivo de facilitar el uso de la web a los usuarios. El reto es no hacerles pensar, es decir, que sea lo más sencillo posible para ellos navegar por una web.&lt;/p&gt;  &lt;p&gt;El autor, Steve Krung, presenta su experiencia en este campo. Trata los conceptos de usabilidad de una manera muy clara, sencilla y amena. Además de ilustrar en todo momento, con ejemplos de web reales, sus ideas. También en varios capítulos, al final, presenta una serie de ejercicios utilizando webs de ejemplos. &lt;/p&gt;  &lt;p&gt;Entre otros temas habla sobre: cómo debe de ser la jerarquía de títulos dentro de la web; Cómo han de colocarse las “migas” para que el usuario sepa en todo momento donde se encuentra; Cómo colocar la información dentro de la web para que no resulte confusa al usuario; Cómo realizar pruebas de usabilidad para que estas resulten útiles; etc… &lt;/p&gt;  &lt;p&gt;Resumiendo un poco el libro. El autor viene a decir que de un solo vistazo, el usuario debe de saber: donde se encuentra dentro de la web y de que trata la web. Sobre esto esto habla a lo largo de los capítulos del libro:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Prólogo. &lt;/li&gt;    &lt;li&gt;Introducción. &lt;/li&gt;    &lt;li&gt;Capítulo 1. ¡No me hagas pensar!. &lt;/li&gt;    &lt;li&gt;Capítulo2. ¿Cómo usamos realmente la web?. &lt;/li&gt;    &lt;li&gt;Capítulo 3. Diseño de rótulos 101. &lt;/li&gt;    &lt;li&gt;Capítulo 4. ¿Animal, vegetal o mineral?. &lt;/li&gt;    &lt;li&gt;Capítulo 5. Omisión de palabras innecesarias. &lt;/li&gt;    &lt;li&gt;Capítulo 6. Señales en la calle y migas. &lt;/li&gt;    &lt;li&gt;Capítulo 7. El primer paso para la recuperación es admitir que ha perdido el control de la página principal. &lt;/li&gt;    &lt;li&gt;Capítulo 8. El granjero y el ganadero deben ser amigos. &lt;/li&gt;    &lt;li&gt;Capítulo 9. Prueba la usabilidad por 10 centavos el día. &lt;/li&gt;    &lt;li&gt;Capítulo 10. La usabilidad como cortesía común. &lt;/li&gt;    &lt;li&gt;Capítulo 11. Accesibilidad, hojas de estilo en cascada y usted. &lt;/li&gt;    &lt;li&gt;Capítulo 12 ¡Ayuda! Mi jefe quiere.... Lecturas recomendadas. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Además al final del libro el autor recomienda una serie de lecturas:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.amazon.com/Information-Architecture-World-Wide-Web/dp/0596527349/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743132&amp;amp;sr=8-1"&gt;Information Architecture for the World Wide Web&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Why-We-Buy-Shopping-Updated-Internet/dp/1416595244/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743214&amp;amp;sr=8-1"&gt;Why We Buy: The Science of Shopping&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Sources-Power-People-Make-Decisions/dp/0262611465/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743271&amp;amp;sr=8-1"&gt;Sources of Power: How People Make Decisions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Practice-Creativity-Manual-Dynamic-Problem-Solving/dp/0020086504/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743350&amp;amp;sr=8-1"&gt;The Practice of Creativity: A Manual for Dynamic Group Problem-Solving&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Homepage-Usability-50-Websites-Deconstructed/dp/073571102X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743470&amp;amp;sr=8-1"&gt;Homepage Usability: 50 Websites Deconstructed&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Web-Application-Design-Handbook-Technologies/dp/1558607528/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743535&amp;amp;sr=8-1"&gt;Web Application Design Handbook: Best Practices for Web-Based Software&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Defensive-Design-Web-improve-messages/dp/073571410X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743598&amp;amp;sr=8-1"&gt;Defensive Design for the Web&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Design-Everyday-Things-Donald-Norman/dp/0465067107/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743662&amp;amp;sr=8-1"&gt;The Design of Everyday Things&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Practical-Guide-Usability-Testing/dp/1841500208/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743746&amp;amp;sr=8-1"&gt;A Practical Guide to Usability Testing&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Usabilidad-Disenos-Sitios-Jakob-Nielsen/dp/8420530085/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1251743811&amp;amp;sr=8-1"&gt;Usabilidad, Diseños De Sitios Web&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Una lectura muy recomendable, no todo va a ser código.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50441" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/a3gDiqFmZGk" height="1" width="1"/&gt;</description><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/10/15/review-no-me-hagas-pensar.aspx</feedburner:origLink></item><item><title>Detección de Colisiones de Objetos 3D en WPF</title><link>http://feedproxy.google.com/~r/pedroafa/~3/s07S6H2Pi5g/detecci-243-n-de-colisiones-de-objetos-3d-en-wpf.aspx</link><pubDate>Tue, 06 Oct 2009 20:54:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50429</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/10/06/detecci-243-n-de-colisiones-de-objetos-3d-en-wpf.aspx#comments</comments><description>&lt;p&gt;Window Presentation Foundation proporciona la posibilidad de trabajar con objetos 3D dentro de una aplicación. Ello hace que se puedan desarrollar aplicaciones muy ricas utilizando modelos en 3D. &lt;/p&gt;
&lt;p&gt;Si la aplicación trabaja con objetos 3D que dan la posibilidad de desplazarse a lo largo de la pantalla puede ser interesante detectar colisiones entre ellos. A la hora de detectar colisiones entre objetos en una aplicación podemos optar por varias estrategias. Por ejemplo, dentro de XNA podemos encontrar: &lt;b&gt;&lt;i&gt;bounding box, bounding sphere y bounding frustrum&lt;/i&gt;&lt;/b&gt;. El Framework de XNA ya proporciona métodos para facilitar las colisiones entre los objetos.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;Bounding box&lt;/i&gt;&lt;/b&gt;: Esta técnica se utiliza cuando el objeto se adapta a una forma rectangular. Lo que hace es envolver el modelo en una caja. Si el modelo no es totalmente rectangular puede que se den falsas colisiones. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;bounding sphere&lt;/i&gt;&lt;/b&gt;: Es técnica envuelve el objeto con una esfera. Se utiliza cuando el modelo se adapta mejor a la forma de una esfera. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;bounding frustrum&lt;/i&gt;&lt;/b&gt;: Esta técnica no es usada realmente para controlar las colisiones. Ya que controla el espació visto por la cámara. Así puede determinar si lo que se está viendo es un objeto o no y por consiguiente decidir si dibujarlo o no. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;La técnica más sencilla de desarrollar con WPF es la de &lt;b&gt;&lt;i&gt;bounding box&lt;/i&gt;&lt;/b&gt;. El Framework proporciona los métodos necesarios para ello. &lt;img style="DISPLAY:inline;MARGIN-LEFT:0px;MARGIN-RIGHT:0px;" align="right" src="http://kartones.net/images_posts/sector7g/Deteccion_de_Colisiones_de_Objetos_3D_en_WPF_2.jpg" width="179" height="160" alt="Deteccion_de_Colisiones_de_Objetos_3D_en_WPF_2.jpg" /&gt; &lt;/p&gt;
&lt;p&gt;Dentro de un &lt;b&gt;GeometryModel3D&lt;/b&gt; podemos encontrar la propiedad &lt;b&gt;Bound&lt;/b&gt;. Esta propiedad devuelve un objeto del tipo &lt;b&gt;Rect3D&lt;/b&gt;. Este objeto representa el rectángulo que envuelve al modelo. Además la propia clase &lt;b&gt;Rect3D&lt;/b&gt; cuenta con un método, &lt;b&gt;IntersectsWith&lt;/b&gt;. Este método recibe como parámetros otro objeto &lt;b&gt;Rect3D&lt;/b&gt; y verifica si entre ambos rectángulos hay una intersección. Si hay una intersección, devuelve &lt;b&gt;True&lt;/b&gt;. Eso quiere decir que los objetos están colisionando.&lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b27dfbe2-f7aa-4b6a-840a-fa69a81468fc" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;MAX-HEIGHT:500px;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel1 = ((&lt;span style="COLOR:#2b91af;"&gt;GeometryModel3D&lt;/span&gt;)mv3D.Content).Bounds;&lt;br /&gt;&lt;span style="COLOR:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel2 = ((&lt;span style="COLOR:#2b91af;"&gt;GeometryModel3D&lt;/span&gt;)mv3D.Content).Bounds;&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (rectModel1.IntersectsWith(rectModel2))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//Se ha producido una colisión.&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//No hay colision entre ambos modelos.&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;img style="WIDTH:209px;DISPLAY:inline;HEIGHT:122px;MARGIN-LEFT:0px;MARGIN-RIGHT:0px;" align="left" src="http://kartones.net/images_posts/sector7g/Deteccion_de_Colisiones_de_Objetos_3D_en_WPF_1.jpg" width="242" height="152" alt="Deteccion_de_Colisiones_de_Objetos_3D_en_WPF_1.jpg" /&gt; Si sobre el modelo se ha hecho alguna transformación, habrá que tenerlo en cuenta a la hora de obtener el rectángulo que envuelve al modelo. De tal manera, que también esa transformación deberá ser aplicada al &lt;b&gt;Rect3D&lt;/b&gt; resultante. Para ello existe el método &lt;b&gt;TransformBounds&lt;/b&gt; que aplica las transformaciones a un &lt;b&gt;Rect3D&lt;/b&gt;. &lt;/p&gt;
&lt;div style="PADDING-BOTTOM:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;FLOAT:none;PADDING-TOP:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:853691ca-3290-42cb-a180-d49375fe1eac" class="wlWriterEditableSmartContent"&gt;
&lt;div style="BORDER-BOTTOM:#000080 1px solid;BORDER-LEFT:#000080 1px solid;FONT-FAMILY:&amp;#39;Courier New&amp;#39;, Courier, Monospace;COLOR:#000;FONT-SIZE:10pt;BORDER-TOP:#000080 1px solid;BORDER-RIGHT:#000080 1px solid;"&gt;
&lt;div style="PADDING-BOTTOM:2px;BACKGROUND-COLOR:#ffffff;PADDING-LEFT:5px;PADDING-RIGHT:5px;WHITE-SPACE:nowrap;OVERFLOW:auto;PADDING-TOP:2px;"&gt;&lt;span style="COLOR:#2b91af;"&gt;ModelVisual3D&lt;/span&gt; mv3D = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ModelVisual3D&lt;/span&gt;();&lt;br /&gt;&lt;span style="COLOR:#2b91af;"&gt;ModelVisual3D&lt;/span&gt; mv3D2 = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ModelVisual3D&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;mv3D.Content.Transform = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ScaleTransform3D&lt;/span&gt;(0.2, 0.2, 0.2);&lt;br /&gt;mv3D2.Content.Transform = &lt;span style="COLOR:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;ScaleTransform3D&lt;/span&gt;(0.2, 0.2, 0.2);&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel1 = mv3D.Transform.TransformBounds(mv3D.Content.Bounds);&lt;br /&gt;&lt;span style="COLOR:#2b91af;"&gt;Rect3D&lt;/span&gt; rectModel2 = mv3D2.Transform.TransformBounds(mv3D2.Content.Bounds);&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;if&lt;/span&gt; (rectModel1.IntersectsWith(rectModel2))&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//Se ha producido una colisión.&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="COLOR:#0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:#008000;"&gt;//No hay colision entre ambos modelos.&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50429" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/s07S6H2Pi5g" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/WPF+3.5/default.aspx">WPF 3.5</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/10/06/detecci-243-n-de-colisiones-de-objetos-3d-en-wpf.aspx</feedburner:origLink></item><item><title>Review: Scrum y XP desde las Trincheras</title><link>http://feedproxy.google.com/~r/pedroafa/~3/o-JLBbKSzbM/review-scrum-y-xp-desde-las-trincheras.aspx</link><pubDate>Wed, 08 Jul 2009 06:44:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50189</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/07/08/review-scrum-y-xp-desde-las-trincheras.aspx#comments</comments><description>&lt;p&gt;&lt;img style="MARGIN:0px 5px 0px 0px;DISPLAY:inline;" align="left" src="http://kartones.net/images_posts/sector7g/Review_Scrum_and_XP_from_the_Trenches.jpg" alt="Review_Scrum_and_XP_from_the_Trenches.jpg" /&gt;&lt;b&gt;Título: &lt;/b&gt;&lt;a href="http://www.infoq.com/minibooks/scrum-xp-from-the-trenches"&gt;Scrum and XP from the Trenches&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;Autor:&lt;/b&gt; &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/ref=ntt_athr_dp_sr_1?%5Fencoding=UTF8&amp;amp;search-type=ss&amp;amp;index=books&amp;amp;field-author=Henrik%20Kniberg"&gt;Henrik Kniberg&lt;/a&gt;&lt;b&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;Nº Páginas:&lt;/b&gt; 140&lt;/p&gt;
&lt;p&gt;En &lt;b&gt;&lt;i&gt;Scrum and XP from the Trenches&lt;/i&gt;&lt;/b&gt; su autor &lt;b&gt;&lt;i&gt;Henrik Kniberg&lt;/i&gt;&lt;/b&gt; habla sobre su experiencia con estas metodologías. Cuenta como ha aplicado y combinado estas dos metodologías los equipos de desarrollo de su empresa. Esto hace que se trate de un libro muy práctico, ameno y de fácil lectura. &lt;/p&gt;
&lt;p&gt;Henrik no profundiza mucho en los conceptos, pero sí que hace una descripción breve sobre ellos. Se centra más en explicar cómo ha aplicado las diferentes herramientas de Scrum y cuáles han sido sus conclusiones después de ver cómo funcionaban. Además habla de cómo ha combinado Scrum con XP y de los resultados obtenidos de ello.&lt;/p&gt;
&lt;p&gt;Lo interesante de este libro es justo el enfoque dado por el autor. Ver Scrum desde la práctica y la experiencia y no solamente desde el papel y la teoría. &lt;/p&gt;
&lt;p&gt;A lo largo del libro, Henrik habla de cómo realizar las pilas de producto, de cómo planificar los Sprints, cómo hacer retrospectivas del sprint, de cómo hacer pruebas, etc.… Concretamente el índice es el siguiente:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Introducción &lt;/li&gt;
&lt;li&gt;Cómo hacemos pilas de producto &lt;/li&gt;
&lt;li&gt;Cómo nos preparamos para la planificación de Sprint &lt;/li&gt;
&lt;li&gt;Cómo hacemos la planificación de Sprint &lt;/li&gt;
&lt;li&gt;Cómo comunicamos los Sprints &lt;/li&gt;
&lt;li&gt;Cómo hacemos pilas de Sprint &lt;/li&gt;
&lt;li&gt;Cómo distribuimos la sala del equipo &lt;/li&gt;
&lt;li&gt;Cómo hacemos Scrum diarios &lt;/li&gt;
&lt;li&gt;Cómo hacemos la demo de sprint &lt;/li&gt;
&lt;li&gt;Cómo hacemos retrospectivas de sprint &lt;/li&gt;
&lt;li&gt;Descansos entre Sprints &lt;/li&gt;
&lt;li&gt;Cómo combinamos Scrum con XP &lt;/li&gt;
&lt;li&gt;Cómo hacemos pruebas &lt;/li&gt;
&lt;li&gt;Cómo manejar múltiples equipos Scrum &lt;/li&gt;
&lt;li&gt;Cómo gestionamos equipos distribuidos geográficamente &lt;/li&gt;
&lt;li&gt;Lista de comprobación del Scrum Master &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Además al final de libro, el propio autor recomienda una serie de lecturas bastante interesantes sobre el tema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Managing-Design-Factory-Donald-Reinertsen/dp/0684839911/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121382&amp;amp;sr=8-1"&gt;Managing the Design Factory&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Implementing-Lean-Software-Development-Addison-Wesley/dp/0321437381/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121452&amp;amp;sr=1-1"&gt;Implementing Lean Software Development: From Concept to Cash&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Agile-Estimating-Planning-Robert-Martin/dp/0131479415/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121511&amp;amp;sr=1-1"&gt;Agile Estimating and Planning&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Joel-Software-Occasionally-Developers-Designers/dp/1590593898/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121592&amp;amp;sr=1-1"&gt;Joel on Software&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Lean-Software-Development-Agile-Toolkit/dp/0321150783/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121695&amp;amp;sr=1-1"&gt;Lean Software Development: An Agile Toolkit&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Balancing-Agility-Discipline-Guide-Perplexed/dp/0321186125/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121751&amp;amp;sr=1-1"&gt;Balancing Agility and Discipline: A Guide for the Perplexed&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Agile-Software-Development-Scrum/dp/0130676349/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121821&amp;amp;sr=1-1"&gt;Agile Software Development with Scrum&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121878&amp;amp;sr=1-1"&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Agile-Project-Management-Microsoft-Professional/dp/073561993X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121935&amp;amp;sr=1-1"&gt;Agile Project Management with Scrum&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246121992&amp;amp;sr=1-1"&gt;Extreme Programming Explained: Embrace Change&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246122045&amp;amp;sr=1-1"&gt;Peopleware: Productive Projects and Teams&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;El libro lo podréis contra en varios idiomas, también en español, aunque personalmente os recomiendo la versión en inglés. &lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50189" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/o-JLBbKSzbM" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/Agile+Methods/default.aspx">Agile Methods</category><category domain="http://kartones.net/blogs/sector7g/archive/tags/XP/default.aspx">XP</category><category domain="http://kartones.net/blogs/sector7g/archive/tags/Scrum/default.aspx">Scrum</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/07/08/review-scrum-y-xp-desde-las-trincheras.aspx</feedburner:origLink></item><item><title>Localización de una Aplicación Basada en PRISM</title><link>http://feedproxy.google.com/~r/pedroafa/~3/fLYSTa0MgN0/localizaci-243-n-de-una-aplicaci-243-n-basada-en-prism.aspx</link><pubDate>Wed, 01 Jul 2009 19:57:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50172</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/07/01/localizaci-243-n-de-una-aplicaci-243-n-basada-en-prism.aspx#comments</comments><description>&lt;p&gt;Es difícil localizar una aplicación WPF con las herramientas proporcionadas en el .Net Framework 3.5. El proceso para realizarlo sería el siguiente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Generar un diccionario de recursos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enlazar el diccionario a la aplicación en el App.xaml.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ejecutar el MSBuild script para generar un Id único para cada control localizable en la aplicación.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ejecutar la herramienta LocBaml (incluida en el SDK) para extraer todos los Aid en un archivo separado por comas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copiar el archivo generado por LocBaml a una carpeta (una para cada lenguaje).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Volver a ejecutar la herramienta LocBaml para importas todas las entradas dentro del diccionario.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Compilar. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Esta forma de hacerlo tiene algunos problemas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sólo puedes tener un archivo de diccionario de recursos por aplicación. Cada módulo no podrá tener el suyo propio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El proceso es difícil y propenso a los errores. Lo que hace que sea costoso de mantener.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No puedes cambiar el lenguaje de la aplicación en tiempo de ejecución. Es necesario reiniciar la aplicación para poder reflejar el cambio de idioma.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Para arquitecturas como PRISM (&lt;i&gt;Composite Application Guidance for WPF&lt;/i&gt;), que se basan en módulos, es muy importante que cada módulo pueda tener sus propios archivos de recursos. Puede que estos módulos sean desarrollados por separado y equipos diferentes. Además es interesante que el proceso de localización sea sencillo y fácilmente mantenible. Normalmente los textos de las traducciones suelen cambiar bastante.&lt;/p&gt;
&lt;p&gt;Para solucionar esto, y solventar todos los problemas existe &lt;a href="http://www.codeplex.com/WPFLocalizeExtension/"&gt;WPFLocalizeExtension&lt;/a&gt;. Se trata de un framework open source. Este framework ha sido modificado para soportar localización de assemblies (plug-in) cargados dinámicamente.&lt;/p&gt;
&lt;p&gt;Este framework se basa en archivos de recursos lo que hace que sea bastante sencillo mantener las traducciones de los diferentes idiomas. Así que cada módulo puede tener su propio archivo de recursos con sus traducciones. Además, permite cambios de idioma en caliente. &lt;/p&gt;
&lt;p&gt;Ahora el proceso de localización es más sencillo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Modificar el archivo de proyecto .csproj añadiendo &lt;b&gt;&lt;i&gt;&amp;lt;UICulture&amp;gt;en-US&amp;lt;/UICulture&amp;gt;&lt;/i&gt;&lt;/b&gt; en el primer tag &lt;b&gt;PropertyGroup&lt;/b&gt;. Este será el lenguaje neutral de la aplicación.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Crear un archivo de recursos para el Lenguaje Neutral (&lt;b&gt;Shell.resx&lt;/b&gt;) y añadir una entrada por cada control que se necesite localizar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Para añadir otro idioma copiar y pegar el archivo de recursos (&lt;b&gt;Shell.resx&lt;/b&gt;) y renombrarlo a &lt;b&gt;Shell.es-ES.resx&lt;/b&gt;. Traducir todas las etiquetas a español, en este caso.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Para localizar una vista (un archivo .xaml):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Añadir una referencia a la librería de&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;a href="http://www.codeplex.com/WPFLocalizeExtension/"&gt;WPFLocalizeExtension&lt;/a&gt;.&lt;b&gt;&lt;i&gt; xmlns:loc=&amp;quot;clr-namespace:LocalizeExtension.Localization;assembly=LocalizeExtension&amp;quot;&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Para la propiedad que haya que traducir utilizar: &lt;b&gt;&lt;i&gt;{loc:LocText loc:Key=CustomerLabel, loc:Dict=Shell, loc:Assembly=MyAssembly.Shell}&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Key&lt;/b&gt;: Es el nombre del texto a mostrar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Dict&lt;/b&gt;: Es el nombre del archivo de recursos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Assembly&lt;/b&gt;: Es la dll donde se encuentra el archivo de recursos.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Compilar.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Este proceso es mucho menos complejo que el estándar y facilita bastante las cosas como se puede ver.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50172" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/fLYSTa0MgN0" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/Composite+Application+WPF/default.aspx">Composite Application WPF</category><category domain="http://kartones.net/blogs/sector7g/archive/tags/WPF/default.aspx">WPF</category><category domain="http://kartones.net/blogs/sector7g/archive/tags/PRISM/default.aspx">PRISM</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/07/01/localizaci-243-n-de-una-aplicaci-243-n-basada-en-prism.aspx</feedburner:origLink></item><item><title>A program on your computer has corrupted your default search provider setting for Internet Explorer</title><link>http://feedproxy.google.com/~r/pedroafa/~3/GX_GXM6vRFk/a-program-on-your-computer-has-corrupted-your-default-search-provider-setting-for-internet-explorer.aspx</link><pubDate>Mon, 29 Jun 2009 21:59:17 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50171</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/06/29/a-program-on-your-computer-has-corrupted-your-default-search-provider-setting-for-internet-explorer.aspx#comments</comments><description>&lt;p&gt;Hace unas semanas el Windows Update decidió actualizar mi versión de Explorer de la versión 7 a la 8 en mi &lt;b&gt;Windows XP&lt;/b&gt;. Desde entonces al abrir el explorer ha estado apareciendo el siguiente mensaje de error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;i&gt;“A program on your computer has corrupted your default search provider setting for Internet Explorer.&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;&lt;i&gt;Internet Explorer has reset this setting to your original search provider, Live Search (search.live.com).&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;&lt;i&gt;Internet Explorer will now open Search Settings, where you can change this setting or install more search providers.”&lt;/i&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;La solución al problema es bastante sencilla:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;Con el IE 8 cerrado ir a esta clave de registro: &lt;b&gt;&lt;i&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\&lt;/i&gt;&lt;/b&gt; &lt;b&gt;&lt;i&gt;Explorer\User Shell Folders&lt;/i&gt;&lt;/b&gt;. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Añadir una nueva clave de registro del tipo &lt;b&gt;&lt;i&gt;Expandable String value&lt;/i&gt;&lt;/b&gt;. Con la &lt;i&gt;key&lt;/i&gt; &lt;b&gt;&lt;i&gt;AppData&lt;/i&gt;&lt;/b&gt; y el campo &lt;i&gt;value&lt;/i&gt; &lt;b&gt;&lt;i&gt;%USERPROFILE%\Application Data&lt;/i&gt;&lt;/b&gt;. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Abrir el IE 8 y verificar que no vuelve a salir el mensaje. &lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50171" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/GX_GXM6vRFk" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/IE+8/default.aspx">IE 8</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/06/29/a-program-on-your-computer-has-corrupted-your-default-search-provider-setting-for-internet-explorer.aspx</feedburner:origLink></item><item><title>Desarrollando Aplicaciones Cliente y Web con WFP y Silverlight</title><link>http://feedproxy.google.com/~r/pedroafa/~3/VBWriP0wDbs/desarrollando-aplicaciones-cliente-y-web-con-wfp-y-silverlight.aspx</link><pubDate>Wed, 24 Jun 2009 07:54:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50164</guid><dc:creator>Pedroafa</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/sector7g/archive/2009/06/24/desarrollando-aplicaciones-cliente-y-web-con-wfp-y-silverlight.aspx#comments</comments><description>&lt;p&gt;El otro día a raíz de un post de Juan, &lt;a href="http://geeks.ms/blogs/jirigoyen/archive/2009/06/17/windows-presentation-foundati-243-n-el-final-de-windows-forms.aspx#comments"&gt;Windows Presentation Foundation. El final de Windows Forms…&lt;/a&gt;, alguien preguntaba si era posible desarrollar la misma aplicación para ejecutarla en un cliente Windows y un cliente web. Posible sí que es y además hay varias opciones para conseguirlo, aunque habrá que tener en cuenta las limitaciones que existen.&lt;/p&gt;
&lt;p&gt;La primera opción que se presenta es crear &lt;b&gt;una aplicación WPF y XBAP&lt;/b&gt;. Esto se puede conseguir usando el Template para Visual Studio, &lt;b&gt;Flexible Application&lt;/b&gt;. Este template lo que hace es proveer en un solo proyecto la capacidad de compilar en exe y xbap. Dependiendo del tipo de compilación utilizado se generará la aplicación para que corra bajo Windows o se ejecute en el Explorer.&lt;/p&gt;
&lt;p&gt;Evidentemente esta práctica tiene sus ventajas e inconvenientes.&lt;/p&gt;
&lt;p&gt;Ventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;u&gt;Con un solo desarrollo tiene las dos aplicaciones&lt;/u&gt;. El código va a ser el mismo para los dos entornos, simplemente va a cambiar el tipo de compilación realizada.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Desventajas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;u&gt;Sólo para plataforma Windows&lt;/u&gt;. Cómo XBAP se ejecuta en el cliente, el cliente debe tener instalado el .Net Framework. Esto limita los entornos en los que la aplicación puede ser utilizada.&lt;/li&gt;
&lt;li&gt;&lt;u&gt;XBAP se encuentra limitado al ejecutarse en un &lt;/u&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480229.aspx"&gt;Sandbox&lt;/a&gt;. Esto hace que haya que tener en cuenta estas restricciones de seguridad a la hora de plantear el desarrollo.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Referencias sobre el Template de &lt;b&gt;Flexible Application&lt;/b&gt;: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://scorbs.com/2006/06/04/vs-template-flexible-application/"&gt;VS Template: Flexible Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://scorbs.com/2006/06/04/tips-tricks-for-flexible-application/"&gt;Tips &amp;amp; Tricks for Flexible Application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://scorbs.com/vstemplates/Flexible%20Application%20(WPF).zip"&gt;Descargar el Template&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;La segunda opción sería realizar dos desarrollos paralelos: &lt;b&gt;uno en WPF y otro en Silverlight&lt;/b&gt;. Para llevar esto acabo habría que realizar un desarrollo específico para cada tecnología. Probablemente las aplicaciones no serían iguales. Silverlight no es igual de potente que WPF, así que habría que tener en cuenta las limitaciones de esta. &lt;/p&gt;
&lt;p&gt;El New York Times recientemente se ha encontrado con esta problemática. Se veían obligados a tener que mantener dos aplicaciones diferentes y que además realmente no ofrecían la misma funcionalidad a los diferentes usuarios. Un usuario de MAC, que sólo puede utilizar la aplicación Silverlight, no contaba con las mismas opciones que uno de Windows con la aplicación WPF. Por este motivo, el New York Times opto por Adobe Air. Abode Air si permite ejecutar sus aplicaciones tanto en entornos Windows como Web.&lt;/p&gt;
&lt;p&gt;Así que la tercera, y última opción, es &lt;b&gt;Silverlight 3&lt;/b&gt;. Silverlight 3 nace con la idea de competir con Adobe Air. Ya que esta nueva versión si permite que la aplicación viva “out of browser”. &lt;/p&gt;
&lt;p&gt;Con Silverlight 3, una aplicación podrá ser ejecutada en un cliente Windows y en un cliente Web. Así que con un solo desarrollo la aplicación podrá correr bajo ambos entornos. Además la aplicación será multiplataforma ya que Silverlight si puede ser utilizado en MAC, por ejemplo. Al ser la misma aplicación también contara con la misma funcionalidad para todos los usuarios de los diferentes entornos.&lt;/p&gt;
&lt;p&gt;El único problema que presenta esta solución es que es necesario conocer las limitaciones de la tecnología. Silverlight 3 todavía no es WPF, aunque empieza a estar cerca. Además hay que tener en cuenta que se ejecuta dentro de un Sandbox de seguridad. Cosa que limitará la funcionalidad de la misma.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50164" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/pedroafa/~4/VBWriP0wDbs" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/sector7g/archive/tags/WPF/default.aspx">WPF</category><category domain="http://kartones.net/blogs/sector7g/archive/tags/Silverlight/default.aspx">Silverlight</category><feedburner:origLink>http://kartones.net/blogs/sector7g/archive/2009/06/24/desarrollando-aplicaciones-cliente-y-web-con-wfp-y-silverlight.aspx</feedburner:origLink></item></channel></rss>
