<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>El Concilio de Rivendel</title><link>http://geeks.ms/blogs/akhan/default.aspx</link><description>Anuar Khan Alí</description><dc:language /><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Mix 2010 Open Call Vote. Vota por Plain, vota por ti ;)</title><link>http://geeks.ms/blogs/akhan/archive/2010/01/08/mix-2010-open-call-vote-vota-por-plain-vota-por-ti.aspx</link><pubDate>Fri, 08 Jan 2010 07:19:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:164580</guid><dc:creator>Anuar Khan Ali</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/akhan/rsscomments.aspx?PostID=164580</wfw:commentRss><comments>http://geeks.ms/blogs/akhan/archive/2010/01/08/mix-2010-open-call-vote-vota-por-plain-vota-por-ti.aspx#comments</comments><description>&lt;p&gt;Como ya ha comentado mi querido compa&amp;ntilde;ero &lt;a href="http://geeks.ms/blogs/amolleda/archive/2010/01/07/mix-2010-open-call-vote.aspx" title="MIX 2010"&gt;Anton &lt;/a&gt;( alias Antuan para los amigos) este a&amp;ntilde;o la organizaci&amp;oacute;n del MIX 2010 ha decidido que 5 de las charlas serian escogidas por la comunidad, la lista de las charlas que se pueden votar esta en el siguiente enlace: &lt;a href="http://visitmix.com/opencallvote" title="http://visitmix.com/opencallvote"&gt;http://visitmix.com/opencallvote&lt;/a&gt;. &lt;br /&gt;Aunque como digo en el titulo del post, &amp;quot;te pedimos&amp;quot; que votes por Plain, porque es una forma de votar por ti ;). Os dejo los enlaces de las cinco charlas que propone PlainConcepts.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://visitmix.com/opencallvote/Entry?entryId=BECOMI063"&gt;BECOMING SOCIAL. How to power up your website using social networks&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://visitmix.com/opencallvote/Entry?entryId=PLAINC065"&gt;PLAIN CONCEPTS&amp;rsquo; SILVERLIGHT LIVE MESSENGER TOOLKIT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://visitmix.com/opencallvote/Entry?entryId=SILVER066"&gt;SILVERLIGHT IN THE AUDIOVISUAL WORLD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://visitmix.com/opencallvote/Entry?entryId=EXTEND064"&gt;EXTENDING THE WINDOWS LIVE MESSENGER WEB TOOLKIT WITH SCRIPT# AND SILVERLIGHT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://visitmix.com/opencallvote/Entry?entryId=WHATYO067"&gt;WHAT YOU SEE IS NOT WHAT IS THERE. Users mind as a resource in Expression Blend&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Solo ten&amp;eacute;is que pinchar sobre &amp;quot;Add to ballot&amp;quot;. Una vez hecho esto sobre todas, pinchad en &amp;quot;Submit Your Ballot&amp;quot;&amp;nbsp; y listo.&lt;/p&gt;
&lt;p&gt;Ten&amp;eacute;is hasta el 15 de enero para votar&lt;/p&gt;
&lt;p&gt;Un saludo y muchas gracias a todos.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=164580" width="1" height="1"&gt;</description></item><item><title>Próximo evento WPF en Santander: "La revolución en UX: Destripando WPF"</title><link>http://geeks.ms/blogs/akhan/archive/2009/07/08/proximo-evento-wpf-en-santander-quot-la-revoluci-243-n-en-ux-destripando-wpf-quot.aspx</link><pubDate>Wed, 08 Jul 2009 11:52:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:152003</guid><dc:creator>Anuar Khan Ali</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/akhan/rsscomments.aspx?PostID=152003</wfw:commentRss><comments>http://geeks.ms/blogs/akhan/archive/2009/07/08/proximo-evento-wpf-en-santander-quot-la-revoluci-243-n-en-ux-destripando-wpf-quot.aspx#comments</comments><description>&lt;p&gt;El pr&amp;oacute;ximo dia 24 de julio mi gran compa&amp;ntilde;ero&lt;a href="http://geeks.ms/blogs/rvivancos/"&gt; Roberto Vivancos&lt;/a&gt;&amp;nbsp; y yo impartiremos un evento en Santander, mi querida tierra natal :) . El evento esta organizado por el CIIN y tratara como se ve en el titulo del post sobre Windows Presentation Foundation (WPF), intentaremos dar una visi&amp;oacute;n lo mas completa posible tanto en la parte de dise&amp;ntilde;o como de desarrollo. Os dejo el enlace de &lt;a href="http://www.ciin.es/web/servicios/eventos/Paginas/WPF24072009.aspx?Fecha=24-07-2009"&gt;inscripci&amp;oacute;n&lt;/a&gt;. Espero que os anim&amp;eacute;is, sobre todo la gente de Cantabria. Tan solo ya dar las gracias al CIIN y especialemente a Juan Carlos por todo su apoyo y trabajo de organizaci&amp;oacute;n del evento.&lt;/p&gt;
&lt;p&gt;Un saludo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=152003" width="1" height="1"&gt;</description></item><item><title>Como poder usar nuestras Dependecy Properties desde Microsoft Expression Blend</title><link>http://geeks.ms/blogs/akhan/archive/2009/06/25/como-poder-usar-nuestras-dependecy-properties-desde-microsoft-expression-blend.aspx</link><pubDate>Thu, 25 Jun 2009 09:36:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:151232</guid><dc:creator>Anuar Khan Ali</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/akhan/rsscomments.aspx?PostID=151232</wfw:commentRss><comments>http://geeks.ms/blogs/akhan/archive/2009/06/25/como-poder-usar-nuestras-dependecy-properties-desde-microsoft-expression-blend.aspx#comments</comments><description>&lt;p&gt;A menudo cuando se tiene que realizar una interfaz de usuario o una aplicaci&amp;oacute;n en Windows Presentation Foundation (WPF) es necesario crear controles personalizados: botones especiales con animaciones, controles de gesti&amp;oacute;n de fecha, sem&amp;aacute;foros que describan alg&amp;uacute;n estado, etc.&lt;/p&gt;
&lt;p&gt;Al crear estos controles es muy normal que se le definan unas Dependecy Properties, que definan el comportamiento o las caracter&amp;iacute;sticas del control.Para utilizar posteriormente estos controles en tiempo de dise&amp;ntilde;o es muy &amp;uacute;til que estas propiedades est&amp;eacute;n accesibles&amp;nbsp; para poder realizar los Data Binding de una manera r&amp;aacute;pida desde Expression Blend.&lt;/p&gt;
&lt;p&gt;Para llevar a cabo este cometido tan solo se tiene que a&amp;ntilde;adir el siguiente c&amp;oacute;digo antes de la definici&amp;oacute;n de la Dependecy Property.&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;[&lt;span style="color:#2b91af;"&gt;Category&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Propiedades Alumno&amp;quot;&lt;/span&gt;)]&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;"&gt;public&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; Nombre&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;get&lt;/span&gt; { &lt;span style="color:blue;"&gt;return&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt;)GetValue(NombreProperty);
}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;set&lt;/span&gt; {
SetValue(NombreProperty, &lt;span style="color:blue;"&gt;value&lt;/span&gt;); }&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;"&gt;// Using a
DependencyProperty as the backing store for Nombre.&lt;span&gt;&amp;nbsp; &lt;/span&gt;This enables animation, styling, binding,
etc...&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom:0.0001pt;line-height:normal;"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;static&lt;/span&gt; &lt;span style="color:blue;"&gt;readonly&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DependencyProperty&lt;/span&gt; NombreProperty =&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DependencyProperty&lt;/span&gt;.Register(&lt;span style="color:#a31515;"&gt;&amp;quot;Nombre&amp;quot;&lt;/span&gt;, &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;), &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;TestControl&lt;/span&gt;));&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;
Donde &amp;ldquo;Propiedades Alumno&amp;rdquo; es el nombre de la categor&amp;iacute;a que va a aparecer en la&amp;nbsp; lista de propiedades que est&amp;aacute;n situadas en la columna de la derecha en Expression Blend.&lt;br /&gt;Por lo tanto al utilizar el control en alguna ventana o en otro UserControl aparecer&amp;aacute;n estas propiedades en el dise&amp;ntilde;ador para poder utilizarlas de la manera c&amp;oacute;moda y sencilla en tiempo de dise&amp;ntilde;o, como se puede ver en la siguiente figura.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.26.72/imagen-post-1.jpg"&gt;&lt;img src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Components.UserFiles/00.00.00.26.72/imagen-post-1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;De esta forma ya se tiene el control listo para usar, pudiendo acceder a sus propiedades en tiempo de dise&amp;ntilde;o.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Un saludo a todos y espero que os guste&amp;nbsp; u os sea util, Anuar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=151232" width="1" height="1"&gt;</description></item><item><title>Windows Presentation Foundation y Entity Framework, poderosa combinación II: No todo lo que reluce es oro.</title><link>http://geeks.ms/blogs/akhan/archive/2009/06/22/windows-presentation-foundation-y-entity-framework-poderosa-combinaci-243-n-ii-no-todo-lo-que-reluce-es-oro.aspx</link><pubDate>Mon, 22 Jun 2009 08:04:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:150955</guid><dc:creator>Anuar Khan Ali</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/akhan/rsscomments.aspx?PostID=150955</wfw:commentRss><comments>http://geeks.ms/blogs/akhan/archive/2009/06/22/windows-presentation-foundation-y-entity-framework-poderosa-combinaci-243-n-ii-no-todo-lo-que-reluce-es-oro.aspx#comments</comments><description>&lt;p&gt;Una de las principales caracter&amp;iacute;sticas de Windows Presentation Foundation (WPF) es el Data Binding, con el se puede unir de una forma r&amp;aacute;pida la interfaz de usuario con nuestras propiedades, ya sean datos de negocios o simplemente propiedades con las que se quieren controlar ciertas acciones de la interfaz.&lt;br /&gt;Ahora bien, &amp;iquest;qu&amp;eacute; aporta este Data Binding realmente? Pues lo que aporta es una forma de trabajar muy c&amp;oacute;moda, tanto a nivel de dise&amp;ntilde;o con Expression Blend o en c&amp;oacute;digo, de tal forma que si se tiene una serie de controles de texto que siempre utilizan la misma propiedad, al &amp;ldquo;bindear&amp;rdquo; estos controles a nuestra propiedad, solo se tiene que modificar el valor de la propiedad y todos los controles obtendr&amp;aacute;n ese valor en vez de tener que modificar manualmente el valor de cada uno de ellos.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Otro ejemplo muy visual, es el t&amp;iacute;pico caso de que se quiere controlar la visibilidad o si son accesibles una serie de controles en funci&amp;oacute;n por ejemplo, de una pol&amp;iacute;tica de usuario como puede ser, que sea o no administrador de la aplicaci&amp;oacute;n. En este caso bastar&amp;iacute;a con &amp;ldquo;bindear&amp;rdquo; la propiedad de visibilidad o de habilitado a una propiedad, y al cambiar el valor esta propiedad cambiar&amp;iacute;an la visibilidad o el estado de habilitado autom&amp;aacute;ticamente, sin tener que tocar manualmente cada control.&lt;br /&gt;As&amp;iacute; que siguiendo esta filosof&amp;iacute;a, se puede &amp;ldquo;bindear&amp;rdquo; las entidades que suministra Entity Frammework (EF) para los formularios controles que se tengan que desarrollar y as&amp;iacute; poder utilizar esta potente caracter&amp;iacute;stica, de tal forma que solo modificando los valores de las propiedades de las entidades que proporciona EF y que todo ello se refresque en nuestra interfaz.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Pero como dice el titulo de este post &amp;ldquo;No todo lo que reluce es oro&amp;rdquo;. &amp;iquest;Y esto por qu&amp;eacute;? Pues porque el Data Binding de WPF est&amp;aacute; pensado para utilizarse con Dependency Properties, que es un tipo de propiedades un poco especiales, tienen varias caracter&amp;iacute;sticas importantes, como que permite un coerce o validaci&amp;oacute;n de los datos, pero la caracter&amp;iacute;stica que m&amp;aacute;s importante para el caso que nos ocupa es que estas propiedades implementan INotifyPropertyChanged y heredan de la clase DepencyObject, con lo cual lanzan un evento de cambio cada vez que se actualiza la propiedad. Este evento de cambio lanzado por la propiedad es recogido por WPF y el gestiona autom&amp;aacute;ticamente los cambios y actualiza los datos en pantalla sin tener que actualizar manualmente los valores en los controles.&lt;br /&gt;&amp;iquest;Y cu&amp;aacute;l es nuestro problema? Pues por si no os hab&amp;eacute;is dado cuenta todav&amp;iacute;a, las entidades que proporciona EF, no implementan INotifyPropertyChanged, por lo tanto si &amp;ldquo;bindeamos&amp;rdquo; estas entidades la interfaz de WPF no se enterara de los cambios. As&amp;iacute; que nuestro gozo en pozo y todas las expectativas e ilusiones se acaban de diluir.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Pero tampoco hay que desesperar, siempre se encuentra una soluci&amp;oacute;n. B&amp;aacute;sicamente se tienen tres posibilidades ante este problema.&lt;br /&gt;La primera posibilidad es crear una Dependency Property del tipo de la entidad de EF, en el c&amp;oacute;digo subyacente del control de usuario a utilizar. Esta posibilidad tiene una gran limitaci&amp;oacute;n, y es que de esta forma la interfaz se da cuenta de los cambios de entidad no de los cambios de las propiedades de la entidad, as&amp;iacute; que este caso no es &amp;uacute;til en la mayor&amp;iacute;a de los casos.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;La segunda posibilidad es crear un nuevo grafo en memoria de las entidades de EF, pero esta vez heredando de DependencyObject y las propiedades siendo Dependency Properties. Esta posibilidad da toda el jugo a WPF y toda las posibilidades, pero en contra tiene que puede ser complicado y pesado reconstruir el grafo, sobre todo si se est&amp;aacute; trabajando con servicios, y que hay que manejar con mucho cuidado los cambios para que el contexto siempre siga la traza de nuestras Entidades.&lt;br /&gt;La tercera posibilidad, no es tan potente como la anterior pero en muchos casos es suficiente. La forma de realizarlo es la siguiente: Se crean clases parciales de las entidades que proporciona EF y estas clases se hace que implementen INotifyPropertyChanged, ya que no se tiene ninguna restricci&amp;oacute;n para implementar interfaces. Despu&amp;eacute;s se hace que las propiedades lancen en evento de cambio.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;De esta forma WPF ser&amp;aacute; consciente de los cambios y actualizara la interfaz de modo autom&amp;aacute;tico como si estuviera trabajando con Dependency Properties. Esta opci&amp;oacute;n no da todas las posibilidades que si se usara Dependency Property pero en muchos casos ser&amp;aacute; muy &amp;uacute;til y suficiente.&lt;br /&gt;Bueno y hasta aqu&amp;iacute; este segundo post sobre WPF y EF, espero que os haya parecido interesante u os resulte &amp;uacute;til. &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Un saludo, Anuar.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=150955" width="1" height="1"&gt;</description></item><item><title>Windows Presentation Foundation y Entity Framework, poderosa combinación I : Como surtir de datos a un control TreeView</title><link>http://geeks.ms/blogs/akhan/archive/2009/03/10/windows-presentation-foundation-y-entity-framework-poderosa-combinaci-243-n-i-como-surtir-de-datos-a-un-control-treeview.aspx</link><pubDate>Tue, 10 Mar 2009 17:39:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:144601</guid><dc:creator>Anuar Khan Ali</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/akhan/rsscomments.aspx?PostID=144601</wfw:commentRss><comments>http://geeks.ms/blogs/akhan/archive/2009/03/10/windows-presentation-foundation-y-entity-framework-poderosa-combinaci-243-n-i-como-surtir-de-datos-a-un-control-treeview.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family:times new roman,times;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-size:medium;"&gt;En uno de los proyectos los que estamos trabajando en &lt;/span&gt;&lt;a href="http://www.plainconcepts.com/"&gt;&lt;span style="font-size:medium;"&gt;Plain Concepts&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:medium;"&gt;, hemos tenido que trabajar con el control TreeView de &lt;/span&gt;&lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/231006/voices/introducingwpf.mspx"&gt;&lt;span style="font-size:medium;"&gt;Windows Presentation Foundation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:medium;"&gt; (WPF)&amp;nbsp; y con &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx"&gt;&lt;span style="font-size:medium;"&gt;Entity Framework&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:medium;"&gt; (EF), como fuente de los datos que se suministran a nuestro control TreeView, as&amp;iacute; que voy a ir escribiendo una serie de post con el titulo &amp;quot;Windows Presentation Foundation y Entity Framework, poderosa combinaci&amp;oacute;n&amp;quot; sobre c&amp;oacute;mo combinar estas&amp;nbsp;grandes tecnolog&amp;iacute;as.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:times new roman,times;"&gt;&lt;span style="font-size:medium;"&gt;En este primer post voy a centrarme en c&amp;oacute;mo definir la forma de suministrar los datos al control TreeView. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:times new roman,times;"&gt;&lt;span style="font-size:medium;"&gt;El control TreeView, como otros controles que heredan de la clase ItemsControl, admiten dos formas de insertarle los elementos hijos. A trav&amp;eacute;s de la propiedad ItemSource en el que podemos pasarle una colecci&amp;oacute;n que implemente IEnumerable, o bien con la propiedad Items e ir a&amp;ntilde;adiendo los elementos que queramos. Estas dos formas no se pueden combinar, sino que debemos de escoger entre una u otra para surtir a nuestro control de los datos que queremos. Ahora bien, &amp;iquest;Qu&amp;eacute; diferencias hay, o cuando es conveniente usar una forma o la otra?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:times new roman,times;"&gt;&lt;span style="font-size:small;"&gt;&lt;br /&gt;&lt;span style="font-size:medium;"&gt;Si utilizamos ItemSource, simplemente le pasamos la colecci&amp;oacute;n en la que tenemos los datos, y el a&amp;ntilde;ade los elementos de la propia colecci&amp;oacute;n. &amp;iquest;Pero qu&amp;eacute; ocurre si queremos a&amp;ntilde;adir o eliminar la lista? Pues que si no hemos definido un Databinding debemos de modificar la colecci&amp;oacute;n y volver a modificar el valor de la propiedad ItemSource.&amp;nbsp; En un principio esta forma de trabajar esta m&amp;aacute;s pensada para elementos que son listas de objetos, como ListView, ListBox o ComboBox, en la que no se va ir modificando la colecci&amp;oacute;n. Como a&amp;ntilde;adido a este caso, podemos pasarle a la propiedad ItemSource una estructura Hierarchical DataTemplates, como por ejemplo un XML, y el propio control TreeView es capaz de representarnos esta estructura jerarquica. Este caso lo veremos m&amp;aacute;s en particular en un futuro post.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:times new roman,times;"&gt;&lt;span style="font-size:medium;"&gt;El otro camino de trabajar con el control TreeView es ir a&amp;ntilde;adiendo manualmente los objetos a trav&amp;eacute;s de la propiedad Items. Para ser m&amp;aacute;s exactos la forma correcta seria ir a&amp;ntilde;adiendo TreeViewItems, insertar en la propiedad DataContex el objeto que queramos poner en el &amp;aacute;rbol, e ir anidando la estructura de datos que queremos obtener, ya que a un elemento TreeViewItem le podemos ir a&amp;ntilde;adiendo hijos de la misma manera que al control TreeView.&lt;br /&gt;Un ejemplo de c&amp;oacute;mo realizar este caso, puede ser el siguiente c&amp;oacute;digo.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;COLOR:#2b91af;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;List&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Aplicacion&lt;/span&gt;&amp;gt; source = Aplications.RetrieveAllAplications();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR:#2b91af;"&gt;Aplicacion&lt;/span&gt; item &lt;span style="COLOR:blue;"&gt;in&lt;/span&gt; source)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;TreeViewItem&lt;/span&gt; aux = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;TreeViewItem&lt;/span&gt;();&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;aux.DataContext = item;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-ansi-language:EN-US;mso-no-proof:yes;" lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;node.Items.Add(aux);&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:times new roman,times;"&gt;&lt;span style="font-size:medium;"&gt;Hasta aqu&amp;iacute; este primer post, espero que os pueda ser de utilizad, en los siguientes post iremos viendo mas curiosidades y caracter&amp;iacute;sticas sobre el control TreeView&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=144601" width="1" height="1"&gt;</description></item><item><title>Año nuevo, blog nuevo</title><link>http://geeks.ms/blogs/akhan/archive/2009/01/07/a-241-o-nuevo-blog-nuevo.aspx</link><pubDate>Wed, 07 Jan 2009 10:44:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:138736</guid><dc:creator>Anuar Khan Ali</dc:creator><slash:comments>15</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.ms/blogs/akhan/rsscomments.aspx?PostID=138736</wfw:commentRss><comments>http://geeks.ms/blogs/akhan/archive/2009/01/07/a-241-o-nuevo-blog-nuevo.aspx#comments</comments><description>&lt;p&gt;Hola a todos, soy Anuar Khan Alí y desde septiembre soy miembro de la PlainNave, después de unos meses de aterrizaje y transición me he decidido a inaugurar mi blog de Geeks. Presumiblemente iré hablando sobre WPF y EF principalmente,&amp;nbsp; y puede que vez en cuando sobre SharePoint, verdad Juan Carlos.&lt;/p&gt;
&lt;p&gt;Tan solo dar las gracias a Plain Concepts por esta oportunidad y un saludo a todo Geeks.&lt;/p&gt;
&lt;p&gt;Anuar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=138736" width="1" height="1"&gt;</description></item></channel></rss>
