<?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:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3959218695454323725</atom:id><lastBuildDate>Thu, 16 Feb 2012 15:34:04 +0000</lastBuildDate><category>Ribbon</category><category>popfly</category><category>Collections</category><category>mashup</category><category>Toolkit</category><category>Speech</category><category>SQL</category><category>WPF</category><category>Silverlight</category><category>MDI</category><category>Windows 7</category><category>Reporting Server</category><title>Around WPF and more</title><description>Thinking WPF</description><link>http://juan-ve.blogspot.com/</link><managingEditor>noreply@blogger.com (Juan Vega)</managingEditor><generator>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AroundWpfAndMore" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="aroundwpfandmore" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-3464274731221502692</guid><pubDate>Sun, 18 Apr 2010 23:06:00 +0000</pubDate><atom:updated>2010-04-18T16:30:26.441-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><category domain="http://www.blogger.com/atom/ns#">Speech</category><title>Hablando... ¡tu aplicación te entiende!</title><description>El pasado Viernes 16 de Abril, en el auditorio Ollantaytambo de la Universidad Ricardo Palma, hice una pequeña demostración de una aplicación realizada en WPF que era capaz de reconocer instrucciones habladas. Es decir, mediante palabras, podías hacer que tu aplicativo realice ciertas instrucciones.&lt;br /&gt;&lt;br /&gt;La librería que permite que esto sea osible es &lt;strong&gt;System.Speech&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;La demo que presenté fue un semáforo, que con 3 instrucciones(Alto, Preparado, Pase) prendía alguna de sus luces indicando la señal correspondiente.&lt;br /&gt;&lt;br /&gt;Aquí les dejo una imagen del aplicativo además de los archivos para que los puedan ver y probar.&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 200px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5461623162579246098" border="0" alt="" src="http://2.bp.blogspot.com/_X17NOosCTdQ/S8uVVFaU3BI/AAAAAAAAAnM/aDSqVXIJ8-M/s320/SpeechSemaphore.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Este aplicativo esta desarrollado bajo el .Net Framework 3.5.&lt;br /&gt;&lt;br /&gt;&lt;iframe style="PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fcfcfc; PADDING-LEFT: 0px; WIDTH: 98px; PADDING-RIGHT: 0px; HEIGHT: 115px; PADDING-TOP: 0px" title="Preview" marginheight="0" src="http://cid-79cc133a922d7fe9.skydrive.live.com/embedicon.aspx/WPF/WPF.VoiceRecognition.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;Espero les guste&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-3464274731221502692?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2010/04/hablando-tu-aplicacion-te-entiende.html</link><author>noreply@blogger.com (Juan Vega)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_X17NOosCTdQ/S8uVVFaU3BI/AAAAAAAAAnM/aDSqVXIJ8-M/s72-c/SpeechSemaphore.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-8113606199128356520</guid><pubDate>Mon, 01 Mar 2010 14:47:00 +0000</pubDate><atom:updated>2010-03-01T07:02:20.216-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><category domain="http://www.blogger.com/atom/ns#">Windows 7</category><title>Integrando WPF con Windows 7</title><description>&lt;a href="http://blog.taragana.com/wp-content/uploads/2009/05/windows-7-aurora-green-wallpaper.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 185px; FLOAT: left; HEIGHT: 133px; CURSOR: hand" border="0" alt="" src="http://blog.taragana.com/wp-content/uploads/2009/05/windows-7-aurora-green-wallpaper.jpg" /&gt;&lt;/a&gt; Saludos a todos!&lt;br /&gt;&lt;br /&gt;Hoy hace unos minutos estaba navegando por internet buscando de que forma integrar algunas de las características de Windows 7 con alguna de las aplicaciones que haya hecho en WPF.&lt;br /&gt;&lt;br /&gt;Me pareció interesante y que en la versión de .NET Framework 4.0 sale una nueva versión de WPF, la que tiene nuevas clases y nuevas funcionalidades. Para ello requeriremos actualizar nuestro IDE al 2010 en cualquiera de sus versiones (Visual C# o Visual Basic 2010, o cualquier version de Visual Studio 2010) que se encuentra ya en Release Candidate desde el pasado mes.&lt;br /&gt;&lt;br /&gt;Pero... para los que no quieren mandarse a instalar una versión preliminar de este IDE o para los que no lo ven del todo estable todavia (como yo)... nos queda resignarnos a esperar a que sea lanzado este nuevo .Net Framework.&lt;br /&gt;&lt;br /&gt;Pues en realidad &lt;strong&gt;NO ES ASI&lt;/strong&gt;! Para el alivio de muchos, podemos realizar aplicaciones que utilicen características de Windows 7 con el framework 3.5 SP1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;¿Cómo?&lt;br /&gt;&lt;br /&gt;....Es así de sencillo. En &lt;a href="http://code.msdn.microsoft.com/"&gt;Code MSDN&lt;/a&gt; se ha publicado una librería llamada &lt;strong&gt;&lt;em&gt;&lt;a href="http://code.msdn.microsoft.com/WPFShell/Release/ProjectReleases.aspx?ReleaseId=3934"&gt;WPF Shell Integration Library&lt;/a&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Dentro de este portal tenemos la libreria (Binary) y el código (Source).&lt;br /&gt;Como verán, no se necesita tener el .net framework 4.0 para poder aprovechar las características de Windows 7.&lt;br /&gt;&lt;br /&gt;Happy Coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-8113606199128356520?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2010/03/integrando-wpf-con-windows-7.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-5037328708323021067</guid><pubDate>Sun, 28 Feb 2010 01:28:00 +0000</pubDate><atom:updated>2010-02-27T17:34:00.794-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><category domain="http://www.blogger.com/atom/ns#">Toolkit</category><title>WPF Toolkit, February Release</title><description>&lt;p&gt;Esta noticia la encontre navegando por facebook, que aunque para muchos parezca cuestionable, es una gran fuente de información. Así como twitter.&lt;br /&gt;&lt;br /&gt;En fin, navegando por facebook, encontre un grupo dedicado exclusivamente a tratar temas sobre wpf. Obviamente me hice fan.&lt;br /&gt;&lt;br /&gt;La noticia que vi fue que ya salio la version de WPF Toolkit de Febrero.&lt;br /&gt;&lt;br /&gt;Entre las novedades tenemos nuevos controles: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Accordion&lt;/li&gt;&lt;li&gt;AutoCompleteBox&lt;/li&gt;&lt;li&gt;Rating&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Además de algunos bugs resueltos.&lt;/p&gt;&lt;p&gt;Aquí les dejo el &lt;a href="http://wpf.codeplex.com/releases/view/40535"&gt;link&lt;/a&gt; para que ustedes mismos lo prueben. En los siguientes post haré algunas demos de uso de estos controles.&lt;/p&gt;&lt;p&gt;Espero les guste.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-5037328708323021067?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2010/02/wpf-toolkit-february-release.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-556665492728694963</guid><pubDate>Fri, 26 Feb 2010 20:31:00 +0000</pubDate><atom:updated>2010-02-26T12:43:02.325-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><category domain="http://www.blogger.com/atom/ns#">MDI</category><title>MDI en WPF...volviendo a las antiguas usanzas</title><description>Pues para muchos el titulo de este blog es algo injusto. La razón: desde la primera vez que WPF se dio a conocer, no se ha visto que tenga algún control de forma nativa para contener formularios dentro uno mismo (MDI). Esto, si quieren entender el porque, les dejo un artículo en el que se explica a &lt;a href="http://laurenlavoie.com/avalon/70"&gt;detalle &lt;/a&gt;(post en ingles).&lt;br /&gt;&lt;br /&gt;Me animé a realizar este post, ya que hace unas semanas quice realizar un sistema distribuido con WCF (estoy en pañales en ese tema, pero iniciandome con bastantes espectativas). Pero para ello quería ver la forma de usar varios formularios a la vez.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img style="WIDTH: 675px; HEIGHT: 409px" src="http://img30.imageshack.us/img30/2392/vistaa.jpg" width="400" height="500" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Investigando encontre que este control (ahora es un ontrol) lo pueden encontrar el el portal de codeplex. Si quieren analizarlo y agregarle algunos detalles más, sientanse libres. Ya que en esta publicación también viene incluido el código.&lt;br /&gt;&lt;br /&gt;Sin más rodeos les dejo el &lt;a href="http://wpfmdi.codeplex.com/"&gt;enlace&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-556665492728694963?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2010/02/mdi-en-wpfvolviendo-las-antiguas.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-6815681308437064460</guid><pubDate>Sun, 21 Feb 2010 23:22:00 +0000</pubDate><atom:updated>2010-02-22T03:50:46.742-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><category domain="http://www.blogger.com/atom/ns#">Reporting Server</category><category domain="http://www.blogger.com/atom/ns#">SQL</category><title>Usando Reporting Server en WPF</title><description>Aunque para muchas personas les cueste creer, o ya se habían dado por vencidos al querer usar el SQL Reporting Server en Windows Presentation Foundation. Pues al respecto WPF no ofrece un control como el Report Viewer o Cruystal Report como control nativo de esta tecnología.&lt;br /&gt;&lt;br /&gt;Pero para este proposito vamos a usarotro control, uno que a muchos les parecerá algo fuera de lugar. Nuestro control a usar es el&lt;strong&gt; WebBrowser&lt;/strong&gt;, disponible a partir de la versión del &lt;strong&gt;.NET Framework 3.5 SP1. &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;No se sorprendan, este control lo que nos permite es, como su homologo en las aplicaciones Desktop del framwork 2.0, navegar como algún otro browser de internet. Solo que ahora lo usaremos de una manera diferente.&lt;br /&gt;&lt;br /&gt;Ahora pasaremos a la demostración.&lt;br /&gt;Para ello les daré unos requisitos previos (si quieren poner en practica esta pequeña demostración o descargarla):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SQL Reporting Server 2008&lt;/li&gt;&lt;li&gt;Visual Studio 2008 (en cualquiera de sus versiones o C# express) con el SP1 instalado. Como recomendación al momento de abrir el IDE hacerlo como &lt;strong&gt;Administrador&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;AdventureWorksLT2008, sino lo tienes puedes descargarlo en este &lt;a href="http://msftdbprodsamples.codeplex.com/releases/view/37109"&gt;enlace&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Cumpliendo estos requisitos, lo siguiente a realizar será Abrir nuestro IDE y crear una solución en blanco, a la que llamaremos &lt;strong&gt;UsingReportingServerOnWpf.&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;img style="WIDTH: 740px; HEIGHT: 490px" src="https://detynw.bay.livefilestore.com/y1pV7aA5A3f-ERSIMO8VI8Y_tzN8vDBYkikYkv7FujjWB1U9sCd9m3Iuz-B3smFfQ46DPvMY2QIqjptlvmFNcxgdKHM8SyHvTiO/Create%20Project.PNG" width="740" height="544" /&gt;&lt;/p&gt;Posteriormente pasamos a &lt;strong&gt;Agregar &gt; Nuevo Proyecto&lt;/strong&gt;&lt;br /&gt;Seleccionamos &lt;strong&gt;Proyectos de Business Intelligence &lt;/strong&gt;al cual le daremos el nombre de &lt;strong&gt;ReportProject&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pw3oso9jXzmsEqPMm1Vj1Xno7z6LILNwpirBY6D4Oj8A8GL-hNSUXm9DF457RfVIqip7mU_C89Wz58j-SU8uSMUkCmIWdtPK1/ReportProject.PNG" width="740" height="544" /&gt;&lt;/p&gt;Una vez aceptado, nos mostrará un wizard, en el cual siguiendo los pasos configuraremos nuestro primer informe. para ello les ire mostrando la secuencia a seguir:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pQdaaugtmpthOt26ry-aG2-rnFNO1LwA1V2jPrGR_ssPlhxnXx1sSZr_dMZR34f6EeCRAUKUl59O7ikhwn5hcpso9Pgig-iR5/ReportWizard1.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1p3QVG2Qoc56WeHieMqDIG3UNMQoc_LmMvHZNlx0a7nZXw8amRht25ImBmaApSUV7w_wBGTY2KTqtfvcPV40msg0V-er1RV6Mb/ReportWizard2.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1psMEtZSJmkAx0Z8pb4wn2C_-uyB12YRBi8R_maIPjS7ybZm6EchvaQyv_PvkalDDISUxVIlb7F-9NdajxaxBuFbRSl8tX0Sfm/ReportWizard3.PNG" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pIUCHlhw9d-kX-QI10Hjaf7-opRDxDO05aQ5OS1mvWYGJZIZvPEgaC8u9HD0JEZCw-0bV8U6Hvp5eb8rbxzmpLvKQD2I9ZpZq/ReportWizard4.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pPRGSUFKoCmj8MMmEKP_5KRKEaVxBheQHXX90LbDpu8iwZG3-HBBq8N6oKQVqVxCQMYBRXsPGhFB87KeAje6dHjEMDt5jIN1O/ReportWizard5.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pVf_8GBkWTco3frbk4GvuYdw-c2KhG9l9UwAjt57n1mEp_5PWje8Bh6mpTgwRj5f5Ctzo4BYniFtFEc5IwgrtnBZg9zm3QGi6/ReportWizard6.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pDepLCaPHPhxMOy3Nv_i-hIJJCmg9Micn-qgpk8uVYXZaxTyqcFFcLV3HPaqjAHzG75pBD62SAW-BO2li9hWRVh24tCkDOk-S/ReportWizard7.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pJeEwLgj9IxgI4QirrpPUMB5CCuJeFVT7vc3l586fRa6yenMqYBTU4tvtZuF1iqTKdqqOxvTElolflEWE7YJWvacDpMunUQIE/ReportWizard8.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pNwA7he3uz5I7OG0xIirVf_qigfEt42fyb1nbNIqJJ942QAho1TTi1aEb-jy0mlZMco-zseDNxDIBmwlsXkNnYNtoDOcxYxKp/ReportWizard9.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pjtDZu0Rz0CLmrrdWM08iHlfBMPSirJ5w4dluNc5vV6jiJvNze88y7bKXNM9VWEtnsJBovs1BzGM_bRLpgp5p1mUKnxZW3I6Z/ReportWizard10.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;p&gt;Terminando este wizard, le hacemos algunos ajustes visuales de acuerdo a sus gustos. Luego pasamos a implementar el proyecto. &lt;strong&gt;Click derecho sobre nuestro proyecto &gt; Implementar&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;De esta manera las podremos ver en la página de Reporting Service&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pu1esuDpOGs4aTGn9PrcGf10vVy4bPsQf-bqvhL4GrtXryubAiUNg3g4uJ94A8n-v4DNTYuLhtR5R3tIUgu7wqKI17dZMGy13/Administrador%20de%20Informes.PNG" width="740" height="544" /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1pMEpGU-RfoNWLFD89NvVHDR_aMA497SXODVPwcYiQJ0kJ_Y1z3WbWDqANqbQMmAbaGyJX6XQ7pcK1Co6K0iYp4FemLfInILuQ/Reporte.PNG" width="740" height="544" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;Una vez finalizado este proceso, pasaremos a crear nuestra aplicación en WPF para visualizar nuestro informe ya creado.&lt;br /&gt;Para ello haremos click derecho sobre nuestra solución &lt;strong&gt;&gt; Agregar Nuevo Proyecto &gt; Windows &gt; Aplicación WPF&lt;/strong&gt;&lt;br /&gt;Le daremos a este proyecto por nombre: &lt;strong&gt;WpfViewReport&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1p-fGTagdDt4Gojhy5q8xClzVjGCzfpUpehUq-gi5y9xM8CNbfpg5-fxgqvaRMonLhMCjJxugpoXv6NNoOKMQO_aSst9pI_37Y/CreatingWPFReport.PNG" width="740" height="544" /&gt;&lt;/p&gt;&lt;br /&gt;En el XAML pasamos a agregar el siguiente código dentro del Grid:&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;span style="color:#ffa345;"&gt;WebBrowser&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;="ReportBrowser"/&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y en el code-behind agregamos los siguientes fragmentos de código:&lt;br /&gt;&lt;br /&gt;En el constructor:&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;this&lt;/span&gt;.Loaded+=&lt;span style="color:#3366ff;"&gt;new&lt;/span&gt; &lt;span style="color:#009900;"&gt;RoutedEventHandler&lt;/span&gt;(Window1_Loaded);&lt;br /&gt;&lt;br /&gt;En el Método Window1_Loaded&lt;br /&gt;ReportBrowser.Source=&lt;span style="color:#3366ff;"&gt;new&lt;/span&gt; &lt;span style="color:#009900;"&gt;Uri&lt;/span&gt;(http://localhost/ReportServer/Pages/ReportViewer.aspx?%2fSalesReport&amp;amp;rs:Command=Render, &lt;span style="color:#009900;"&gt;UriKind&lt;/span&gt;.RelativeOrAbsolute));&lt;br /&gt;&lt;br /&gt;Una vez realizado esto, ejecutamos nuestra aplicación y nos permitira visualizar nuestro reporte.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="https://detynw.bay.livefilestore.com/y1p8LTqOHesc0oqP7VhayxiiSnsyYexJwp0XlZnlAdzbcATGYDfUYuh04rZzTyZkcAuFycQwIb8gxD6yUuyORM6ocR8tnbuPp4m/Reporte%20Final.PNG" /&gt;&lt;/p&gt;Es mus posible que antes de mostrar el reporte en el formulario, se solicite un logueo. Esto dependiendo de la configuración que se tenga en el Reporting Server.&lt;br /&gt;&lt;br /&gt;Como vemos este es un reporte bastante senicllo. No hay mucha interacción con el usuario. Si queremos que nos muestre un reporte en base a parametros ingresados, tenemos dos opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La primera es dentro del query que tenemos al armar nuestro reporte declaramos los parametros, con lo que antes de mostrar el informe nos mostrará cajas de texto en las que se solicitan los parametros. Esto lo pide desde el propio informe.&lt;/li&gt;&lt;li&gt;La otra opción es crear un informe y mandar un reporte desde programación (creando una aplicación web en la que se pidan los parametros y crear el reporte desde programación en javascript). Esto es más complejo pero a su vez mas completo. Ya que el WebBrowser nos permite ejecutar javascript, asi que podemos crear los parametros que querramos y crear un formulario en WPF en la que se pida el ingreso de los parametros de forma visual e interactiva (datepicker, combobox, etc). En un siguiente post presentaré esta versión de creación de un reporte en WPF.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Espero que este post haya sido de su agrado.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Saludos,&lt;/p&gt;&lt;p&gt;Juan Carlos&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-6815681308437064460?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2010/02/usando-reporting-server-en-wpf.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-8197818654710064443</guid><pubDate>Tue, 05 Jan 2010 15:38:00 +0000</pubDate><atom:updated>2010-01-05T09:07:36.250-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><title>Usando ObservableCollection</title><description> &lt;span style="font-family:georgia;"&gt;Saludos con todos,
&lt;br /&gt;hace un par de semanas me pidieron una pequeña demo de ObervableCollection. Pues como explique en el post anterior, esta clase nos permite trabajar con una estructura de datos de tipo Listas, solo que contiene algunas propiedades adicionales.
&lt;br /&gt;
&lt;br /&gt;Pues aquí vamos con la pequeña demo.&lt;/span&gt; &lt;div&gt;&lt;div&gt;
&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:georgia;"&gt;
&lt;br /&gt;Para empezar creamos un nuevo proyecto en WPF &lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:georgia;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 215px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5423300452322042194" border="0" alt="" src="http://3.bp.blogspot.com/_X17NOosCTdQ/S0NvBwre4VI/AAAAAAAAAmw/mEoHoxMpYr8/s320/CrearProyecto.PNG" /&gt;
&lt;br /&gt;Luego agregaremos al proyecot una clase. A la cual llamaremos &lt;strong&gt;Persona.&lt;/strong&gt; &lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:georgia;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 193px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5423300691221809618" border="0" alt="" src="http://4.bp.blogspot.com/_X17NOosCTdQ/S0NvPqpoCdI/AAAAAAAAAm4/6KGh65m6PBY/s320/AgregarPersona.PNG" /&gt;
&lt;br /&gt;A esta clase le agregamos el siguiente fragmento de código.
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; Persona &lt;/span&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; nombre;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; apellido;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; direccion;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt; edad;&lt;/span&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; Nombre
&lt;br /&gt;{
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; nombre; }
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; { nombre = value; }
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; Apellido
&lt;br /&gt;{
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; apellido; }
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; { apellido = value; }
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; Direccion
&lt;br /&gt;{
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; direccion; }&lt;/span&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; { direccion = value; }
&lt;br /&gt;}
&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; Edad
&lt;br /&gt;{
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; edad; }
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; { edad = value; }
&lt;br /&gt;}
&lt;br /&gt;}&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;Luego nos dirigimos a ver el CodeBehind de nuestra Ventana Principal.
&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;
&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;!--  Code highlighting produced by Actipro SyntaxEditor http://www.ActiproSoftware.com/Products/DotNet/  --&gt;&lt;span style="font-family:georgia;color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; System.Windows;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; System.Collections.ObjectModel;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; DemoObservableCollection
&lt;br /&gt;{
&lt;br /&gt;
&lt;br /&gt;    &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; Window1 : Window
&lt;br /&gt;
&lt;br /&gt;    {
&lt;br /&gt;
&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; Window1()
&lt;br /&gt;
&lt;br /&gt;        {
&lt;br /&gt;            InitializeComponent();
&lt;br /&gt;            &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Loaded += &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; RoutedEventHandler(Window1_Loaded);
&lt;br /&gt;        }
&lt;br /&gt;
&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Window1_Loaded(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; sender, RoutedEventArgs e)
&lt;br /&gt;        {
&lt;br /&gt;
&lt;br /&gt;            ObservableCollection&amp;lt;Persona&amp;gt; ListaPersonas = &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt; ObservableCollection&amp;lt;Persona&amp;gt;()
&lt;br /&gt;            {
&lt;br /&gt;                &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Persona{Nombre=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Juan"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,Apellido=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Vega"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Direccion=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Lima - Perú"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Edad=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;21&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;},
&lt;br /&gt;                &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Persona{Nombre=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Alvaro"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,Apellido=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Escalante"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Direccion=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Tarija - Bolivia"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Edad=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;23&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;},
&lt;br /&gt;                &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Persona{Nombre=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Estefano"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,Apellido=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Alvarillo"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Direccion=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Quito - Ecuador"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Edad=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;30&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;},
&lt;br /&gt;                &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Persona{Nombre=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Isabel"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,Apellido=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Valverde"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Direccion=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Buenos Aires - Argentina"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Edad=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;25&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;},
&lt;br /&gt;                &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Persona{Nombre=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Eduardo"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,Apellido=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Ortega"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Direccion=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Santiago - Chile"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Edad=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;24&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color:#000000;"&gt;},
&lt;br /&gt;                &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Persona{Nombre=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Juan"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,Apellido=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Alfaro"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Direccion=&lt;/span&gt;&lt;span style="color:#800000;"&gt;"Lima - Perú"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, Edad=&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;24&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;color:#000000;"&gt;}
&lt;br /&gt;            };&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:Georgia;"&gt;            lstPersona.DataContext= ListaPersona&lt;/span&gt;&lt;span style="color:#000000;"&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;span style="font-family:Georgia;"&gt;        }
&lt;br /&gt;
&lt;br /&gt;    }
&lt;br /&gt;
&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:georgia;"&gt;Podemos ver que es muy similar al trabajo con listas.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:georgia;"&gt;Ahora pasamos a mostrarlo en nuestro formulario.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:georgia;"&gt;Para esto agregaremos un &lt;strong&gt;ListBox &lt;/strong&gt;a nuestra ventana. Y pasamos a agregarle el siguiente codigo&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-family:Georgia;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 637px; DISPLAY: block; HEIGHT: 359px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5423301331206718130" border="0" alt="" src="http://3.bp.blogspot.com/_X17NOosCTdQ/S0Nv06x6wrI/AAAAAAAAAnA/NBXepDmYbyU/s400/WPF.PNG" /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-8197818654710064443?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2010/01/usando-observablecollection.html</link><author>noreply@blogger.com (Juan Vega)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_X17NOosCTdQ/S0NvBwre4VI/AAAAAAAAAmw/mEoHoxMpYr8/s72-c/CrearProyecto.PNG" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-652313581779854097</guid><pubDate>Sun, 11 Oct 2009 17:24:00 +0000</pubDate><atom:updated>2009-10-11T10:41:33.851-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><category domain="http://www.blogger.com/atom/ns#">Collections</category><title>Observable Collection</title><description>Pues bien, heme aqui después de mucho tiempo sin postear. La razón... decidí poner a prueba todos mis conocimientos adquiridos en WPF y desarrollar un sistema algo complejo integramente bajo esta plataforma. Claro, todavía no termino el proyecto pero cada vez que lo veo me inspiro más.&lt;br /&gt;&lt;br /&gt;Ahora, como verán en el título. Este post es sobre Observable Collection... pero que no es una Lista. Pues en realidad si lo es, pero esta lista especial, proveniente de &lt;strong&gt;System.Collections.ObjectModel&lt;/strong&gt; en realidad nos permite de mejor manera jugar con los datos.&lt;br /&gt;La razón, esta colección generica lo que hace es notificarse en cuanto hay un cambio interno (Actualizacion, eliminacion, agregación) y esto gracias a que tiene implementado nativamente el &lt;strong&gt;INotifyPropertyChanged&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Pero en que casos conviene usar este modelo de colecciones, pues sencillamente cuando queremos que los datos de nuestro listbox o algun control que nos muestre estos datos deba estar actualizandose cada vez que alla un cambio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-652313581779854097?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2009/10/observable-collection.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-360275396196548963</guid><pubDate>Sun, 23 Aug 2009 21:29:00 +0000</pubDate><atom:updated>2009-08-24T05:47:55.327-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Silverlight</category><title>Silverlight 3.0: OOB - OutOfBrowser</title><description>&lt;p align="left"&gt;Hace unos cuantos días que me puse a investigar las nuevas características de Silverlight 3.0. Y mi primera apreciación fue... cada vez se parece más a flash (y lo decía por el soporte HD y que es cacheable en los clientes) , pues hasta ese momento eran las únicas características que habia podido entender ho encontrar hasta entonces. Hoy encontre otra característica, mejor dicho pude entenderla. y es el OOB (&lt;em&gt;&lt;strong&gt;OutOfBrowser&lt;/strong&gt;&lt;/em&gt;), y bueno ya su nombre nos da una idea de lo que se trata.&lt;/p&gt;&lt;p align="left"&gt;Esta característica de Silverlight lo que nos permite es poder tener la aplicación de silverlight (xap ejecutable) en nuesta computadora (hablando de los clientes) y poder accederla de forma que no siempre estemos conectados. Es decir, se asemeja bastante a una aplicación de escritorio (WPF).&lt;/p&gt;Pues ahora les mostrare como lograr usar esta característica desde tu aplicación de Silverlight. Recuerda que debes tener Silverlight 3.0.&lt;br /&gt;&lt;br /&gt;Pues aquí vamos, lo primero que haremos será crear una nueva aplicación:&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 451px; DISPLAY: block; HEIGHT: 277px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5373276944767764082" border="0" alt="" src="http://2.bp.blogspot.com/_X17NOosCTdQ/SpG26ZStxnI/AAAAAAAAAmQ/fx0OQ1DTwgg/s320/CreandoOOB.jpg" /&gt;Una vez crada nuestra aplicación y de haberla desarrollado. Pasamos a ver las propiedades del proyecto de Silverlight&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 528px; DISPLAY: block; HEIGHT: 278px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5373505770121739714" border="0" alt="" src="http://2.bp.blogspot.com/_X17NOosCTdQ/SpKHByKePcI/AAAAAAAAAmY/dY1SOdLPMFE/s320/CreandoOOB2.jpg" /&gt;En esta ventana de Configuracion, habilitamos la ejecución de aplicaciones fura del explorador y grabamos los cambios.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Después ejecutamos nuesta aplicacion, y al hacer click derecho sobre esta, aparecerá la opción de instalarlo en nuestro escritorio. Con esto activado, en nuestro escritorio o en el menu inicio nos mostrará el acceso a nuestra aplicacion bajo no conexión.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-360275396196548963?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2009/08/silverlight-30-oob-outofbrowser.html</link><author>noreply@blogger.com (Juan Vega)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_X17NOosCTdQ/SpG26ZStxnI/AAAAAAAAAmQ/fx0OQ1DTwgg/s72-c/CreandoOOB.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-1693638790167781272</guid><pubDate>Sat, 15 Aug 2009 00:05:00 +0000</pubDate><atom:updated>2009-08-14T17:24:48.526-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><title>Usando FluidKit</title><description>&lt;a href="http://febrer.files.wordpress.com/2008/06/fluidkit.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 375px; DISPLAY: block; HEIGHT: 274px; CURSOR: hand" border="0" alt="" src="http://febrer.files.wordpress.com/2008/06/fluidkit.jpg" /&gt;&lt;/a&gt; Desde hace algun tiempo que no posteo en este blog, pero si he seguido investigando. Posiblemente muchos de ustedes (seguidores de WPF) ya hayan escuchado o visto de esta librería.&lt;br /&gt;&lt;br /&gt;Para los que no, aquí les dejo algo breve.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;&lt;a href="http://www.codeplex.com/fluidkit"&gt;FluidKit&lt;/a&gt; es una librería, desarrollada por &lt;a href="http://blog.pixelingene.com/"&gt;Pavan Podilla&lt;/a&gt;, la cual contiene algunos controles bastante interesantes, que darán a nuestras aplicaciones una vistocidad y experiencia mas atractiva.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;Pues dentro de esta libería tenemos estos elementos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ImageButton&lt;/li&gt;&lt;li&gt;DragDropManager&lt;/li&gt;&lt;li&gt;GlassWindow&lt;/li&gt;&lt;li&gt;BalloonDecorator&lt;/li&gt;&lt;li&gt;ItemSkimmingPanel + SkimmingContextAdorner&lt;/li&gt;&lt;li&gt;PennerDoubleAnimation&lt;/li&gt;&lt;li&gt;ElementFlow&lt;/li&gt;&lt;li&gt;TransitionPresenter&lt;/li&gt;&lt;li&gt;GenieAnimation&lt;/li&gt;&lt;li&gt;WarpEffect using Pixel Shaders&lt;/li&gt;&lt;li&gt;Simple 3D Engine&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Bueno espero lo prueben, aqui les dejo una demo que prepare hace poco, sobre el ElementFlow&lt;/p&gt;&lt;p&gt;&lt;iframe style="BORDER-BOTTOM: #dde5e9 1px solid; BORDER-LEFT: #dde5e9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 3px; PADDING-LEFT: 0px; WIDTH: 240px; PADDING-RIGHT: 0px; HEIGHT: 66px; BORDER-TOP: #dde5e9 1px solid; BORDER-RIGHT: #dde5e9 1px solid; PADDING-TOP: 0px" marginheight="0" src="http://cid-79cc133a922d7fe9.skydrive.live.com/embedrowdetail.aspx/WPF/FluidKit%7C_Demo.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-1693638790167781272?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2009/08/usando-fluidkit.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-5699083195945826159</guid><pubDate>Fri, 31 Jul 2009 03:46:00 +0000</pubDate><atom:updated>2009-07-30T21:01:36.294-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">popfly</category><title>Adios Popfly</title><description>Tras 2 años de estar en uso e inspirar a muchis usuarios a expresar sus ideas, Popfly cerrará sus puertas y descontinuará todos los servicios.&lt;br /&gt;Si alguno de ustedes realizó algun mashup, un juego o una página web.... esta es una mala noticia, pues todas estas obras dejarán de funcionar.&lt;br /&gt;&lt;br /&gt;Pero no todas las noticias son malas, Microsoft pone a nuestra disposición la &lt;a href="http://www.microsoft.com/web/"&gt;Web Platform&lt;/a&gt;: todo un set de herramientas para la creación de páginas web.&lt;br /&gt;&lt;br /&gt;Adios Popfly.&lt;br /&gt;&lt;br /&gt;Cualquier duda pueden visitar el blog del &lt;a href="http://popflyteam.spaces.live.com/"&gt;Popfly Team&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-5699083195945826159?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2009/07/adios-popfly.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-6423848487145366506</guid><pubDate>Wed, 08 Jul 2009 20:37:00 +0000</pubDate><atom:updated>2009-07-08T15:00:57.477-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">WPF</category><category domain="http://www.blogger.com/atom/ns#">Ribbon</category><category domain="http://www.blogger.com/atom/ns#">Toolkit</category><title>WPF al 100%</title><description>&lt;a href="http://agilemobility.net/wp-content/uploads/2009/05/wpf.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 265px; FLOAT: left; HEIGHT: 309px; CURSOR: hand" border="0" alt="" src="http://agilemobility.net/wp-content/uploads/2009/05/wpf.png" /&gt;&lt;/a&gt;Desde hace ya cierto tiempo que me ha estado interesando las aplicaciones en WPF, por su contenido visual y su simpleza en cuanto al uso de los controles y su edición.&lt;br /&gt;&lt;br /&gt;Hace poco con un grupo en la universidad desarrollamos un sistema en Windows Form, pero usando algunos controles que encontre en la web. Entre estos controles estan los Ribbons desarrollado por &lt;a href="http://www.menendezpoo.com/index.php"&gt;Jose Menendez&lt;/a&gt;. El cual me parecio bastante interesante. Felicidades por eso.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pero después de desarrollar esta aplicación, quice probar si es que es posible hacer lo mismo en WPF. asi que empece a desarrollar la mism aplicación en WPF. Para ello busque si es que existe Ribbon para WPF, y me di con la sorpresa que si: Microsoft tiene su propia libreria de Ribbons para WPF, la cual encontrarás siguiendo este enlace &lt;a href="http://msdn.microsoft.com/es-pe/office/aa973809.aspx"&gt;WPF Ribbon&lt;/a&gt;, para poder acceder a esta librería hay que aceptar algunos términos y después la podras desacargar.&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 312px; DISPLAY: block; HEIGHT: 108px; CURSOR: hand" border="0" alt="" src="http://www.jbarahona.com/wp-content/uploads/acrobat_ss_001.jpg" /&gt;&lt;br /&gt;Pero para este sistema, los ribbons no eran suficientes, ya que necesitaba tambien un control similar al DataGridView del framework 2.0, pero este control no existe dentro de los controles que vienen en WPF por default. Pero encontre otra librería que si tenia este control, ademas de un datetimepicker. Esta librería se llama &lt;a href="http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117"&gt;WPF Toolkit&lt;/a&gt;.&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 237px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5356207502080373474" border="0" alt="" src="http://4.bp.blogspot.com/_X17NOosCTdQ/SlUSWEDIcuI/AAAAAAAAAmE/dpB00D88C4I/s320/wpftoolkit.bmp" /&gt;&lt;br /&gt;Ya con estas librerías pude hacer mi aplicación, la cual dicho sea de paso, quedó visualmente atractiva, pero comparada con la aplicación Windows Form que había hecho con anterioridad, era casi semejante.&lt;br /&gt;&lt;br /&gt;Asi que busque darle un valor agregado en cuanto a uso. En un modulo de este sistema, consiste en consultas y reportes. El cual se conectaba al Reporting Service de SQL y los mostraba en un ReportViewer. El gran detalle es que este control tampoco esta disponible en WPF, asi que existen dos opciones (por si hay algún interesado):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La primera opcion es usarlo desde los controles de Windows Forms (usar la libreria de interoperabilidad entre WPF y Windows Forms), el problema al optar por esta alternativa, es que no se podrá hacer uso de este componente en modo web.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Otra opción, para los que quieren usar un reportviewer de WPF que sea nativo. Estan los componentes de &lt;a href="http://www.componentone.com/SuperProducts/StudioWPF/"&gt;componentone&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Una tercera opción, por la cual yo opte usar, fue el de mediante querys sacar la información necesaria que necesitaria en cada reporte y mostrarla en un gridview (de WPF ToolKit) y además mostrarla en un grafico si es necesario (caso del modulo de ventas). La desventaja fue que no hice la parte de exportación a pdf, excel o xps.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Una vez termine esta aplicación, decidi empezar a utilizar WPF para aplicaciones. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Ya que los controles son más faciles de editar&lt;/li&gt;&lt;li&gt;El codigo de diseño esta aislado del código de desarrollo.&lt;/li&gt;&lt;li&gt;El código de diseño y el código de desarrollo se integran para la ejecución de la aplicación.&lt;/li&gt;&lt;li&gt;WPF tiene soporte para gráficos en 3D, aqui les dejoun enlace interesante al blog de &lt;a href="http://joshsmithonwpf.wordpress.com/2009/03/26/using-contentcontrol3d-in-xamdatagrid-cells/"&gt;Josh Smith&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-6423848487145366506?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2009/07/wpf-al-100.html</link><author>noreply@blogger.com (Juan Vega)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_X17NOosCTdQ/SlUSWEDIcuI/AAAAAAAAAmE/dpB00D88C4I/s72-c/wpftoolkit.bmp" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-3583656578227725400</guid><pubDate>Tue, 23 Jun 2009 23:57:00 +0000</pubDate><atom:updated>2009-06-23T17:05:30.925-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mashup</category><category domain="http://www.blogger.com/atom/ns#">popfly</category><title>Microsoft Popfly</title><description>&lt;div&gt;&lt;a href="http://parth.files.wordpress.com/2007/05/expressyourself.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 251px; FLOAT: left; HEIGHT: 185px; CURSOR: hand" border="0" alt="" src="http://parth.files.wordpress.com/2007/05/expressyourself.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Para los que no saben, popfly es una página bastante interactiva que nos permite diseñar paginas web, juegos y mashups.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Pero en este articulo nos centraremos en los mashups, que son aplicativos que consumen servicios de distintos proveedores para poder obtener un resultado esperado. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Asi por ejemplo podemos ver nuestras fotos de facebook desde este mashup.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Este servicio tiene soporte en silverlight, y su creacion es mediante el arrastre de bloques que representan servicios, interfaces o base de datos.&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 420px; DISPLAY: block; HEIGHT: 258px; CURSOR: hand" border="0" alt="" src="http://ogasawalrus.com/blog/files/popfly.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Asi que visita la página de popfly, encontraras toda una comunidad bastante&lt;br /&gt;atractiva y entusiasta para el desarrollo de mashups &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-3583656578227725400?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2009/06/microsoft-popfly.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3959218695454323725.post-333107450852527793</guid><pubDate>Sun, 21 Jun 2009 10:25:00 +0000</pubDate><atom:updated>2009-06-21T03:33:11.277-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SQL</category><title>SQL 2008 - Reporting Service</title><description>Para los quue no me conocen, soy Juan Carlos. Estudiante de la Universidad Ricardo Palma. Como muchos de nosotros, estudiantes claro esta.... estamos teniendo unas semanas bastante atareadas con las presentaciones de proyectos finales.&lt;br /&gt;Mi caso no es la excepcion, y entre uno de esos proyectos es hacer un sistema de ventas de insumos para un minimarket, incluyendo reportes de ventas y de articulos de inventario.&lt;br /&gt;&lt;br /&gt;Antes que nada debo recalcar que no soy devoto a manejar el SQL Server 2008 con todos sus servicios, en realidad no los conocia. Hoy, en una amanecida con mi grupo de este proyecto (hasta ahora seguimos haciendo el sistema) vimos la necesidad de usar Reporting Services para facilitar los reportes de este minimarket.&lt;br /&gt;&lt;br /&gt;Yo particularmente no habia usado este servicio, ára lo cual pense que sería un tanto dificl seguirle el ritmo a esta herramienta. Pero para mi sorpresa me resulto bastante facil.&lt;br /&gt;&lt;br /&gt;Tras ver un video, de como crear un reporte en Visual Studio  2008, usando el proyecto de BI. Me anime a usar este servicio. Y ademas me anime a postearlo ya que un servicio asi de potente merece que se le dedique unas cuantas lineas en algun blog.&lt;br /&gt;&lt;br /&gt;En los siguientes post les mostraré desde como crear un reporte, hasta como pasar parametros e implementarlos en un sistema.&lt;br /&gt;&lt;br /&gt;Saludos matutinos,&lt;br /&gt;Juan Carlos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3959218695454323725-333107450852527793?l=juan-ve.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://juan-ve.blogspot.com/2009/06/sql-2008-reporting-service.html</link><author>noreply@blogger.com (Juan Vega)</author><thr:total>0</thr:total></item></channel></rss>

