<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEEGQHo7eCp7ImA9WxBWGEQ.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654</id><updated>2010-02-11T10:50:21.400-02:00</updated><title>Kelps' SilverBox</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.kelps.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.kelps.net/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>50</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/atom+xml" href="http://feeds.feedburner.com/DevNewsAndOldsByKelps" /><feedburner:info uri="devnewsandoldsbykelps" /><entry gd:etag="W/&quot;CEEGQHo7fip7ImA9WxBWGEQ.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-2868360410622205022</id><published>2010-02-11T08:50:00.001-02:00</published><updated>2010-02-11T10:50:21.406-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-11T10:50:21.406-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Release Candidate" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 4" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Visual Studio 2010 Release Candidate disponível para download público</title><content type="html">&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_33jXBude3Pw/S3P9A54WlGI/AAAAAAAAAxI/bCr8jWwkpSc/image%5B9%5D.png?imgmax=800" width="634" height="427" /&gt; &lt;/p&gt;  &lt;p&gt;O Visual Studio 2010 e .NET Framework 4 Release Candidate estão &lt;a title="Visual Studio 2010 and .NET Framework 4 Release Candidate" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" rel="external"&gt;disponíveis para download público&lt;/a&gt; (não assinantes do MSDN). A principal diferença dessa versão com relação ao Beta 2 são as melhorias de performance. Muita gente tem postado &lt;a href="http://twitter.com/search?q=VS2010" rel="external"&gt;feedback extremamente positivo no Twitter&lt;/a&gt; sobre essa versão do Visual Studio.&lt;/p&gt;  &lt;p&gt;Mas, nem tudo são rosas. Por estarmos bem no meio dos ciclos de desenvolvimento tanto do Visual Studio 2010 quanto do Silverlight 4, este não é suportado no VS2010 RC ainda. Como são times separados, decidiram não gerar uma versão do Silverlight 4 Tools para o Visual Studio 2010 RC e focar no próximo release do Silverlight 4 para dar esse suporte. Não há nenhuma data oficial para isso mas a minha impressão é de que isso vai ocorrer apenas no MIX, dia 15/março. Também acho que a versão do Silverlight 4 a ser lançada no MIX não será RTW ainda, justamente pelo fato de que o Visual Studio 2010 também ainda não estará em RTW.&lt;/p&gt;  &lt;p&gt;Abaixo seguem algumas perguntas e respostas sobre essa nova versão do Visual Studio:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Que versões do Silverlight são suportadas?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O Visual Studio 2010 RC suporta apenas desenvolvimento de aplicações em Silverlight 3. O suporte a Silverlight 4 será disponibilizado apenas no próximo build público do Silverlight 4. Se você está desenvolvendo em Silverlight 4, continue com o Beta 2.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Serão disponibilizadas as versões Express do Visual Studio 2010 RC?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Não. As próximas versões Express do Visual Studio 2010 a ser liberadas serão RTW.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Preciso desinstalar outras versões do Visual Studio para instalar o RC?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O Visual Studio 2010 pode ser instalado em paralelo com o Visual Studio 2008 ou anteriores, mas é necessário remover tudo relacionado ao Visual Studio 2010 Beta/Beta2 antes de instalar o RC. Isso significa que devem ser removidos o Visual Studio 2010 Beta/Beta2 e o .NET Framework 4 Beta/Beta 2.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Há suporte para desenvolvimento para Mobile no Visual Studio 2010 RC?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ainda não, mas haverá novidades em breve. Meu palpite é que ficaremos sabendo de alguma coisa na próxima semana por causa do &lt;a href="http://www.mobileworldcongress.com/" rel="external"&gt;World Mobile Congress 2010&lt;/a&gt; que começará no dia 15/Fev. Vamos esperar.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Quando esta versão expira?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O Visual Studio 2010 RC expira em 30/Junho, mas isso não é problema pois a versão RTW está prevista para o próximo dia 12/Abril.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;O Visual Studio 2010 RC suporta desenvolvimento de aplicações usando ASP.NET MVC 2?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sim. Inclusive ele já vem com o ASP.NET MVC 2 RC 2 instalado, mas como houve 2 releases do MVC 2 RC 2 (devido a feedback), é recomendável atualizar a versão do MVC 2 após a instalação do Visual Studio 2010 RC. Mais detalhes no post do Phill Haack, nos links abaixo.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Posso utilizar o .NET Framework 4 RC em produção?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sim. O .NET Framework 4 RC e o Visual Studio 2010 RC têm licença go-live, o que significa que podem ser utilizado em produção e não deve haver quebra de compatibilidade com a versão RTW.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="left"&gt;Download público do Visual Studio 2010 RC : &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Post de &lt;a title="Twitter do Scott Guthrie" href="http://twitter.com/scottgu" rel="external"&gt;Scott Guthrie&lt;/a&gt; sobre este release : &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/02/08/vs-2010-net-4-release-candidate.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2010/02/08/vs-2010-net-4-release-candidate.aspx&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Post de Jason Zander sobre este release : &lt;a href="http://blogs.msdn.com/jasonz/archive/2010/02/10/visual-studio-2010-net-framework-4-rc-ready-for-general-download.aspx"&gt;http://blogs.msdn.com/jasonz/archive/2010/02/10/visual-studio-2010-net-framework-4-rc-ready-for-general-download.aspx&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="left"&gt;Post de &lt;a title="Twitter do Phil Haack" href="http://twitter.com/haacked" rel="external"&gt;Phil Haack&lt;/a&gt; sobre utilização do ASP.NET MVC 2 RC 2 no Visual Studio 2010 RC : &lt;a href="http://haacked.com/archive/2010/02/10/installing-asp-net-mvc-2-rc-2-on-visual-studio.aspx"&gt;http://haacked.com/archive/2010/02/10/installing-asp-net-mvc-2-rc-2-on-visual-studio.aspx&lt;/a&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-2868360410622205022?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/EZvP76ddXvM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/2868360410622205022/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=2868360410622205022" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/2868360410622205022?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/2868360410622205022?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/EZvP76ddXvM/visual-studio-2010-rc-disponivel.html" title="Visual Studio 2010 Release Candidate disponível para download público" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2010/02/visual-studio-2010-rc-disponivel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYGQHY4eSp7ImA9WxBQFks.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3450295782412013640</id><published>2010-01-15T21:32:00.000-02:00</published><updated>2010-01-16T16:38:41.831-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-16T16:38:41.831-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="MEF" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Criando aplicações extensíveis em Silverlight 3 com MEF</title><content type="html">&lt;p&gt;Atualmente estou trabalhando em um projeto, em Silverlight 3, cuja principal característica é que será uma aplicação extensível. Isso significa que depois que a aplicação for publicada deverá ser possível escrever e instalar extensões facilmente, sem que seja necessário mexer no código da aplicação principal. Existem várias formas de atingir esse objetivo e vários padrões de desenvolvimento que podem ser utilizados para ajudar a realizar essa tarefa com mais facilidade. Neste post vou demonstrar como fazer isso utilizando o MEF – Managed Extensibility Framework, que ao meu ver é a forma mais eficiente e segura de tornar sua aplicação extensível.&lt;/p&gt;  &lt;h4&gt;Mas o que é exatamente o MEF?&lt;/h4&gt;  &lt;p&gt;MEF é um framework open source que está sendo desenvolvido já há algum tempo pela Microsoft, cujo objetivo é tornar a tarefa de criar aplicações extensíveis o mais simples possível. O código fonte pode assim com a última versão do MEF podem ser encontrados no Codeplex em &lt;a href="http://mef.codeplex.com"&gt;http://mef.codeplex.com&lt;/a&gt;. Os códigos fonte e binários do MEF presentes no Codeplex são para o .NET Framework 3.5 e Silverlight 3. O MEF já faz parte do SDK do Silverlight 4, então não é necessário fazer nenhuma instalação extra (além do Silverlight 4 Tools para Visual Studio ou pelo menos o próprio Silverlight 4 SDK).&lt;/p&gt;  &lt;h4&gt;Por que utilizar o MEF?&lt;/h4&gt;  &lt;p&gt;Essa aplicação na qual estou trabalhando começou a ser concebida aproximadamente em Julho de 2009. Na época eu já havia ouvido falar do MEF mas ainda não fazia idéia do que realmente era e como ele poderia me ajudar. Além disso eu não tinha visto nada ainda sobre MEF e Silveright. &lt;/p&gt;  &lt;p&gt;A aplicação tem como base o uso de serviços. Ela tem alguns serviços padrão implementados nativamente mas também oferece interfaces que podem ser implementadas por terceiros que estejam interessados em disponibilizar seus próprios serviços na aplicação. Minha idéia inicial era fazer a implementação toda manualmente, ou seja, eu teria que:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;escrever todo o código responsável por baixar/ler o zip contendo a extensão, &lt;/li&gt;    &lt;li&gt;ler um arquivo de manifesto que estaria listando todas as extensões disponíveis naquele pacote, &lt;/li&gt;    &lt;li&gt;instanciar cada extensão e adicioná-la nas coleções internas da aplicação &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Comecei a fazer uma prova de conceito e vi que tudo isso era possível de ser feito mas não era uma tarefa trivial. Havia bastante código a ser escrito e muitas situações a ser levadas em consideração. &lt;/p&gt;  &lt;p&gt;Decidimos começar fazendo uma aplicação como prova de conceito sem a funcionalidade de extensibilidade e depois eu me preocuparia com isso. O tempo passou, a POC foi feita e foi um sucesso.&lt;/p&gt;  &lt;p&gt;A questão de extensibilidade ainda me incomodava. Eu não queria ter todo aquele trabalho pois parecia que eu estava reinventado a roda. Era final de Outubro e o PDC havia terminado. Enquanto vasculhava as sessions que eu queria baixar para assistir vi uma que me interessou chamada &lt;a title="Tradução : Criando aplicações ricas de internet com MEF" href="http://microsoftpdc.com/Sessions/FT24" rel="external"&gt;Building Extensible Rich Internet Applications with the Managed Extensibility Framework&lt;/a&gt;. Fiz o download, assisti e no mesmo instante fiquei convencido de que seria assim que eu implementaria a extensibilidade da minha aplicação. Com aproximadamente 5 linhas de código e 2 referencias dava pra fazer 80% da funcionalidade que eu precisava!&lt;/p&gt;  &lt;h4&gt;Chega de blá, blá, blá, me mostra logo como funciona!&lt;/h4&gt;  &lt;p&gt;Chegamos no presente. Voltei a trabalhar naquela aplicação, só que que agora não é mais uma prova de conceito. Como o Silverlight 4 ainda não tem licença Go-Live a aplicação está sendo feita em Silverlight 3 mas já pensando em ser migrada para Silverlight 4 assim que for possível. Tudo que será mostrado aqui serve para Silverlight 3 e Silverlight 4. &lt;/p&gt;  &lt;p&gt;Para utilizar o MEF é necessário fazer referência a 2 dlls (presentes no Codeplex) : &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;System.ComponentModel.Composition &lt;/li&gt;    &lt;li&gt;System.ComponentModel.Composition.Initialization &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;O MEF funciona da seguinte forma: Você cria uma interface ou classe base e a marca com um atributo do MEF que indica que ela é uma extensão (chamada pelo MEF de Export). Essa interface será o seu contrato. Depois você cria classes que implementam o seu contrato (esses serão os seus serviços que serão exportados). Depois você cria uma propriedade (array ou collection) que conterá a sua coleção de serviços e marca essa propriedade com um atributo do MEF que indica que ele deve colocar alí as extensões apropriadas que ele achar (o MEF chama isso de Import). Depois basta chamar uma linha de código que diz ao MEF “preencha todos os Imports do meu objeto”. Parece meio confuso explicando assim então é melhor eu mostrar.&lt;/p&gt;  &lt;p&gt;Criei uma solution de exemplo (o link para download está no final do post) contendo 5 projetos. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Solution no Visual Studio 2010" border="0" alt="Solution no Visual Studio 2010" src="http://lh4.ggpht.com/_33jXBude3Pw/S1IGpjADKgI/AAAAAAAAApo/JPVaoyS5aJ8/image%5B14%5D.png?imgmax=800" width="391" height="216" /&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;MEF.Extension&lt;/strong&gt; : Contém uma extensão para a aplicação. É um exemplo do que será feito por terceiros e parceiros. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;MEF.Lib&lt;/strong&gt; : É a biblioteca core da aplicação. Contém a interface de contrato do serviço e 1 implementação nativa. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;MEF.Tests&lt;/strong&gt; : É a aplicação principal. Contém outras 2 implementações do serviço e todo o resto da lógica da aplicação. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;MEF.Tests.Web&lt;/strong&gt; : Web application utilizado para testar e depurar a aplicação. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;System.ComponentModel.Composition.Packaging.Toolkit&lt;/strong&gt; : Recompilação em Silverlight 3 de uma dll que só existe no SDK do Silverlight 4. Explicarei melhor mais adiante. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;O projeto MEF.Lib faz referência a &lt;strong&gt;System.ComponentModel.Composition.&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Referência do MEF.Lib" border="0" alt="Referência do MEF.Lib" src="http://lh5.ggpht.com/_33jXBude3Pw/S1IGqZs9fmI/AAAAAAAAAps/TxLfJE98nAw/image%5B29%5D.png?imgmax=800" width="319" height="260" /&gt;&lt;/p&gt;  &lt;p&gt;No projeto MEF.Lib temos a interface IServico que foi marcada com o atributo &lt;strong&gt;InheritedExport&lt;/strong&gt;. Esse atributo serve para dizer que qualquer classe que implementar essa interface será automáticamente considerada pelo MEF como um Export.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="interface IServico" border="0" alt="interface IServico" src="http://lh6.ggpht.com/_33jXBude3Pw/S1IGq-J0DeI/AAAAAAAAApw/8tp6mYQK38A/image%5B20%5D.png?imgmax=800" width="401" height="179" /&gt; &lt;/p&gt;  &lt;p&gt;Temos também uma classe chamada ServicoRoot que é uma implementação de IServico.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="classe ServicoRoot" border="0" alt="classe ServicoRoot" src="http://lh5.ggpht.com/_33jXBude3Pw/S1IGrRet9OI/AAAAAAAAAp0/FPpht0azYRs/image%5B23%5D.png?imgmax=800" width="405" height="217" /&gt; &lt;/p&gt;  &lt;p&gt;O projeto MEF.Tests faz referência ao projeto MEF.Lib, às duas dlls do MEF e à dll de Packaging de MEF do Toolkit que foi recompilada e adicionada nessa solution. Temos também outras 2 implementações de IServico, chamadas ServicoA e ServicoB, implementadas exatamente da mesma forma que ServicoRoot.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Referencias do projeto MEF.Tests" border="0" alt="Referencias do projeto MEF.Tests" src="http://lh3.ggpht.com/_33jXBude3Pw/S1IGsC4oVhI/AAAAAAAAAp4/qzpiYd-KShg/image%5B32%5D.png?imgmax=800" width="415" height="385" /&gt; &lt;/p&gt;  &lt;p&gt;Temos uma página principal chamada MainPage que contém apenas um botão e um listbox. A aplicação está implementada utilizando o padrão MVVM, então temos uma classe que é o ViewModel de MainPage. Nessa classe há uma propriedade chamada “Servicos” que será onde o MEF irá colocar todas as implementações que ele achar de IServico. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Classe MainPageViewModel" border="0" alt="Classe MainPageViewModel" src="http://lh3.ggpht.com/_33jXBude3Pw/S1IGsiB2p2I/AAAAAAAAAp8/EXj4kgwKajw/image%5B35%5D.png?imgmax=800" width="563" height="307" /&gt; &lt;/p&gt;  &lt;p&gt;Na linha 9 do ViewModel podemos ver uma chamada ao “&lt;font face="Courier New"&gt;PartInitializer.SatisfyImports(this);&lt;/font&gt;” O que isso faz é avaliar a classe atual e procurar por todas as propriedades marcadas com o atributo Import ou ImportMany. Depois ela procura no seu catalogo por todas as classes marcadas como Export que satisfaçam os Imports solicitados, instancia cada uma dessas classes e preenche as propriedades dos Imports. &lt;/p&gt;  &lt;p&gt;Na tela há um ListBox fazendo binding com a propriedade Servicos do ViewModel. Se executarmos a aplicação como está aparecerão 3 serviços no ListBox, como pode ser visto abaixo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_33jXBude3Pw/S1IGtyyhFxI/AAAAAAAAAqA/h6-97BBPj6Y/s1600-h/image%5B62%5D.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Aplicação rodando com extensões internas" border="0" alt="Aplicação rodando com extensões internas" src="http://lh6.ggpht.com/_33jXBude3Pw/S1IGwwa021I/AAAAAAAAAqE/BSoPdwOjZbk/image_thumb%5B6%5D.png?imgmax=800" width="632" height="285" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ótimo, isso já é metade do caminho, mas ainda falta carregar a extensão externa que está no projeto MEF.Extension. Como isso será feito?&lt;/p&gt;  &lt;p&gt;Coloquei um botão na tela que fará o download do xap gerado pelo projeto MEF.Extension e o adicionará ao catalogo do MEF para que ele saiba onde procurar mas para que isso fosse possível foram necessários 2 passos:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Alterarar o catalogo padrão do MEF para um tipo de catalogo que permita modificações dinâmicas em runtime. &lt;/li&gt;    &lt;li&gt;Recompilar e utilizar uma dll do Toolkit do Silverlight 4 que contém esse novo tipo catalogo além de uma classe que já faz o trabalho de executar o download do xap, ler seu manifesto, carregar suas dlls na memória e adicioná-las ao catalogo. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Na verdade nós começamos pelo passo 2, baixando o &lt;a title="código fonte do Toolkit para o Silverlight 4 no Codeplex" href="http://silverlight.codeplex.com/SourceControl/list/changesets"&gt;código fonte do Toolkit para o Silverlight 4&lt;/a&gt;. Depois criamos na nossa solution um projeto class library em Silverlight 3 chamado “System.ComponentModel.Composition.Packaging.Toolkit” com as mesmas propriedades do original que está no código fonte que baixamos e copiamos os arquivos das classes de um projeto para o outro.&lt;/p&gt;  &lt;p&gt;Depois vamos para o passo 1, onde temos que fazer uma alteração, preferencialmente na inicialização da aplicação, criando o novo catalogo e preparando o MEF para aceitar módulos externos em runtime. Abaixo temos as aterações que foram feitas no arquivo App.xaml.cs.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Alterações na classe App.xaml.ca" border="0" alt="Alterações na classe App.xaml.ca" src="http://lh5.ggpht.com/_33jXBude3Pw/S1IGyKW65vI/AAAAAAAAAqI/XG1PmK7_Kbs/image%5B43%5D.png?imgmax=800" width="630" height="563" /&gt; &lt;/p&gt;  &lt;p&gt;Foi criada uma propriedade estática Catalog (que será utilizada mais adiante) e um método InitializeContainer() que registra o novo catalogo para ser utilizado pelo MEF.&lt;/p&gt;  &lt;p&gt;Na linha 37 o xap atual é adicionado ao catalogo. Isso garante que tudo que estiver no xap da aplicação já funcione por padrão. Na linha 42 esse novo catalogo é registrado para ser utilizado pelo MEF. A linha 40, que está comentada, é de um exemplo em Silverlight 4 e não funciona (nem pareceu ser necessária) em Silverlight 3.&lt;/p&gt;  &lt;p&gt;Na linha 46 adicionamos a chamada ao novo método no Startup da aplicação, antes de instanciar a tela principal.&lt;/p&gt;  &lt;p&gt;A única coisa que falta agora é fazer o download do xap que contém a extensão e adicioná-lo ao catalogo. Para isso estou utilizando o evento de click do botão que está na tela:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Código para download da extensão" border="0" alt="Código para download da extensão" src="http://lh5.ggpht.com/_33jXBude3Pw/S1IGy9tX5SI/AAAAAAAAAqM/PUKMwKsaPXw/image%5B50%5D.png?imgmax=800" width="597" height="295" /&gt; &lt;/p&gt;  &lt;p&gt;No click do botão é feito o seguinte:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;É criada uma nova Uri com o endereço de onde será feito o download do xap com a extensão. Estou usando UriKind.Relative pois o xap está no mesmo diretório onde está o xap da aplicação principal. &lt;/li&gt;    &lt;li&gt;É chamado o método estático Package.DownloadPackageAsync passando a Uri do xap e uma função lambda que será responsável por adicionar o novo pacote no catalogo. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;O que o DownloadPackageAsync faz é executar o download do xap, ler seu manifesto e carregar todas suas dlls na memória. No final ele está executando a função lambda que passamos, que adiciona esse pacote xap no catalogo.&lt;/p&gt;  &lt;p&gt;Esse novo tipo de catalogo então notifica o MEF de que há um novo pacote disponível e o MEF recompõe a aplicação automaticamente (não é necessário pedir par ao MEF “satifazer os imports” novamente). É por isso que no atributo ImportMany da propriedade Servicos está sendo passado o parâmetro AllowRecomposition=true. Sem ele a recomposição automática não aconteceria.&lt;/p&gt;  &lt;p&gt;Se executarmos a aplicação novamente agora, continuarão aparecendo apenas 3 serviços no ListBox, mas ao clicar no botão um quarto serviço aparece.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_33jXBude3Pw/S1IGzvb4O8I/AAAAAAAAAqQ/6hv8sojEG3g/s1600-h/image%5B61%5D.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Aplicação rodando com extensões internas e externas" border="0" alt="Aplicação rodando com extensões internas e externas" src="http://lh6.ggpht.com/_33jXBude3Pw/S1IG1NxHlCI/AAAAAAAAAqU/kbhCLmldq2M/image_thumb%5B5%5D.png?imgmax=800" width="632" height="285" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A aplicação agora é extensível e se recompõe automaticamente quando uma nova extensão é baixada. E o mais importante: &lt;strong&gt;Não tivemos que escrever nenhum código para atualizar a tela novamente! &lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;Mas espere um momento, você não mostrou como a extensão foi feita!&lt;/h4&gt;  &lt;p&gt;Sim, eu sei disso, mas não tem segredo. É que eu queria mostrar algumas dicas para criar as extensões.&lt;/p&gt;  &lt;p&gt;Vocês devem ter notado que a extensão é um xap. Para fazer isso , adicione um novo projeto Silverlight Application na solution e remova todo o seu código (App.xaml, App.xaml.cs, MainPage.xaml, MainPage.xaml.cs). Depois trate ele normalmente como uma class library. Não se esqueça de vinculá-lo à sua aplicação web de testes para que ele seja atualizado na pasta ClientBin sempre que compilar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_33jXBude3Pw/S1IG1WIPVnI/AAAAAAAAAqY/SZDMxZ6wI3Y/s1600-h/image%5B78%5D.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Vinculando projetos Silverlight na aplicação web" border="0" alt="Vinculando projetos Silverlight na aplicação web" src="http://lh6.ggpht.com/_33jXBude3Pw/S1IG2NYPFUI/AAAAAAAAAqc/auhQIFNj2DE/image_thumb%5B11%5D.png?imgmax=800" width="632" height="319" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Esse projeto tem que fazer referencia à dll que contém os contratos (MEF.Lib) que por consequencia faz referência a dll principal do MEF. Se você simplesmente gerar o xap ele ficará quase do tamanho da aplicação principal pois conterá as 2 dlls, mas elas não precisam estar nesse xap pois já estarão no xap da aplicação então você deve marcar a opção “Copy Local” da MEF.Lib para falso.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/_33jXBude3Pw/S1IG2vBhmaI/AAAAAAAAAqg/zAUgJRri1gQ/s1600-h/image%5B72%5D.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Diminuindo o tamanho da extensão" border="0" alt="Diminuindo o tamanho da extensão" src="http://lh6.ggpht.com/_33jXBude3Pw/S1IG3GBD7sI/AAAAAAAAAqk/JP8JCXykbmY/image_thumb%5B8%5D.png?imgmax=800" width="632" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h4&gt;O que falta então?&lt;/h4&gt;  &lt;p&gt;Em uma palavra? Cache. Do jeito que está se eu fechar e abrir novamente a aplicação, a extensão que havia baixado antes não estará mais lá, mas isso é fácil de resolver. Basta salvar a extensão no IsolatedStorage e procurar por todas as extensões que foram salvas durante a criação do container. Eu criaria um diretorio addins salvaria os xaps lá. Depois basta procurar todos os xaps que estiverem nesse diretório, carregá-los na memória e adicioná-los no catálogo.&lt;/p&gt;  &lt;h4&gt;Conclusão&lt;/h4&gt;  &lt;p&gt;Esse post todo foi apenas para mostrar como é simples usar MEF e como isso pode ajudar. Você não precisa mais criar todas as funcionalidades da sua aplicação de uma vez ou sozinho. Crie pontos de extensão e vá incluindo as funcionalidades em pacotes ou deixe que a comunidade crie extensões para seu aplicativo.&lt;/p&gt;  &lt;p&gt;Vale lembrar que sempre que você adiciona referencias que não estão no runtime aos seus projetos, o tamanho do xap final aumenta. As dlls do MEF aumentam o tamanho do xap em 96KB. &lt;/p&gt;  &lt;p&gt;O MEF é muito mais do que o que coloquei aqui hoje, por isso tem esse tamanho. Eu pesei os prós e contras e para essa aplicação vale muito a pena. &lt;/p&gt;  &lt;p&gt;Abaixo tem um link para o código fonte do projeto mostrado aqui. Happy MEFing!&lt;/p&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-c15a3c05f395fee5.skydrive.live.com/embedicon.aspx/Exemplos%20Blog/MEF-SL3.zip" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3450295782412013640?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/bB8PPOsOBQc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3450295782412013640/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3450295782412013640" title="7 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3450295782412013640?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3450295782412013640?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/bB8PPOsOBQc/extendendo-silverlight-3-com-mef.html" title="Criando aplicações extensíveis em Silverlight 3 com MEF" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total><feedburner:origLink>http://blog.kelps.net/2010/01/extendendo-silverlight-3-com-mef.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YDQH49fSp7ImA9WxNaGE0.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-377934062039430218</id><published>2009-12-02T22:36:00.001-02:00</published><updated>2009-12-02T22:46:11.065-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T22:46:11.065-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webcast" /><category scheme="http://www.blogger.com/atom/ns#" term="Eventos" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Behavior" /><title>O que você gostaria de saber sobre behaviors, triggers e actions no Silverlight 3?</title><content type="html">&lt;p&gt;Na próxima terça-feira, dia 08/dezembro, farei mais um webcast pelo MSDN. O assunto dessa vez será a &lt;a title="MSDN Webcast: Explorando behaviors, triggers e actions no Expression Blend 3" href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032431912&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;criação e utilização de Behaviors, Triggers e Actions com Expression Blend 3 e Silverlight 3&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Eu gostaria de saber de vocês o que vocês gostariam de saber e ver sobre esse assunto no webcast. Se vocês têm alguma dúvida ou sugestão sobre o que devo colocar no webcast, deixem comentários neste post.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-377934062039430218?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/b_6W_GANVbE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/377934062039430218/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=377934062039430218" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/377934062039430218?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/377934062039430218?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/b_6W_GANVbE/webcast-behaviors-triggers-actions.html" title="O que você gostaria de saber sobre behaviors, triggers e actions no Silverlight 3?" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/12/webcast-behaviors-triggers-actions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QHRHs7eip7ImA9WxNaGE0.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3607546119325717704</id><published>2009-11-30T22:22:00.000-02:00</published><updated>2009-12-02T22:48:55.502-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-02T22:48:55.502-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webcast" /><category scheme="http://www.blogger.com/atom/ns#" term="Eventos" /><category scheme="http://www.blogger.com/atom/ns#" term="Download" /><title>Webcast MSDN - Explorando Silverlight Toolkit - Disponível para download</title><content type="html">&lt;p&gt;O webcast &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=pt-BR&amp;amp;EventID=1032433403&amp;amp;CountryCode=BR" rel="external"&gt;Explorando o Silverlight Toolkit&lt;/a&gt; que fiz no dia 24/novembro está disponível para download. Nesse webcast eu expliquei o que é o Silverlight Toolkit e o Silverlight SDK. Listei alguns controles presentes no runtime, SDK e Toolkit e demonstrei a utilização dos controles mais populares.&lt;/p&gt;  &lt;p&gt;Eu havia prometido postar aqui no blog um artigo explicando como utilizar os controles via data binding. Ainda não consegui concluir mas publicarei o artigo assim que estiver pronto.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_33jXBude3Pw/SxcEuWxNHdI/AAAAAAAAApc/DqGumSR1rNQ/image%5B5%5D.png?imgmax=800" width="640" height="444" /&gt; &lt;/p&gt;  &lt;p&gt;Enquanto isso, façam o download do webcast no seguinte link : &lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=pt-BR&amp;amp;EventID=1032433403&amp;amp;CountryCode=BR" rel="external"&gt;Explorando o Silverlight Toolkit&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3607546119325717704?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/IlCvoWoS7hk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3607546119325717704/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3607546119325717704" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3607546119325717704?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3607546119325717704?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/IlCvoWoS7hk/download-webcast-msdn-silverlight.html" title="Webcast MSDN - Explorando Silverlight Toolkit - Disponível para download" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.kelps.net/2009/12/download-webcast-msdn-silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AFQXk-fip7ImA9WxNVFEQ.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-7394268301190819913</id><published>2009-10-25T14:13:00.001-02:00</published><updated>2009-10-25T16:35:10.756-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-25T16:35:10.756-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Express Editions" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><title>Versões Express do Visual Studio 2010</title><content type="html">&lt;p&gt;Faz bastante tempo que não utilizo uma versão Express do Visual Studio, mas decidi fazer isso com a versão beta 2 do Visual Studio 2010 para poder postar aqui o que dá e o que dá não para fazer com esse aplicativo, e deve dizer para vocês, estou bastante impressionado com os resultados até agora.&lt;/p&gt;  &lt;p&gt;Mas antes de começar a falar da minha instalação vou falar um pouco sobre o que e para quem são as versões Express do Visual Studio 2010. A partir do Visual Studio 2005, a Microsoft passou a oferecer versões gratuitas mais simples e limitadas do Visual Studio para que qualquer pessoa possa desenvolver utilizando .NET, sem ter que arcar com os custos das versões comerciais. O foco dessas versões são hobbistas, iniciantes e estudantes, mas não há restrições de uso, podendo inclusive ser utilizados para desenvolvimento de aplicações comerciais. Para se ser uma idéia do poder e abrangência dessas versões, eu posso afirmar que teria sido possível utilizá-las na maioria das empresas em que trabalhei até hoje, sem nenhuma perda ou mudança na forma de trabalhar.&lt;/p&gt;  &lt;p&gt;A suite Express da Microsoft é composta de 5 aplicativos que podem ser baixados do site &lt;a href="http://www.microsoft.com/express/future"&gt;http://&lt;/a&gt;&lt;a href="http://www.microsoft.com/express/download"&gt;www.microsoft.com/express/download&lt;/a&gt; (as versões express 2010 beta 2 estão disponíveis em &lt;a href="http://www.microsoft.com/express/future"&gt;http://www.microsoft.com/express/future&lt;/a&gt;). 4 deles são versões simplificadas do Visual Studio e a outra é uma versão simplificada do SQL Server (também com algumas limitações como uso de processador, memória e tamanho do database, mas sem restrição para uso comercial). As quatro versões do Visual Studio são:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visual C++ Express Edition&lt;/strong&gt; : Para desenvolvimento de aplicativos em código nativo ou .NET, recomendado principalmente para desenvolvimento de jogos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visual C# Express Edition&lt;/strong&gt; : Para desenvolvimento .NET de aplicativos Windows, Console e Class Libraries utilizando a liguangem C#.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visual Basic Express Edition&lt;/strong&gt; : Para desenvolvimento .NET de aplicativos Windows, Console e Class Libraries utilizando a linguagem Visual Basic.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Visual Web Developer Express Edition&lt;/strong&gt; : Para desenvolvimento .NET de aplicativos web, Silverlight e Class Libraries utilizando tanto Visual Basic quanto C#. Até o lançamento do SP1 para o Visual Studio 2008 esta versão express permitia apenas o desenvolvimento de Web Sites, ou seja, não era possível desenvolver Web Aplications, Class Libraries ou Silverlight. Para desenvolver aplicações web em várias camadas antes do SP1 era necessário utilizar o Express Web em conjunto com uma das outras versões (C# ou Visual Basic) para as class libraries ou fazer tudo dentro do mesmo projeto. A versão 2010 já vem com suporte nativo para desenvolvimento de Web Sites, Web Aplications, ASP.NET MVC 2, Silverlight 3 e Class Libraries.&lt;/p&gt;  &lt;p&gt;Uma limitação que todos esses aplicativos Express têm é que não suportam a organização dos projetos em pastas dentro da solution, (limitação que o Expression Blend também tem), mas isso não costuma ser um problema.&lt;/p&gt;  &lt;p&gt;O Visual Web Developer 2010 Express Edition me surpreendeu positivamente de várias maneiras. Ele é muito rápido e leve, suporta projetos em .NET 2, 3, 3.5 e 4, já vem com suporte nativo para desenvolvimento MVC 2 e tem uma superficie de design para Silverlight (não é mais apenas preview) que eu vou abordar em um próximo post.&lt;/p&gt;  &lt;p&gt;Todas as versões do Visual Studio 2010, inclusive as Express, agora são feitas em WPF, o que lhes conferiu um visual renovado e mais clean. Quado abrimos o aplicativo aparece a página de startup, e as novidades já começam aí: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;É possível travar os projetos na lista de projetos recentes para que estejam sempre disponíveis.&lt;/li&gt;    &lt;li&gt;Há um checkbox no final dando a opção de fechar essa página após abrir um projeto (parece que leram a minha mente. Eu sempre quis essa opção).&lt;/li&gt;    &lt;li&gt;É possível configurar um feed rss para aparecer na aba “Latest News”.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Abaixo é possível ver todos os tipos de projeto que podemos criar assim que instalamos o produto:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_33jXBude3Pw/SuR5KIpVk7I/AAAAAAAAAoc/bocMNj8cVcM/image%5B2%5D.png?imgmax=800" width="644" height="417" /&gt;&lt;/p&gt;  &lt;p&gt;Como podem ver, isso cobre praticamente todas as nossas necessidades de desenvolvimento web.&lt;/p&gt;  &lt;p&gt;Esta versão do Visual Studio também suporta as novidades de web deployment que foram demonstradas no &lt;a href="http://kelps-sousa.blogspot.com/2009/09/webcast-msdn-vs2010-web-deploy.html"&gt;webcast do MSDN que fiz em setembro&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Após ter fuçado um pouco eu decidi ver as opções de configuração disponíveis e acertar as configurações de quebra de linha de código C# e de atributos HTML e foi então que tomei um susto e fiquei desapontado. Ao clicar em Tools &amp;gt; Options, essa foi a tela que me recebeu:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_33jXBude3Pw/SuR5K27FERI/AAAAAAAAAog/xpxX-EYsxyk/image%5B5%5D.png?imgmax=800" width="644" height="376" /&gt; &lt;/p&gt;  &lt;p&gt;Onde estavam as minhas opções? Será que isso havia se tornado mais uma limitação das versões Express? Após muito fuçar, me dei conta de um checkbox no rodapé da janela e, ao marcá-lo veio o alívio. Agora sim. Ufa.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_33jXBude3Pw/SuR5LZyi1MI/AAAAAAAAAok/GvK2qHR_YsY/image%5B8%5D.png?imgmax=800" width="644" height="376" /&gt; &lt;/p&gt;  &lt;p&gt;Uma configuração que eu acho extremamente importante de ser feita (e não sei por que não é padrão) é fazer com que o editor de html coloque as aspas automaticamente quando eu estiver adicionando atributos em uma tag. Segue o print dessa configuração:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_33jXBude3Pw/SuR5MLqcY-I/AAAAAAAAAoo/S75YRtZ3Y0Q/image%5B11%5D.png?imgmax=800" width="644" height="376" /&gt; &lt;/p&gt;  &lt;p&gt;Outra agradável supresa foi que as &lt;a title="Scott Guthrie : VS 2010 Code Intellisense Improvements (VS 2010 and .NET 4.0 Series)" href="http://weblogs.asp.net/scottgu/archive/2009/10/22/vs-2010-code-intellisense-improvements-vs-2010-and-net-4-0-series.aspx"&gt;novidades de Intellisense do Visual Studio 2010&lt;/a&gt; também estão disponíveis nas versões Express. Se você não entende bem inglês, pode ver esse &lt;a href="http://weblogs.asp.net/scottguportuguese/archive/2009/10/23/melhorias-para-intellisense-de-codigo-do-vs-2010-serie-de-posts-sobre-vs-2010-e-net-40.aspx"&gt;post do Scott Guthrie traduzido para português&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Por enquanto é isso. Vou brincar mais um pouco aqui e em breve posto mais detalhes e dicas com as minhas descobertas.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-7394268301190819913?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/OLgsRUAuj8o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/7394268301190819913/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=7394268301190819913" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/7394268301190819913?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/7394268301190819913?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/OLgsRUAuj8o/versoes-express-do-vs2010.html" title="Versões Express do Visual Studio 2010" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://blog.kelps.net/2009/10/versoes-express-do-vs2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcFRHk7fSp7ImA9WxNVEkw.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3385106149951191494</id><published>2009-10-22T10:02:00.001-02:00</published><updated>2009-10-22T10:20:15.705-02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T10:20:15.705-02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Download" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Beta" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><title>Visual Studio 2010 Beta 2 disponível para download</title><content type="html">&lt;p&gt;Esta semana a Microsoft disponibilizou para download as versões Beta 2 do Visual Studio 2010, .NET Framework 4 e Team Foundation Server 2010 com licença Go-Live. No dia 19/10 os downloads estavam disponíveis apenas para quem tem assinatura MSDN, mas a partir de ontem, dia 21/10, os downloads se tornaram públicos. Ao mesmo tempo foram divulgados os novos SKUs e modelos de licenciamento.&lt;/p&gt;  &lt;p&gt;&lt;a title="Visual Studio 2010 and .NET Framework 4 Beta 2" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_33jXBude3Pw/SuBJu8iZYxI/AAAAAAAAAno/SzXk5MnRTYA/image%5B6%5D.png?imgmax=800" width="639" height="557" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Os downloads podem ser encontrados na &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;página do Visual Studio 2010 no MSDN&lt;/a&gt;. É possível fazer download da versão em arquivo .iso ou Bootstrapper (pequeno instalador de 5 Mb que faz o download do resto do pacote durante a instalação). &lt;/p&gt;  &lt;p&gt;A licença Go-Live significa que tanto as ferramentas quanto o framework já estão em um estágio de desenvolvimento maduro o suficiente para serem utilizados em produção e devem sofrer apenas correções de bugs até o lançamento da versão final.&lt;/p&gt;  &lt;p&gt;Eu fiquei particularmente impressionado com a visível redução de tamanho das versões Express. O arquivo .iso contendo todas as versões Express (C#, C++, VB e Web) tem apenas 737 Mb.&lt;/p&gt;  &lt;p&gt;Se você já tem alguma versão beta 1 instalada, será necessário remove-la antes de começar a instalação do beta 2.&lt;/p&gt;  &lt;p&gt;Se você tem o SDK do Silverlight 3 ou do ASP.NET MVC 2 instalados, também é recomendavel removê-los (apenas os SDKs) antes de iniciar a instalação de qualquer versão do Visual Studio 2010, pois o instalador precisa instalar versões mais novas desses SDKs e ele não consegue fazer isso se já estiverem instalados. &lt;a href="http://blogs.msdn.com/amyd/"&gt;Amy Dullard&lt;/a&gt; tem um &lt;a href="http://blogs.msdn.com/amyd/archive/2009/10/21/visual-studio-2010-and-silverlight-3-sdk.aspx"&gt;post mais detalhado explicando o motivo de ser necessário remover a versão atual do SDK do Silverlight 3 antes de instalar o VS2010&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;O Visual Studio 2010 beta 2 já vem com o ASP.NET MVC 2 Preview 2 embutido. Não há mais suporte para criação de projetos utilizando MVC 1.0. É possível editar projetos feitos em MVC 1, mas sem comodidades como os wizards de criação de Views e Controllers, por exemplo. Também é possível migrar os projetos de MVC 1 para MVC 2. A versão final do MVC 2 será lançada em 22/março/2010, junto com o Visual Studio 2010, e já virá instalada nele.&lt;/p&gt;  &lt;p&gt;Para projetos Silverlight agora temos disponível uma superficie de design semelhante à do WPF. Agora é possível arrastar e soltar controles na tela, alterar suas propriedades pela janela de propriedades e configurar data binding sem ser necessário editar manualmente o código xaml.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Links para Download&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;Página do Visual Studio 2010 no MSDN : &lt;a title="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Detalhes sobre o SDK do Silverlight 3 : &lt;a title="http://blogs.msdn.com/amyd/archive/2009/10/21/visual-studio-2010-and-silverlight-3-sdk.aspx" href="http://blogs.msdn.com/amyd/archive/2009/10/21/visual-studio-2010-and-silverlight-3-sdk.aspx"&gt;http://blogs.msdn.com/amyd/archive/2009/10/21/visual-studio-2010-and-silverlight-3-sdk.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Novidades do WPF 4 : &lt;a href="http://msdn.microsoft.com/en-us/library/bb613588(VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb613588(VS.100).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Informações sobre a licença Go-Live do Visual Studio 2010 e .NET Framework 4 beta 2 : &lt;a href="http://blogs.msdn.com/jeffbe/archive/2009/10/19/going-live-with-visual-studio-2010-beta-2.aspx"&gt;http://blogs.msdn.com/jeffbe/archive/2009/10/19/going-live-with-visual-studio-2010-beta-2.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3385106149951191494?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/PDRq3XBz1ZQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3385106149951191494/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3385106149951191494" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3385106149951191494?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3385106149951191494?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/PDRq3XBz1ZQ/vs2010-beta-2-download.html" title="Visual Studio 2010 Beta 2 disponível para download" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/10/vs2010-beta-2-download.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQGRH8zfip7ImA9WxNXE0g.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-1926966142591908368</id><published>2009-09-30T21:31:00.001-03:00</published><updated>2009-09-30T21:35:25.186-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-30T21:35:25.186-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><title>Tire suas dúvidas de Silverlight nos Fóruns do MSDN Brasil</title><content type="html">&lt;p&gt;Olá Galera,&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_33jXBude3Pw/SsP4WuCMC-I/AAAAAAAAAmo/RfDobgg7dc0/s1600-h/image%5B9%5D.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://lh4.ggpht.com/_33jXBude3Pw/SsP4Xs9mIHI/AAAAAAAAAms/0QhbwnneMl0/image_thumb%5B2%5D.png?imgmax=800" width="328" height="244" /&gt;&lt;/a&gt;Se você tem alguma dúvida sobre Silverlight mas acha que o seu inglês não é suficiente para se aventurar nos &lt;a title="Fóruns do site silverlight.net" href="http://forums.silverlight.net/"&gt;fóruns do site silverlight.net&lt;/a&gt;, faça sua pergunta nos &lt;a title="Fóruns MSDN Brasil" href="http://social.msdn.microsoft.com/Forums/pt-BR/categories"&gt;fóruns do MSDN Brasil&lt;/a&gt;. Lá você pode tirar todas as suas dúvidas, tanto de Silverlight como de outras tecnologias da Microsoft.&lt;/p&gt;  &lt;p&gt;Para quem não tem o costume de fequentar fóruns, vale a pena dar uma olhada antes para ver se a sua dúvida de agora já não foi respondida por alguém. E enquanto você navega pelo fórum, aproveite para ver se você não pode ajudar outras pessoas que possam estar com dúvidas sobre um assunto que você domina. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_33jXBude3Pw/SsP4ZLHZOaI/AAAAAAAAAmw/u7COSOaeXlw/s1600-h/image%5B18%5D.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px 15px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://lh5.ggpht.com/_33jXBude3Pw/SsP4Z5XWu2I/AAAAAAAAAm0/KAfleEtw_8o/image_thumb%5B4%5D.png?imgmax=800" width="331" height="243" /&gt;&lt;/a&gt;Mas nunca se esqueça:&lt;/p&gt;  &lt;p&gt;- Seja o mais claro possível na descrição da sua dúvida ou resposta. Sempre que possível, coloque exemplos de código para ilustrar melhor o cenário.&lt;/p&gt;  &lt;p&gt;- Seja SEMPRE educado. Fóruns servem para debates, não disputas. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Para utilizar ambos os fóruns é necessário ter uma conta do Windows Live (a mesma que você já usa no seu MSN Messenger).&lt;/p&gt;  &lt;p&gt;Eu estou sempre dando uma olhada nos &lt;a href="http://forums.silverlight.net/"&gt;fórums do site silverlight.net&lt;/a&gt; e no &lt;a title="Fóruns MSDN Brasil" href="http://social.msdn.microsoft.com/Forums/pt-BR/categories"&gt;MSDN Brasil&lt;/a&gt;, principalmente na &lt;a title="Fóruns MSDN Brasil - Silverlight" href="http://social.msdn.microsoft.com/Forums/pt-BR/silverlightpt/threads"&gt;categoria Silverlight&lt;/a&gt;. Se você tiver alguma dúvida, basta posta nos fóruns que alguém vai te ajudar.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-1926966142591908368?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/mKaRZ36uqLs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/1926966142591908368/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=1926966142591908368" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/1926966142591908368?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/1926966142591908368?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/mKaRZ36uqLs/foruns-msdn-brasil-silverlight.html" title="Tire suas dúvidas de Silverlight nos Fóruns do MSDN Brasil" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/09/foruns-msdn-brasil-silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIFRXw6fSp7ImA9WxNQEk4.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-29065188634349242</id><published>2009-09-17T22:46:00.001-03:00</published><updated>2009-09-17T22:48:34.215-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T22:48:34.215-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webcast" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Webcast MSDN sobre VS2010 Web Deployment disponível para download</title><content type="html">&lt;p&gt;Galera,&lt;/p&gt;  &lt;p&gt;Acabou de ser publicado no &lt;a href="http://www.msdnbrasil.com.br/microsoft.mediacenter/Default.aspx_x_TYPE_x_WebCasts.aspx"&gt;Media Center do MSDN Brasil&lt;/a&gt; a gravação do webcast que fiz online na última terça-feira (15/09/2009) demonstrando novas funcionalidades do Visual Studio 2010 relacionadas a web deployment. &lt;/p&gt;  &lt;p&gt;No webcast eu falei um pouco sobre web.config transformations, web packaging e sobre a ferramenta msdeploy. Sigam os links abaixo e aproveitem.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_33jXBude3Pw/SrLmbZDQyLI/AAAAAAAAAmI/xsmq1OxP7fE/image%5B8%5D.png?imgmax=800" width="632" height="453" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.msdnbrasil.com.br/microsoft.mediacenter/Default.aspx_x_TYPE_x_WebCasts.aspx"&gt;Media Center MSDN Brasil : Webcasts&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Link direto - &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032423362&amp;amp;culture=pt-BR"&gt;MSDN Webcast: Visual Studio 2010: Como ficou fácil fazer deployment Web&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Palestra do PDC 2008 - &lt;a href="http://channel9.msdn.com/pdc2008/PC33/"&gt;Microsoft Visual Studio: Easing ASP.NET Web Deployment&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-29065188634349242?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/DP5jrZQ7nB4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/29065188634349242/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=29065188634349242" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/29065188634349242?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/29065188634349242?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/DP5jrZQ7nB4/webcast-msdn-vs2010-web-deploy.html" title="Webcast MSDN sobre VS2010 Web Deployment disponível para download" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/09/webcast-msdn-vs2010-web-deploy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4MQX47cSp7ImA9WxNQEk0.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3257603838614049124</id><published>2009-09-17T07:17:00.001-03:00</published><updated>2009-09-17T14:19:40.009-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T14:19:40.009-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webcast" /><category scheme="http://www.blogger.com/atom/ns#" term="Eventos" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Silverlight Firestarter ao vivo</title><content type="html">&lt;p&gt;Olá Galera,&lt;/p&gt;  &lt;p&gt;Hoje (17/09/2009) haverá um evento em Redmond chamado &lt;a href="http://www.msdnevents.com/firestarter/online/index.html"&gt;Silverlight Firestarter&lt;/a&gt;. Este evendo contará com a presentça de &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt;, &lt;a href="http://timheuer.com/"&gt;Tim Heuer&lt;/a&gt;, &lt;a href="http://silverlight.net/blogs/jesseliberty/"&gt;Jesse Liberty&lt;/a&gt; e compania e terá como objetivo apresentar vários cenários e exemplos de aplicações desenvolvidas em Silverlight.&lt;/p&gt;  &lt;p&gt;O evento começa às 13:00 h (horário de Brasília) e será &lt;a href="http://www.msdnevents.com/firestarter/online/index.html"&gt;transmitido ao vivo&lt;/a&gt;. Os palestrantes estarão acompanhando o Twitter e respondendo questões publicadas utilizando a hashtag &lt;a title="Silverlight Firestarter hashtag no Twitter" href="http://search.twitter.com/search?q=%23slfs"&gt;#slfs&lt;/a&gt;. Não percam!&lt;/p&gt;  &lt;p&gt;Será possível acompanhar o evento inteiro online de 2 formas:&lt;/p&gt;  &lt;p&gt;Pelo site do Firestarter - &lt;a title="Silverlight Firestarter Home Page" href="http://www.msdnevents.com/firestarter/online/index.html"&gt;http://www.msdnevents.com/firestarter/online/index.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strike&gt;Por webcast do Live Meeting - &lt;/strike&gt;&lt;a title="Silverlight Firestarter Live Meeting Webcast" href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032423163&amp;amp;EventCategory=2&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;&lt;strike&gt;http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032423163&amp;amp;EventCategory=2&amp;amp;culture=en-US&amp;amp;CountryCode=US&lt;/strike&gt;&lt;/a&gt; A transmissão via Live Meeting foi desabilitada e está redirecionando para o site do Firestarter. Tim Heuer acabou de falar que a idéia (e culpa) foi dele pois ele disse que um evento em Silverlight tinha que ser transmitido em Silverlight.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3257603838614049124?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/lRimYlcQGCo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3257603838614049124/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3257603838614049124" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3257603838614049124?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3257603838614049124?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/lRimYlcQGCo/silverlight-firestarter-ao-vivo.html" title="Silverlight Firestarter ao vivo" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/09/silverlight-firestarter-ao-vivo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMNQHs8fCp7ImA9WxNRF0U.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-8581938491710840123</id><published>2009-09-12T15:31:00.001-03:00</published><updated>2009-09-12T15:34:51.574-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-12T15:34:51.574-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Download" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Gallery" /><category scheme="http://www.blogger.com/atom/ns#" term="Behavior" /><title>SelectorRapidAccessKeyBehavior em ComboBox para Silverlight 3</title><content type="html">&lt;p&gt;Acabei de publicar &lt;a title="Rapid Access Key Selector Behavior for ComboBox and ListBox" href="http://gallery.expression.microsoft.com/en-us/RapidAccessKey"&gt;mais uma behavior para Silverlight 3&lt;/a&gt; na &lt;a href="http://gallery.expression.microsoft.com"&gt;Microsoft Expression Gallery&lt;/a&gt;. Assim como &lt;a title="MouseWheelScrollBehavior para Silverlight 3" href="http://kelps-sousa.blogspot.com/2009/09/mouse-wheel-scroll-behavior.html"&gt;a anterior&lt;/a&gt;, essa behavior serve para melhorar a usabilidade de controles em Silverlight, deixando-os com comportamento semelhante ao dos controles nativos para aplicações desktop. O que essa behavior faz é selecionar ítens no controle ao qual está associada, de acordo com a letra ou número que foi pressionado no teclado. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SelectorRapidAccessKeyBehavior no Microsoft Expression Gallery" border="0" alt="SelectorRapidAccessKeyBehavior no Microsoft Expression Gallery" src="http://lh4.ggpht.com/_33jXBude3Pw/SqvpBEbs4XI/AAAAAAAAAl4/m00SVy_28ZE/image%5B18%5D.png?imgmax=800" width="644" height="487" /&gt; &lt;/p&gt;  &lt;p&gt;Essa behavior só pode ser associada a controles do tipo Selector, como ComboBox e ListBox. Ela funciona no ComboBox mesmo quando está aberto.&lt;/p&gt;  &lt;p&gt;É possível definir qual propriedade dos ítems do controle será utilizada para fazer a busca. Com isso, você pode popular o combo com suas classes, utilizando data binding, e definir na behavior que a busca será feita na propriedade Nome, por exemplo. Por padrão, a behavior vai tentar utilizar a propriedade Content.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_33jXBude3Pw/SqvpB0M0bJI/AAAAAAAAAl8/tq3jsiIABKs/image%5B21%5D.png?imgmax=800" width="393" height="166" /&gt;&lt;/p&gt;  &lt;p&gt;Se a propriedade definida na behavior não for encontrada em algum ítem, esse ítem será ignorado.&lt;/p&gt;  &lt;p&gt;A behavior converte o valor da propriedade para string antes de verificar se começa com a tecla pressionada, portanto funciona também para propridades de tipos numericos ou enumeradores.&lt;/p&gt;  &lt;p&gt;O código fonte da behavior e da aplicação de exemplo estão publicados na &lt;a href="http://gallery.expression.microsoft.com"&gt;Microsoft Expression Gallery&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://gallery.expression.microsoft.com/en-us/RapidAccessKey"&gt;http://gallery.expression.microsoft.com/en-us/RapidAccessKey&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Qualquer sugestão de melhoria ou correção de bug é bem vinda.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-8581938491710840123?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/6PM0p184Vnc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/8581938491710840123/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=8581938491710840123" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/8581938491710840123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/8581938491710840123?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/6PM0p184Vnc/rapid-access-key-behavior-combobox.html" title="SelectorRapidAccessKeyBehavior em ComboBox para Silverlight 3" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/09/rapid-access-key-behavior-combobox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAHRno9fyp7ImA9WxNREE8.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3094719137853170245</id><published>2009-09-03T21:35:00.001-03:00</published><updated>2009-09-03T21:38:57.467-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-03T21:38:57.467-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webcast" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Webcast MSDN sobre as novidades do Silverlight 3</title><content type="html">&lt;p&gt;Galera,&lt;/p&gt;  &lt;p&gt;Acabou de ser publicado no Media Center do MSDN Brasil um webcast que fiz explicando e demonstrando algumas das novidades do Silverlight 3. No Media Center há também outros webcasts que foram gravados durante a semana especial sobre Silverlight. Sigam os links e assistam. &lt;/p&gt;  &lt;p&gt;Espero que seja bastante útil.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_33jXBude3Pw/SqBhn-ESSRI/AAAAAAAAAl0/aIq0QbG-UUo/image%5B4%5D.png?imgmax=800" width="639" height="467" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.msdnbrasil.com.br/microsoft.mediacenter/Default.aspx_x_TYPE_x_WebCasts.aspx"&gt;Media Center MSDN Brasil : Webcasts&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Link direto - &lt;a href="http://mediadl.microsoft.com/mediadl/www/b/brasil/MSDN/Videos/Silverlight3_DEV.wmv"&gt;MSDN Webcast : Silverlight 3.0 para Desenvolvedores - Kelps&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3094719137853170245?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/p46OWfkYp5I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3094719137853170245/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3094719137853170245" title="4 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3094719137853170245?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3094719137853170245?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/p46OWfkYp5I/webcast-msdn-novidades-silverlight-3.html" title="Webcast MSDN sobre as novidades do Silverlight 3" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://blog.kelps.net/2009/09/webcast-msdn-novidades-silverlight-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEACR347eip7ImA9WxNSGUQ.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-5062305317243427648</id><published>2009-09-03T12:04:00.001-03:00</published><updated>2009-09-03T13:52:46.002-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-03T13:52:46.002-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Download" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Gallery" /><category scheme="http://www.blogger.com/atom/ns#" term="Behavior" /><title>MouseWheelScrollBehavior para Silverlight 3</title><content type="html">&lt;p&gt;Acabei de &lt;a href="http://gallery.expression.microsoft.com/en-us/MouseWheelScroll"&gt;publicar uma behavior&lt;/a&gt; na galeria do &lt;a href="http://gallery.expression.microsoft.com/"&gt;Microsoft Expression&lt;/a&gt;. Como já deve ter ficado claro pelo título do post, esta behavior implementa scroll em controles pela roda do mouse. Agora podemos ter esse recurso em nossas aplicações sem precisar ficar escrevendo código (aliás, eu acho que o controle ScrollViewer já deveria ter essa implementação nativamente, mas…).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_33jXBude3Pw/Sp_0UtpWARI/AAAAAAAAAls/8r8D7Pvd9TM/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_33jXBude3Pw/Sp_0XNoWs5I/AAAAAAAAAlw/-Cqp8dJfX0Q/image_thumb%5B2%5D.png?imgmax=800" width="639" height="510" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Esta behavior pode ser aplicada a qualquer controle. Se o controle for um ScrollViewer ou tiver algum ScrollViewer em seu template, a behavior se encarregará de efetuar o scroll, repondendo ao evento MouseWheel (que é novo no Silverlight 3). &lt;/p&gt;  &lt;p&gt;Como a behavior está utilizando o evento MouseWheel (e não javascript), a behavior também funciona normalmente quando a aplicação é executada fora do browser. Não fiz nenhum teste para ver como ela se comporta com aplicações WPF, mas acredito que também deva funcionar normalmente.&lt;/p&gt;  &lt;p&gt;É possível configurar qual direção de scroll deve ser utilizada ou deixar a behavior decidir automaticamente (padrão). Se estiver no automático, a behavior vai tentar primeiro fazer rolagem vertical e, se não conseguir, vai tentar fazer rolagem horizontal.&lt;/p&gt;  &lt;p&gt;Também é possível inverter a direção do scroll&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_33jXBude3Pw/Sp_a4ebwnnI/AAAAAAAAAlk/Mx9vklzri9c/s1600-h/image%5B12%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_33jXBude3Pw/Sp_a49rct0I/AAAAAAAAAlo/C9Dq3n0gNKg/image_thumb%5B6%5D.png?imgmax=800" width="314" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;O código fonte da behavior e da aplicação de exemplo estão publicados na galeria do Expression. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://gallery.expression.microsoft.com/en-us/MouseWheelScroll"&gt;http://gallery.expression.microsoft.com/en-us/MouseWheelScroll&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Qualquer sugestão de melhoria e correção de bug é bem vinda.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-5062305317243427648?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/fZMQ7UkR2cg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/5062305317243427648/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=5062305317243427648" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5062305317243427648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5062305317243427648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/fZMQ7UkR2cg/mouse-wheel-scroll-behavior.html" title="MouseWheelScrollBehavior para Silverlight 3" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://blog.kelps.net/2009/09/mouse-wheel-scroll-behavior.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUMRX49fSp7ImA9WxNSGUw.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3315918383061414609</id><published>2009-09-02T14:13:00.001-03:00</published><updated>2009-09-02T14:24:44.065-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-02T14:24:44.065-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ReMIX Brasil" /><category scheme="http://www.blogger.com/atom/ns#" term="Sketchflow" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Blend" /><title>Sketchflow : Exemplo de Behavior para navegação condicional</title><content type="html">&lt;p&gt;Olá galera,&lt;/p&gt;  &lt;p&gt;No &lt;a href="http://kelps-sousa.blogspot.com/2009/08/inscricoes-abertas-microsoft-remix.html"&gt;Microsoft ReMIX&lt;/a&gt; desse ano mostramos alguns recursos novos do Silverlight 3 e Blend 3 e, durante a apresentação sobre Sketchflow, me perguntaram se havia algum jeito de fazer navegação condicional em um protótipo. A resposta? Depende. A explicação que dei foi mais ou menos a seguinte:&lt;/p&gt;  &lt;p&gt;“&lt;em&gt;Sem customização nenhuma, o Sketchflow não provê um meio de fazer navegação condicional, mas, como as ações do Sketchflow são implementadas utilizando Behaviors, é possível criar sua prórpia navegação condicional para projetos Sketchflow. Será necessário um desenvolvedor para fazer isso, mas a Behavior que ele produzirá poderá ser reutilizada em seus projetos futuros sem que seja necessário recorrer ao desenvolvedor novamente (a não ser que haja bugs, é claro).&lt;/em&gt; ”&lt;/p&gt;  &lt;p&gt;Eu pretendia fazer essa behavior e escrever um post explicando mas &lt;a href="http://electricbeach.org/"&gt;Christian Schormann&lt;/a&gt; (Program Manager do Blend 3) foi mais rápido do que eu. Ele publicou ontem em seu blog um post chamado &lt;a href="http://electricbeach.org/?p=344"&gt;Sketchflow : Conditional Navigation Behavior Sample&lt;/a&gt;, que eu espero que possa ser útil para vocês. O post está em inglês. &lt;/p&gt;  &lt;p&gt;Se tiverem alguma dúvida sobre como isso funciona, como utilizar ou até mesmo como fazer suas próprias Behaviors, sintam-se a vontade para postar suas perguntas aqui. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3315918383061414609?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/l8wv6gTxl40" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3315918383061414609/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3315918383061414609" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3315918383061414609?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3315918383061414609?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/l8wv6gTxl40/sketchflow-behavior-navegacao.html" title="Sketchflow : Exemplo de Behavior para navegação condicional" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/09/sketchflow-behavior-navegacao.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMDSXY5eyp7ImA9WxJaE08.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-4208122589223070055</id><published>2009-08-03T09:52:00.001-03:00</published><updated>2009-08-03T15:01:18.823-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-03T15:01:18.823-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TechEd" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="ReMIX Brasil" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Inscrições abertas para o Microsoft ReMIX Brasil 2009</title><content type="html">&lt;p&gt;Galera,&lt;/p&gt;  &lt;p&gt;Já estão abertas as inscrições para o &lt;a href="http://www.teched.com.br/remix/"&gt;Remix Brasil 2009&lt;/a&gt;. O evento será no &lt;a href="http://www.teched.com.br/Mapa.aspx"&gt;Campos da UNIP Paraíso&lt;/a&gt;, no dia 26/Agosto (segundo dia do TechEd).&lt;/p&gt;  &lt;p&gt;Este ano o ReMIX acontecerá em paralelo ao &lt;a href="http://www.teched.com.br/"&gt;TechEd Brasil 2009&lt;/a&gt;. Há 3 opções de inscrição: Somente ReMIX, somente TechEd e ReMIX + TechEd.&lt;/p&gt;  &lt;p&gt;No ReMIX deste ano será mostrado o processo completo de desenvolvimento de uma aplicação utilizando Silverlight 3, desde a concepção, escolha das tecnologias (Silverlight 3, Live, Azure…), wireframes com sketchflow, aplicação de design com Blend 3, Desenvolvimento com Visual Studio e deploy na nuvem utilizando Windows Azure.&lt;/p&gt;  &lt;p&gt;Serão 5 palestras, cada uma com um foco e mostrando uma parte do processo. Entrem no site e vejam &lt;a href="http://www.teched.com.br/remix/"&gt;mais detalhes&lt;/a&gt;. Eu participarei de algumas das palestras mostrando como essa aplicação foi desenvolvida e os recursos que foram utilizados em cada estágio.&lt;/p&gt;  &lt;p&gt;Vejos vocês lá.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-4208122589223070055?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/qBHzwgLZ6Eg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/4208122589223070055/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=4208122589223070055" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/4208122589223070055?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/4208122589223070055?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/qBHzwgLZ6Eg/inscricoes-abertas-microsoft-remix.html" title="Inscrições abertas para o Microsoft ReMIX Brasil 2009" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.kelps.net/2009/08/inscricoes-abertas-microsoft-remix.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4BQX45eyp7ImA9WxJbEks.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3058087469964618320</id><published>2009-07-22T09:48:00.001-03:00</published><updated>2009-07-22T09:49:10.023-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-22T09:49:10.023-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Download" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="RTM" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Expression" /><category scheme="http://www.blogger.com/atom/ns#" term="RTW" /><title>Microsoft Expression 3 RTW disponível para download</title><content type="html">&lt;p&gt;Galera, &lt;/p&gt;  &lt;p&gt;Já estão disponíveis para download as versões RTW de toda a linha Microsoft Expression 3. Quem tem assinatura MSDN já pode fazer o download e quem não tem pode baixar uma versão trial válida por 60 dias no link abaixo.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/expression/try-it/Default.aspx#PageTop"&gt;Microsoft Expression 3 Trials Download&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3058087469964618320?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/nYElbWgL1ro" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3058087469964618320/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3058087469964618320" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3058087469964618320?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3058087469964618320?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/nYElbWgL1ro/expression-3-rtw-disponivel.html" title="Microsoft Expression 3 RTW disponível para download" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/07/expression-3-rtw-disponivel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcAQX89eSp7ImA9WxJUFUo.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-5496337167299067343</id><published>2009-07-14T10:08:00.001-03:00</published><updated>2009-07-14T10:10:40.161-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-14T10:10:40.161-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webcast" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Semana de Webcasts sobre Silverlight 3</title><content type="html">&lt;p&gt;Galera,&lt;/p&gt;  &lt;p&gt;O MSDN Brasil preparou uma semana inteira de webcasts sobre Silverlight 3, que podem ser acessados no link abaixo. Ontem tivemos um webcast de introdução com René de Paula e hoje às 12:00h (horário de brasília) teremos um webcast com Ricardo Dorta voltado para desenvolvedores, do qual eu farei parte como moderador para tirar todas as suas dúvidas. Entrem no site e inscrevam-se. É grátis.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032421044&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;Webcast : Silverlight 3 para Desenvolvedores&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/pt-br/events/dd366106.aspx"&gt;Calendários de Webcasts&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-5496337167299067343?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/VH5sJn1_Zjc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/5496337167299067343/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=5496337167299067343" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5496337167299067343?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5496337167299067343?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/VH5sJn1_Zjc/semana-webcasts-silverlight-3.html" title="Semana de Webcasts sobre Silverlight 3" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/07/semana-webcasts-silverlight-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IMRH08fyp7ImA9WxJUFU0.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-5153868557741063277</id><published>2009-07-13T10:22:00.001-03:00</published><updated>2009-07-13T13:13:05.377-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-13T13:13:05.377-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Download" /><category scheme="http://www.blogger.com/atom/ns#" term="Release Candidate" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="RTM" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="RTW" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Blend" /><title>Saiu o Silverlight 3 RTW</title><content type="html">&lt;p&gt;Já não deve mais ser novidade mas eu vou postar assim mesmo (não pude publicar este post antes pois estava viajando e sem acesso à internet desde quinta-feira). Parte da &lt;a href="http://kelps-sousa.blogspot.com/2009/07/silverlight-3-rtw-esta-proximo.html"&gt;previsão que fiz na quarta-feira&lt;/a&gt; se concretizou nesta última sexta-feira, 10/Julho, pois foi lançada a versão final (RTW) do Silverlight 3. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_33jXBude3Pw/Sls0_GGOdTI/AAAAAAAAAj0/tNoNCylr12M/s1600-h/image4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_33jXBude3Pw/Sls0_xdVMJI/AAAAAAAAAj4/L_AD3JrewIE/image_thumb2.png?imgmax=800" width="522" height="416" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/silverlight/overview/top-features/default.aspx"&gt;Demos de novas funcionalidades do Silverlight 3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Eu disse que apenas parte da previsão de concretizou pois a versão que foi lançada do Blend 3 é a RC (Release Candidate) e não a versão final. Mesmo assim, a espera não será grande pois já foi anunciado que a versão final será lançada nos próximos 30 dias.&lt;/p&gt;  &lt;p&gt;Há muitas novidades nesta última versão do Silverlight 3, como pode ser visto no &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/07/10/silverlight-3-released.aspx"&gt;post do Scott Guthrie&lt;/a&gt; a respeito do lançamento, mas há também algumas boas surpresas escondidas como por exemplo suporte nativo ao mouse wheel (chega de assinar eventos javascript!) em todos os controles, assim como a definição do tamanho inicial da janela para aplicações out-of-browser (esses 2 recursos não existiam ainda na versão Beta).&lt;/p&gt;  &lt;p&gt;Ainda hoje eu devo publicar um post detalhando um pouco melhor as novidades. Enquanto isso, atualizem seus computadores com as novas versões (se não tiverem feito isso ainda) e comecem a explorar.&lt;/p&gt;  &lt;p&gt;Abaixo estão os links para download:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9442b0f2-7465-417a-88f3-5e7b5409e9dd&amp;amp;displaylang=en"&gt;Silverlight 3 Tools para Visual Studio 2008 + plugin Silverlight 3 + SDK&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24246"&gt;Silverlight Toolkit (que adiciona diversos controles)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=92e1db7a-5d36-449b-8c6b-d25f078f3609&amp;amp;displaylang=en"&gt;Expression Blend 3 RC + Sketchflow&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0A9773A7-C854-41FA-B73D-535ABFB73BAF&amp;amp;displaylang=en"&gt;Documentação do Silverlight 3&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-5153868557741063277?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/8T6G8Leq2QU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/5153868557741063277/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=5153868557741063277" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5153868557741063277?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5153868557741063277?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/8T6G8Leq2QU/saiu-silverlight-3-rtw.html" title="Saiu o Silverlight 3 RTW" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/07/saiu-silverlight-3-rtw.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcFRng7eCp7ImA9WxJUEEs.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-672862115064856754</id><published>2009-07-08T11:22:00.001-03:00</published><updated>2009-07-08T11:23:37.600-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-08T11:23:37.600-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MIX09" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="RTM" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Blend" /><title>O Silverlight 3 RTW está muito próximo</title><content type="html">&lt;p&gt;Não há informações oficiais sobre isso ainda mas tudo indica que o Blend 3 e o Silverlight 3 serão lançados na próxima sexta-feira, dia 10/Julho/2009, quando haverá uma festa de lançamento dos 2 produtos. &lt;/p&gt;  &lt;p&gt;Esta informação foi postada &lt;a href="http://blog.codeguru.com/blog/2009/05/silverlight-3-and-expression-b.html"&gt;originalmente no blog CodeGuru&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Além disso, Scott Guthrie deu a entender em uma &lt;a href="http://exposureroom.com/members/RIAViewMirror.aspx/assets/b82374fa227348b28609613cb3c650bc/"&gt;apresentação que fez em Londres&lt;/a&gt; recentemente, também extra-oficialmente, que a festa do dia 10 será realmente o lançamento do RTW dos 2 produtos (avancem o primeiro vídeo para aproximadamente 3:20 e tirem suas próprias conclusões). Para mim, o fato de o Scott ter falado do jeito que falou já é uma indicação bastante forte de que o lançamento será mesmo no dia 10.&lt;/p&gt;  &lt;p&gt;Como estou participando do programa de testes do Microsoft Expression Blend 3 (BLEND-INSIDERS e TAP – Technology Adoption Program – postarei mais detalhes sobre essa experiência em breve), eu tenho acesso a versões posteriores ao beta público que foi disponibilizado durante o MIX e já aviso que há algumas diferenças estre o beta público e a versão mais atual. Estejam preparados para atualizar seus códigos e divirtam-se com as novas funcionalidades.&lt;/p&gt;  &lt;p&gt;Agora só nos resta aguardar. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-672862115064856754?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/lzugb1RPYkY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/672862115064856754/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=672862115064856754" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/672862115064856754?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/672862115064856754?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/lzugb1RPYkY/silverlight-3-rtw-esta-proximo.html" title="O Silverlight 3 RTW está muito próximo" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.kelps.net/2009/07/silverlight-3-rtw-esta-proximo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcBSXk6fCp7ImA9WxJXEk0.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-4812871192457988144</id><published>2009-06-05T08:56:00.001-03:00</published><updated>2009-06-05T08:57:38.714-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-05T08:57:38.714-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Blend" /><title>Artigo em português sobre Behaviors no Silverlight com o Microsoft Expression Blend 3</title><content type="html">&lt;p&gt;Galera,&lt;/p&gt;  &lt;p&gt;Seguindo uma &lt;a href="http://blogs.msdn.com/renedepaula/archive/2009/05/26/10-sites-legais-sobre-silverlight-de-acordo-com-tiago-felix.aspx"&gt;dica do René&lt;/a&gt; eu comecei a acompanhar o blog do &lt;a title="Tiago Felix Blog" href="http://tiagofelix.wordpress.com"&gt;Tiago Felix&lt;/a&gt; e hoje ele publicou um post explicando o que são e como usar Behaviors em Silverlight 3. Vale a pena dar uma olhada pois este é um recurso que vai simplificar ainda mais o desenvolvimento de aplicações em Silverlight e vai encurtar muito a distância entre desenvolvedores e designers de uma forma muito eficiente e limpa.&lt;/p&gt;  &lt;p&gt;Meus parabéns ao Tiago pelo excelente post. Agora temos mais um blog em português para consultar e tirar nossas dúvidas.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://tiagofelix.wordpress.com/2009/06/05/behaviors-no-silverlight-3-e-expression-blend-3-pt-1"&gt;Behaviors no Silverlight 3 e Expression Blend 3 – Pt 1&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-4812871192457988144?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/-t7Q4KpcEt0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/4812871192457988144/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=4812871192457988144" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/4812871192457988144?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/4812871192457988144?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/-t7Q4KpcEt0/artigo-silverlight-behaviors-portugues.html" title="Artigo em português sobre Behaviors no Silverlight com o Microsoft Expression Blend 3" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.kelps.net/2009/06/artigo-silverlight-behaviors-portugues.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08ERnwyfSp7ImA9WxJQFUw.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-8954396614731784117</id><published>2009-05-22T10:54:00.001-03:00</published><updated>2009-05-28T11:10:07.295-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-28T11:10:07.295-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Dicas" /><title>Interação com Silverlight – Parte 1 – Passando Parâmetros</title><content type="html">&lt;p&gt;Há diversas formas de interagir e trocar informações com aplicações Silverlight mas não há muita informação, principalmente em português, sobre como elas funcionam e como utilizá-las. Por conta disso, hoje eu começo uma série de posts com dicas de como interagir com aplicações Silverlight. No final deste post eu vou colocar links para todos os outros posts desta série, conforme eles forem publicados.&lt;/p&gt;  &lt;p&gt;Neste post vou falar sobre passagem de parâmetros.&lt;/p&gt;  &lt;p&gt;Há diversos cenários onde sua aplicação Silverlight necessitará receber parâmetros externos para poder funcionar. Por exemplo: Você pode desenvolver um vídeo player e quando for colocá-lo em sua página terá que passar como parâmetro a url do vídeo que o player irá exibir. &lt;/p&gt;  &lt;p&gt;A forma de fazer isso em Silverlight é muito semelhante à abordagem do Flash. Como vocês já devem saber a essa altura, o Silverlight (assim como o Flash) é um plugin do browser que é colocado na página utilizando a tag &lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#a41515"&gt;object&lt;/font&gt;&amp;gt;&lt;/font&gt;. Essa tag object pode conter uma série de tags &lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#a41515"&gt;param&lt;/font&gt;&amp;gt;&lt;/font&gt; que possuem propriedades name e value e servem para configurar o plugin. Em Flash, quando é necessário passar algum parâmetro é utilizado o &lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#a41515"&gt;param&lt;/font&gt;&amp;gt;&lt;/font&gt; “&lt;strong&gt;flashvars&lt;/strong&gt;” e os parâmetros são passados de forma semelhante a parâmetros passados na url para uma página .aspx. Em Silverlight é utilizado o &lt;font color="#0000ff" face="Courier New"&gt;&amp;lt;&lt;font color="#a41515"&gt;param&lt;/font&gt;&amp;gt;&lt;/font&gt; “&lt;strong&gt;initParams&lt;/strong&gt;”, onde são passados chaves e valores separados por “,'” (vírgula). Atualmente há uma limitação nessa forma de passar parâmetros pois não há um encode automático de “,” ou “=” então, se o seu parâmetro tiver algum desses caracteres será necessário encodá-los manualmente de alguma forma. &lt;/p&gt;  &lt;p&gt;Segue abaixo um exemplo de um player de vídeo em Silverlight, onde são passados como parâmetros o nome do arquivo de vídeo e um segundo parâmetro informado o modo de auto play:&lt;/p&gt;  &lt;p style="border-bottom: #000 1px solid; border-left: #000 1px solid; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #000 1px solid; border-right: #000 1px solid; padding-top: 5px"&gt;&lt;code&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#a41515"&gt;object&lt;/font&gt; &lt;font color="#ff0000"&gt;width&lt;/font&gt;=&amp;quot;100%&amp;quot; &lt;font color="#ff0000"&gt;height&lt;/font&gt;=&amp;quot;100%&amp;quot; &lt;font color="#ff0000"&gt;data&lt;/font&gt;=&amp;quot;data:application/x-silverlight-2,&amp;quot; &lt;font color="#ff0000"&gt;type&lt;/font&gt;=&amp;quot;application/x-silverlight-2&amp;quot;&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;font color="#a41515"&gt;param&lt;/font&gt; &lt;font color="#ff0000"&gt;name&lt;/font&gt;=&amp;quot;source&amp;quot; &lt;font color="#ff0000"&gt;value&lt;/font&gt;=&amp;quot;/ClientBin/player.xap&amp;quot;/&amp;gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;font color="#a41515"&gt;param&lt;/font&gt; &lt;font color="#ff0000"&gt;name&lt;/font&gt;=&amp;quot;initParams&amp;quot; &lt;font color="#ff0000"&gt;value&lt;/font&gt;=&amp;quot;video=meu-video.wmv,autoplay=false&amp;quot;/&amp;gt;         &lt;br /&gt;&amp;lt;/&lt;font color="#a41515"&gt;object&lt;/font&gt;&amp;gt;&lt;/font&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Em páginas .aspx pode ser utilizado o server control do Silverlight, como no exemplo abaixo:&lt;/p&gt;  &lt;p style="border-bottom: #000 1px solid; border-left: #000 1px solid; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #000 1px solid; border-right: #000 1px solid; padding-top: 5px"&gt;&lt;code&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;font color="#a41515"&gt;asp&lt;/font&gt;:&lt;font color="#a41515"&gt;Silverlight&lt;/font&gt; &lt;font color="#ff0000"&gt;runat&lt;/font&gt;=&amp;quot;server&amp;quot; &lt;font color="#ff0000"&gt;Source&lt;/font&gt;=&amp;quot;~/ClientBin/player.xap&amp;quot; &lt;font color="#ff0000"&gt;Width&lt;/font&gt;=&amp;quot;100%&amp;quot; &lt;font color="#ff0000"&gt;Height&lt;/font&gt;=&amp;quot;100%&amp;quot; &lt;font color="#ff0000"&gt;InitParameters&lt;/font&gt;=&amp;quot;video=meu-video.wmv,autoplay=false&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Mas aí você me pergunta: Como eu faço para ler esses parâmetros? &lt;/p&gt;  &lt;p&gt;Em páginas .aspx, quando passamos parâmetros na url utilizamos o Request[&lt;font color="#a41515"&gt;“nome_do_parametro”&lt;/font&gt;] para fazer a leitura. No Silverlight é um pouco diferente. Os parâmetros são encarados como sendo informações de inicialização da aplicação e, portanto, só há um lugar onde eles podem ser acessados que é a partir de um event handler do evento Startup da aplicação (a classe App do seu projeto Silverlight). Abaixo segue um exemplo de código para ler esses parâmetros:&lt;/p&gt;  &lt;p style="border-bottom: #000 1px solid; border-left: #000 1px solid; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #000 1px solid; border-right: #000 1px solid; padding-top: 5px"&gt;&lt;code&gt;&lt;font color="#0000ff"&gt;public static void&lt;/font&gt; Application_Startup(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, &lt;font color="#2c92af"&gt;StartupEventArgs&lt;/font&gt; e) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.RootVisual = new &lt;font color="#2c92af"&gt;Page&lt;/font&gt;();       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;string&lt;/font&gt; movie = e.InitParams[&lt;font color="#a41515"&gt;&amp;quot;video&amp;quot;&lt;/font&gt;];       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;bool&lt;/font&gt; autoplay = &lt;font color="#0000ff"&gt;false&lt;/font&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;bool&lt;/font&gt;.TryParse(e.InitParams[&lt;font color="#a41515"&gt;&amp;quot;autoplay&amp;quot;&lt;/font&gt;], &lt;font color="#0000ff"&gt;out&lt;/font&gt; autoplay);       &lt;br /&gt;} &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Mas agora surge outro problema: Como fazemos para o resto do código da nossa aplicação ter acesso a esses valores?&lt;/p&gt;  &lt;p&gt;Isso é fácil: Podemos criar propriedades estáticas na nossa classe App e acessá-las de qualquer lugar no nosso aplicativo. Segue abaixo outro exemplo:&lt;/p&gt;  &lt;p style="border-bottom: #000 1px solid; border-left: #000 1px solid; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #000 1px solid; border-right: #000 1px solid; padding-top: 5px"&gt;&lt;code&gt;&lt;font color="#0000ff"&gt;public static string&lt;/font&gt; MovieFile { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;set&lt;/font&gt;; }       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff"&gt;public static bool&lt;/font&gt; AutoPlay { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;set&lt;/font&gt;; }       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff"&gt;public static void&lt;/font&gt; Application_Startup(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, &lt;font color="#2c92af"&gt;StartupEventArgs&lt;/font&gt; e) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.RootVisual = new &lt;font color="#2c92af"&gt;Page&lt;/font&gt;();&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2c92af"&gt;App&lt;/font&gt;.MovieFile = e.InitParams[&lt;font color="#a41515"&gt;&amp;quot;video&amp;quot;&lt;/font&gt;];&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2c92af"&gt;App&lt;/font&gt;.AutoPlay = &lt;font color="#0000ff"&gt;bool&lt;/font&gt;.Parse(e.InitParams[&lt;font color="#a41515"&gt;&amp;quot;autoplay&amp;quot;&lt;/font&gt;]);       &lt;br /&gt;} &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Mas há uma coisa que me incomoda nesse código: Para cada parâmetro passado será necessário eu ler, efetuar o parse e atribuir o resultado à propriedade. Isso é tranquilo quando estamos falando de 2 ou 3 parâmetros string, mas começa a ficar complicado quando há muitos parâmetros ou quando os parâmetros são de tipos diferente de string, onde se torna necessário fazer parse. Em casos assim o código desse event handler poderia ficar grande muito rapidamente.&lt;/p&gt;  &lt;p&gt;Então eu decidi pensar em como isso poderia se tornar mais fácil. Como eu gostaria que esses parâmetros funcionassem? Seria legal se eu pudesse simplesmente criar propriedades na minha classe App e marcá-las com algum atributo que indicasse que a propriedade deve ser inicializada a partir do valor passado no InitParams. Então eu pesquisei um pouco de vi que isso era de fato possível, utilizando um pouco de Reflection. Foi então que eu escrevi a classe abaixo:&lt;/p&gt;  &lt;p style="border-bottom: #000 1px solid; border-left: #000 1px solid; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #000 1px solid; border-right: #000 1px solid; padding-top: 5px"&gt;&lt;code&gt;&lt;font color="#0000ff"&gt;public class&lt;/font&gt; &lt;font color="#2c92af"&gt;InitParamAttribute&lt;/font&gt; : &lt;font color="#2c92af"&gt;Attribute&lt;/font&gt; {       &lt;br /&gt;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public string&lt;/font&gt; ParamName { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;private set&lt;/font&gt;; }       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public&lt;/font&gt; InitParamAttribute(&lt;font color="#0000ff"&gt;string&lt;/font&gt; paramName) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.ParamName = paramName;       &lt;br /&gt;&amp;#160;&amp;#160; }       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public static void&lt;/font&gt; AppStartup_Handler(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, &lt;font color="#2c92af"&gt;StartupEventArgs&lt;/font&gt; e) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#2c92af"&gt;Type&lt;/font&gt; t = sender.GetType();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;var&lt;/font&gt; props = t.GetProperties();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#0000ff"&gt;var&lt;/font&gt; p &lt;font color="#0000ff"&gt;in&lt;/font&gt; props) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#0000ff"&gt;var&lt;/font&gt; ca &lt;font color="#0000ff"&gt;in&lt;/font&gt; p.GetCustomAttributes(&lt;font color="#0000ff"&gt;false&lt;/font&gt;)) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;var&lt;/font&gt; a = ca &lt;font color="#0000ff"&gt;as&lt;/font&gt; &lt;font color="#2c92af"&gt;InitParamAttribute&lt;/font&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;if&lt;/font&gt; (a != &lt;font color="#0000ff"&gt;null&lt;/font&gt; &amp;amp;&amp;amp; !&lt;font color="#0000ff"&gt;string&lt;/font&gt;.IsNullOrEmpty(a.ParamName) &amp;amp;&amp;amp; p.CanWrite &amp;amp;&amp;amp; a &lt;font color="#0000ff"&gt;is&lt;/font&gt; InitParamAttribute) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;if&lt;/font&gt; (e.InitParams.ContainsKey(a.ParamName)) {&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;object&lt;/font&gt; valor = &lt;font color="#2c92af"&gt;Convert&lt;/font&gt;.ChangeType(e.InitParams[a.ParamName], p.PropertyType, &lt;font color="#2c92af"&gt;CultureInfo&lt;/font&gt;.InvariantCulture);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; p.SetValue(sender, valor, &lt;font color="#0000ff"&gt;null&lt;/font&gt;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160; }       &lt;br /&gt;} &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;O que essa classe faz é ler, usando Reflection, a classe App da aplicação e listar todas suas propriedades públicas. Para cada propriedade pública que estiver marcada com o atributo InitParam, ela vai verificar se o parâmetro correspondente foi passado, executar o parse do valor e atribuir à propriedade.&lt;/p&gt;  &lt;p&gt;Usando esta nova classe, agora eu posso mudar o código da minha classe App para o seguinte: &lt;/p&gt;  &lt;p style="border-bottom: #000 1px solid; border-left: #000 1px solid; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #000 1px solid; border-right: #000 1px solid; padding-top: 5px"&gt;&lt;code&gt;[&lt;font color="#2c92af"&gt;InitParam&lt;/font&gt;(&lt;font color="#a41515"&gt;&amp;quot;video&amp;quot;&lt;/font&gt;)]       &lt;br /&gt;&lt;font color="#0000ff"&gt;public static string&lt;/font&gt; MovieFile { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;set&lt;/font&gt;; }       &lt;br /&gt;      &lt;br /&gt;[&lt;font color="#2c92af"&gt;InitParam&lt;/font&gt;(&lt;font color="#a41515"&gt;&amp;quot;autoplay&amp;quot;&lt;/font&gt;)]       &lt;br /&gt;&lt;font color="#0000ff"&gt;public static bool&lt;/font&gt; AutoPlay { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;set&lt;/font&gt;; }       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt; App() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.Startup += &lt;font color="#0000ff"&gt;this&lt;/font&gt;.Application_Startup;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.Exit += &lt;font color="#0000ff"&gt;this&lt;/font&gt;.Application_Exit;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.UnhandledException += &lt;font color="#0000ff"&gt;this&lt;/font&gt;.Application_UnhandledException;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.Startup += &lt;font color="#2c92af"&gt;InitParamAttribute&lt;/font&gt;.AppStartup_Handler;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();       &lt;br /&gt;}       &lt;br /&gt;      &lt;br /&gt;&lt;font color="#0000ff"&gt;public static void&lt;/font&gt; Application_Startup(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, StartupEventArgs e) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;this&lt;/font&gt;.RootVisual = new &lt;font color="#2c92af"&gt;Page&lt;/font&gt;();       &lt;br /&gt;} &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Agora basta acessar essas propriedades de qualquer lugar do meu aplicativo Silverlight, utilizado por exemplo App.MovieFile. Se eu quiser passar mais parâmetros para a aplicação, basta criar mais propriedades e marcá-las com esse atributo.&lt;/p&gt;  &lt;p&gt;É claro que é possível melhorar o código apresentado aqui. Umas das melhorias poderia ser, por exemplo, informar se o parâmetro é obrigatório ou não e lançar uma excessão caso seja obrigatório e não tenha sido passado, mas do jeito que está já serve para ilustrar como passar e utilizar parâmetros em aplicações Silverlight de forma eficiente e sem perder tempo escrevendo código de validação e tratamento de input.&lt;/p&gt;  &lt;p&gt;Espero que este pequeno tutorial seja útil. Em breve darei continuidade a esta série escrevendo sobre outras formas de interagir com aplicações Silverlight.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Dicas sobre interação com aplicações Silverlight&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Interação com Silverlight – Parte 1 – Passando Parâmetros &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-8954396614731784117?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/jsOzIlT4c9Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/8954396614731784117/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=8954396614731784117" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/8954396614731784117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/8954396614731784117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/jsOzIlT4c9Y/passando-parametros-para-silverlight.html" title="Interação com Silverlight – Parte 1 – Passando Parâmetros" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/05/passando-parametros-para-silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YER3o9eip7ImA9WxJSEU4.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3079372365320196831</id><published>2009-04-30T16:07:00.001-03:00</published><updated>2009-04-30T20:45:06.462-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-30T20:45:06.462-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>Windows 7 RC disponibilizado para Assinantes MSDN e TechNet</title><content type="html">&lt;p&gt;Galera,&lt;/p&gt;  &lt;p&gt;O Release Candidate (RC) do Windows 7 j&amp;#225; est&amp;#225; dispon&amp;#237;vel para download para quem tem assinatura MSDN ou TechNet. Basta entrar no site da sua assinatura para fazer o download. No TechNet, fica na sess&amp;#227;o &amp;#8220;Downloads &amp;gt; Produtos e Chaves &amp;gt; Sistemas Operacionais &amp;gt; Windows 7&amp;#8221;.&lt;/p&gt;  &lt;p&gt;Por enquanto ainda n&amp;#227;o h&amp;#225; vers&amp;#245;es em portugu&amp;#234;s para download e o language pack s&amp;#243; suporta franc&amp;#234;s, alem&amp;#227;o, japones e espanhol. &lt;/p&gt;  &lt;p&gt;N&amp;#227;o caiam na tenta&amp;#231;&amp;#227;o de baixar via torrent pois j&amp;#225; h&amp;#225; relatos de que algumas das vers&amp;#245;es disponiblizadas via torrent est&amp;#227;o com v&amp;#237;rus. Se voc&amp;#234; n&amp;#227;o tem assinatura MSDN ou TechNet, n&amp;#227;o se preocupe pois a espera n&amp;#227;o ser&amp;#225; longa. O download p&amp;#250;blico est&amp;#225; previsto para ser disponibilizado no dia 5/maio. &lt;/p&gt;  &lt;p&gt;Hoje mesmo eu come&amp;#231;o meu download e j&amp;#225; vou come&amp;#231;ar a preparar meu computador para a reinstala&amp;#231;&amp;#227;o do sistema (eu prefiro reinstalar do que atualizar o que est&amp;#225; instalado).&lt;/p&gt;  &lt;p&gt;UPDATE -&amp;gt; O n&amp;#250;mero serial utilizado no Windows 7 Beta tamb&amp;#233;m serve no RC.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_33jXBude3Pw/Sfn27DC7fzI/AAAAAAAAAYA/OPBX0qi_I2s/s1600-h/image%5B11%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_33jXBude3Pw/Sfn28mKs5nI/AAAAAAAAAYE/DXboD6-00JM/image_thumb%5B5%5D.png?imgmax=800" width="645" height="426" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3079372365320196831?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/I4848hfDkYs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3079372365320196831/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3079372365320196831" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3079372365320196831?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3079372365320196831?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/I4848hfDkYs/windows-7-rc-disponivel.html" title="Windows 7 RC disponibilizado para Assinantes MSDN e TechNet" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/04/windows-7-rc-disponivel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8GQHw-eyp7ImA9WxVUFU8.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-3989779485110614772</id><published>2009-03-20T01:16:00.004-03:00</published><updated>2009-03-20T01:37:01.253-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-20T01:37:01.253-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Webcast" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX09" /><category scheme="http://www.blogger.com/atom/ns#" term="Download" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX" /><title>Download dos Videos das Palestras do MIX09</title><content type="html">&lt;p&gt;Já dá para começar a baixar ou assistir online os &lt;a href="http://videos.visitmix.com/MIX09"&gt;vídeos das palestras do MIX09&lt;/a&gt;. Nem todas as palestras já estão disponíveis para download (pode demorar até 24 horas para cada palestra ser disponibilizada).&lt;/p&gt;&lt;p&gt;Eu já comecei a baixar. O tamanho dos arquivos varia bastante, de acordo com o tempo de duração de cada palestra, desde 67 Mb até 700 Mb. Até agora eu já baixei 15 (mais de 3 Gb de vídeos), mas está tudo tão interessante que eu estou achando que vou baixar o evento inteiro.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-3989779485110614772?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/wHCkiz8bS0k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/3989779485110614772/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=3989779485110614772" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3989779485110614772?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/3989779485110614772?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/wHCkiz8bS0k/download-videos-palestras-mix09.html" title="Download dos Videos das Palestras do MIX09" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.kelps.net/2009/03/download-videos-palestras-mix09.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcAQ30zcSp7ImA9WxVUFE0.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-7377017129654042158</id><published>2009-03-18T15:47:00.001-03:00</published><updated>2009-03-18T15:47:22.389-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-18T15:47:22.389-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX09" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Beta" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Blend" /><title>Resumo do Keynote do MIX09</title><content type="html">&lt;p&gt;&lt;a href="http://visitmix.com/About/timsneath"&gt;Tim Sneath&lt;/a&gt; está blogando ao vivo do MIX e já é possível ver nesse blog um resumo &lt;a href="http://visitmix.com/Opinions/MIX09-Live-Blog-2-Advancing-User-Experiences-Scott-Guthrie"&gt;do Keynote de abertura&lt;/a&gt; do evento. Muitas novidades sobre ASP.NET MVC, Blend 3, Silverlight 3, Expression Web e muitas outras coisas. Esse ano promete.&lt;/p&gt;  &lt;p&gt;Também é possível acompanhar o evento pelo Twitter, usando a tag #MIX09. Logo após o evento vai começar uma sessão de perguntas e respostas com &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt; pelo Twitter, usando a tag #ASKTHEGU. Se tiver alguma dúvida, essa é sua chance.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-7377017129654042158?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/YmcFBVUvJtw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/7377017129654042158/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=7377017129654042158" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/7377017129654042158?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/7377017129654042158?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/YmcFBVUvJtw/resumo-do-keynote-do-mix09.html" title="Resumo do Keynote do MIX09" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/03/resumo-do-keynote-do-mix09.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4GQHk4eSp7ImA9WxVUE0U.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-7502428047932672355</id><published>2009-03-18T10:41:00.001-03:00</published><updated>2009-03-18T10:45:21.731-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-18T10:45:21.731-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="RTM" /><title>Liberada a versão RTM do ASP.NET MVC</title><content type="html">&lt;p&gt;Saiu hoje a versão RTM do &lt;a href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt;, antes do início do MIX09. &lt;/p&gt;  &lt;p&gt;Para facilitar, você pode ir direto para a &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b"&gt;página de download&lt;/a&gt; e baixar.&lt;/p&gt;  &lt;p&gt;Esta nova versão não traz nada de novo com relação ao &lt;a href="http://codeclimber.net.nz/archive/2009/03/04/wanna-see-asp.net-mvc-rtmed-test-mvc-rc2.aspx"&gt;RC2&lt;/a&gt;, exceto uma atualização do jQuery para a última versão (1.3.2) e a resolução de um bug na integração com o Silverlight.&lt;/p&gt;  &lt;p&gt;Para aqueles que estavam apenas esperando virar RTM para poder começar a usar pra valer, chegou a hora. Divirtam-se!&lt;/p&gt;  &lt;p&gt;Meus agradecimentos a &lt;a href="http://codeclimber.net.nz/"&gt;Simone Chiaretta&lt;/a&gt;, que foi quem primeiro &lt;a href="http://feedproxy.google.com/~r/Codeclimber/~3/lWn_oC_upfA/asp.net-mvc-goes-rtm-before-mix09.aspx"&gt;divulgou esta notícia hoje&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-7502428047932672355?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/yf9P66c2N1s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/7502428047932672355/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=7502428047932672355" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/7502428047932672355?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/7502428047932672355?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/yf9P66c2N1s/aspnet-mvc-rtm.html" title="Liberada a versão RTM do ASP.NET MVC" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/03/aspnet-mvc-rtm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cEQns-eyp7ImA9WxVUE0k.&quot;"><id>tag:blogger.com,1999:blog-1102500548563078654.post-5159950268167409990</id><published>2009-03-18T01:02:00.001-03:00</published><updated>2009-03-18T01:03:23.553-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-18T01:03:23.553-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MIX09" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Blend 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX" /><category scheme="http://www.blogger.com/atom/ns#" term="Expression Blend" /><title>MIX09 ao Vivo de Las Vegas</title><content type="html">&lt;p&gt;Infelizmente, como muitos de vocês, eu não irei no MIX este ano como &lt;a href="http://kelps-sousa.blogspot.com/2009/01/mix-2009-com-super-desconto.html"&gt;havia publicado antes&lt;/a&gt;, devido a diversos fatores (financeiros e logisticos). Eu já havia pago minha inscrição e obtido o passaporte e visto, mas com a mudança nos planos eu fui “obrigado” a solicitar o reembolso da inscrição (que por sinal foi creditada no meu cartão de crédito no mesmo dia. impressionante) e vou ter que me contentar em assistir às palestras online.&lt;/p&gt;  &lt;p&gt;Para quem quiser fazer como eu, basta acessar o site &lt;a href="http://live.visitmix.com/"&gt;http://live.visitmix.com/&lt;/a&gt; a partir de quarta-feira 18 de março (hoje) às 13:00h (horário de Brasília. serão 09:00h em Las Vegas).&lt;/p&gt;  &lt;p&gt;Haverá uma tonelada de coisas interessantes este ano, como as primeiras demonstrações do Silverlight 3 com seus novos recursos de 3D, vídeo em H.264, e melhorias para desenvolvimento de aplicativos. Além disso será mostrado também o estágio atual de desenvolvimento do Blend 3 e seus novos recursos e melhorias. Haverá bastante coisa em outros assuntos também como IE8, Azure, Windows 7, etc.&lt;/p&gt;  &lt;p&gt;Karen Corby publicou uma &lt;a href="http://scorbs.com/2009/03/10/mix09-so-divine/"&gt;pequena lista com as principais palestras sobre Silverlight 3&lt;/a&gt; deste ano, incluíndo uma dela sobre controles. Vale a pena conferir todas.&lt;/p&gt;  &lt;p&gt;Todas as sessões serão gravadas e disponibilizadas no site após algumas horas. Liberem espaços em seus HDs pois vai sobrar material de qualidade para baixar. Há rumores de que haverá mais sessões sendo transmitidas ao vivo este ano, além dos Keynotes, mas nada foi confirmado nesse sentido.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1102500548563078654-5159950268167409990?l=blog.kelps.net' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DevNewsAndOldsByKelps/~4/edMKdOzPWJc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.kelps.net/feeds/5159950268167409990/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=1102500548563078654&amp;postID=5159950268167409990" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5159950268167409990?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1102500548563078654/posts/default/5159950268167409990?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevNewsAndOldsByKelps/~3/edMKdOzPWJc/mix09-ao-vivo-de-las-vegas.html" title="MIX09 ao Vivo de Las Vegas" /><author><name>Kelps Leite de Sousa</name><uri>http://www.blogger.com/profile/13481703950137691070</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06604419571627162472" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.kelps.net/2009/03/mix09-ao-vivo-de-las-vegas.html</feedburner:origLink></entry></feed>
