<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Arik Poznanski&amp;#39;s Blog</title><link>http://blogs.microsoft.co.il/blogs/arik/</link><description>It CAN be done with .NET</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Blog Summary</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/11/20/blog-summary.aspx</link><pubDate>Sun, 20 Nov 2011 05:13:28 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:935937</guid><dc:creator>arik</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I feel this is a good time for me to present a summary of some of the posts I wrote..&lt;/p&gt;  &lt;h3&gt;Most Interesting Posts&lt;/h3&gt;  &lt;p&gt;Following are posts that I&amp;#39;m personally proud of.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/04/01/shake-gestures-library-a-windows-phone-recipe.aspx"&gt;Shake Gestures Library – A Windows Phone Recipe&lt;/a&gt;     &lt;br /&gt;In this post I present an algorithm for detecting shake gestures on a Windows Phone system using the accelerometer sensor. This is by far my favorite post since I actually needed to use some math to solve this one. &lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_0F88EFF9.png" width="315" height="257" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/05/30/how-to-use-a-net-4-based-dll-from-net-2-based-application.aspx"&gt;How To Use a .NET 4 Based DLL From .NET 2 Based Application?&lt;/a&gt;     &lt;br /&gt;In this post I explain how can one use COM Interop facilities to load two CLR versions (both 2.0 and 4.0) into the same process, thus enabling code that runs under .NET 2.0 to call code that runs under .NET 4.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_028121AE.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_46E112ED.png" width="323" height="119" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/13/using_2D00_windows_2D00_phone_2D00_as_2D00_windows_2D00_7_2D00_accelerometer_2D00_sensor.aspx"&gt;Using Windows Phone As Windows 7 Accelerometer Sensor&lt;/a&gt;     &lt;br /&gt;In this post I present a cool project I&amp;#39;ve done: a user-mode driver that enables you to use your Windows Phone device as a standard Windows 7 accelerometer sensor.&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_25DE2CE4.png" width="347" height="207" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Most Popular Posts&lt;/h3&gt;  &lt;p&gt;Following are posts that are very popular on my blog. Some of them, only god knows why…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/19/windows-8-what-s-new.aspx"&gt;Windows 8: What&amp;#39;s New?&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/28/order-in-chaos-handling-unhandled-exceptions-in-a-wpf-application.aspx"&gt;Order in Chaos: Handling unhandled exceptions in a WPF application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/05/17/speed-up-visual-studio-builds.aspx"&gt;Speed up Visual Studio Builds&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/12/24/order-in-chaos-dependency-property-value-resolution.aspx"&gt;Order in Chaos: Dependency Property Value Resolution&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/11/17/no-more-magic-strings-presenting-string-of.aspx"&gt;No More Magic Strings! Presenting: @string.of&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/10/08/order-in-chaos-net-collections.aspx"&gt;Order in Chaos: .NET Collections&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/09/21/porting-from-wpf-to-silverlight-the-missing-pieces-part-1.aspx"&gt;Porting from WPF to Silverlight: The Missing Pieces, Part 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/09/23/porting-from-wpf-to-silverlight-the-missing-pieces-part-2.aspx"&gt;Porting from WPF to Silverlight: The Missing Pieces, Part 2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2009/12/23/windows-ribbon-for-winforms-part-0-table-of-contents.aspx"&gt;Windows Ribbon for WinForms, Part 0 – Table of Contents&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/04/13/wpf-animate-visibility-property-update.aspx"&gt;WPF: Animate Visibility Property&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/05/28/wpf-single-instance-application.aspx"&gt;WPF Single Instance Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/07/12/step-into-net-framework-4-0-source-code.aspx"&gt;Step Into .NET Framework 4.0 Source Code&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Tutorials&lt;/h3&gt;  &lt;p&gt;Following are some posts that I use as indexes to tutorials I wrote.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/07/wpf-tutorial-published-heb.aspx"&gt;WPF Tutorial&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/21/silverlight-tutorial-published-heb.aspx"&gt;Silverlight Tutorial&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx"&gt;Windows Phone Tutorial&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/03/21/beginner-s-guide-for-programming-in-c-hebrew.aspx"&gt;C# for Beginners Tutorial&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Open Source Projects &lt;/h3&gt;  &lt;p&gt;Following are open source projects I created.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://wp7accelerometer.codeplex.com/"&gt;Windows Phone Accelerometer Driver for Windows 7&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://windowsribbon.codeplex.com/"&gt;Windows Ribbon for WinForms&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://wpfmessagebox.codeplex.com/"&gt;WPF MessageBox&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://afterthedeadline.codeplex.com/"&gt;Grammar and Spell Checking Library&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://grammarcheckerplugin.codeplex.com/"&gt;Grammar and Spell Checking Plugin for Windows Live Writer&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Awards&lt;/h3&gt;  &lt;p&gt;During the past year I&amp;#39;ve been awarded several titles:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/10/02/i-m-a-microsoft-mvp.aspx"&gt;Microsoft MVP (Most Valuable Professional)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/02/i-m-a-microsoft-community-contributor.aspx"&gt;Microsoft MCC (Microsoft Community Contributor)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/01/06/codeproject-mvp-2011-amp-mcts.aspx"&gt;CodeProject MVP&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Conferences&lt;/h3&gt;  &lt;p&gt;Some posts about conferences that I attended.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Build/default.aspx"&gt;Build related posts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/MIX+2011/default.aspx"&gt;MIX 2011 related posts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/PDC+2010/default.aspx"&gt;PDC 2010 related posts&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Topics&lt;/h3&gt;  &lt;p&gt;And finally, here are the main topics I wrote about.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2300_/default.aspx"&gt;C# related posts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2B002B00_/default.aspx"&gt;C++ related posts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Windows+7/default.aspx"&gt;Windows 7 related posts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WPF/default.aspx"&gt;WPF related posts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Silverlight/default.aspx"&gt;Silverlight related posts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Windows+Phone+7/default.aspx"&gt;Windows Phone related posts&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=935937" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Blog/default.aspx">Blog</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Summary/default.aspx">Summary</category></item><item><title>I’m a Microsoft MVP!</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/10/02/i-m-a-microsoft-mvp.aspx</link><pubDate>Sun, 02 Oct 2011 22:25:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:909733</guid><dc:creator>arik</dc:creator><slash:comments>9</slash:comments><description>&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp; &lt;img border="0" alt="MVP Logo" align="middle" src="http://blogs.microsoft.co.il/blogs/arik/MVP_FullColor_ForScreen_38247525.png" width="128" height="200" /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;p&gt;I&amp;#39;ve recently received an email from Microsoft notifying me I&amp;#39;ve been awarded Microsoft MVP in Visual C# !&lt;/p&gt;
&lt;p&gt;I’d like to thank &lt;strong&gt;Microsoft&lt;/strong&gt; and specifically &lt;a href="http://blogs.microsoft.co.il/blogs/bursteg/"&gt;Guy Burstein&lt;/a&gt; for his guidance and excellent advice on finding ways to help the developers community. &lt;br /&gt;Also, a special thanks is in order for my managers at &lt;strong&gt;Sela Group&lt;/strong&gt;: David Bassa, Caro Segal and Ishai Ram for giving me the time to invest in the developers community.&lt;br /&gt;Lastly, I&amp;#39;d like to thank you, my blog readers.&lt;/p&gt;
&lt;p&gt;Now that I got this out, I can continue my Thailand honeymoon trip :) &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;img border="0" alt="Thailand 2011" align="middle" src="http://blogs.microsoft.co.il/blogs/arik/thailand2011.jpg" width="640" height="480" /&gt;&lt;/p&gt;
&lt;p&gt;That&amp;#39;s it for now,&lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=909733" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/MVP/default.aspx">MVP</category></item><item><title>Comparing Versions of a .NET Framework DLL Using NDepend</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/22/comparing-versions-of-a-net-framework-dll-using-ndepend.aspx</link><pubDate>Thu, 22 Sep 2011 18:28:57 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:904081</guid><dc:creator>arik</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Following Build conference, many people may ask what is new in the .NET Framework.    &lt;br /&gt;Well, you could find out by examining the documentation, but then you are limited to what it covers. If you want to know ALL that is new / updated in the .NET Framework, read on..&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;You can use the following method to easily find the difference between .NET Framework 4.5 and its previous version, .NET Framework 4.0!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In this post I will show you how you can use the tool &lt;a href="http://www.ndepend.com/"&gt;NDepend&lt;/a&gt; to compare two versions of a DLL which is part of the .NET Framework.&lt;/p&gt;  &lt;p&gt;I&amp;#39;ve already done it major parts of the framework and found interesting results! Unfortunately, I don&amp;#39;t have the time to publish my results since I&amp;#39;m going out on vacation for a month. So I leave you with these instructions on how to dig easily in the right places. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Introduction&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;NDepend&lt;/strong&gt; is a tool for static analysis of .NET code. It has many features including the ability to run both predefined and custom queries against the code base.     &lt;br /&gt;These queries let you evaluate the quality of the code.&lt;/p&gt;  &lt;p&gt;Another neat feature of &lt;strong&gt;NDepend &lt;/strong&gt;is the ability to compare two versions of the same DLL. This lets you see progress between different builds of your project. Note that you don&amp;#39;t need the actual code, you compare the actual DLLs.&lt;/p&gt;  &lt;p&gt;Using &lt;strong&gt;NDepend&lt;/strong&gt; to compare DLLs that are part of the .NET Framework is not trivial, but can be done. This post will show you exactly how.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Prerequisites&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_76CEEBB6.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_12AFFAE2.png" width="530" height="74" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You should have &lt;strong&gt;NDepend&lt;/strong&gt; on your computer, download it &lt;a href="http://www.ndepend.com/NDependDownload.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We will compare two different versions of the file &lt;strong&gt;mscorlib.dll&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Some assumption before we continue:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The .NET Framework v4.0 version of the file resides in: C:\NET\v4.0\mscorlib.dll &lt;/li&gt;    &lt;li&gt;The .NET Framework v4.5 version of the file resides in: C:\NET\v4.5\mscorlib.dll &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Step 1: Create an NDepend project for each version of the .NET Framework&lt;/h4&gt;  &lt;p&gt;In this section we will analyze each version of the DLL in a different project, so the following steps will be done twice. On the next step we will compare the two project results.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Launch &lt;strong&gt;NDepend &lt;/strong&gt;and select &lt;strong&gt;Create Project…&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_62C53353.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_35A020B8.png" width="600" height="468" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Fill the fields &lt;strong&gt;Project Name &lt;/strong&gt;and &lt;strong&gt;Location &lt;/strong&gt;and press &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_643951C3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_7E9C18A5.png" width="600" height="161" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Select &lt;strong&gt;Browse… &lt;/strong&gt;and choose the first file: &lt;strong&gt;C:\Net\v4.0\mscorlib.dll&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_5AB3414B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_74E384A2.png" width="600" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now select &lt;strong&gt;View Folders that contain .NET assemblies to analyze&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_5C43C185.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_5F6583A0.png" width="600" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Select the .NET Framework folders that were automatically added and remove each one of them by right-clicking and selecting &lt;strong&gt;Remove&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_19B0D3B5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_01111098.png" width="600" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Finally, click the green Play button or simply press F5 to start analyzing the DLL&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_2CB1B4C7.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_5B67479C.png" width="600" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When the analyze is finished you should see some statistics about the selected DLL and you will have options to manually analyzing the file. For our purpose we can simply skip this and close the application (entirely).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_278F2B7E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_083C5EDE.png" width="600" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now &lt;u&gt;&lt;strong&gt;repeat&lt;/strong&gt;&lt;/u&gt; these instructions to analyze the second version of your DLL. Don&amp;#39;t forget to remove the .NET Framework folders!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Step 2: Compare between the NDepend projects&lt;/h4&gt;  &lt;p&gt;In this step we will compare the two project results from the previous step.&lt;/p&gt;  &lt;p&gt;Launch &lt;strong&gt;NDepend &lt;/strong&gt;and select &lt;strong&gt;Compare: 2 versions of a code base&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_3A23D99B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_06D77A65.png" width="600" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Select the projects you have created in the previous step. Make sure you put the older version on the left and the newer version on the right.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_628E81E3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_4D1080E1.png" width="600" height="286" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it! now you can easily compare the two versions. For example, you can check which types are new in the new DLL version, or which types have changed, etc..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_3F9A480E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_03EA1381.png" width="600" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/22/comparing-versions-of-a-net-framework-dll-using-ndepend.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/22/comparing-versions-of-a-net-framework-dll-using-ndepend.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/22/comparing-versions-of-a-net-framework-dll-using-ndepend.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/22/comparing-versions-of-a-net-framework-dll-using-ndepend.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=904081" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/.NET+4/default.aspx">.NET 4</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Build/default.aspx">Build</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/NDepend/default.aspx">NDepend</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category></item><item><title>Windows 8: What's New?</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/19/windows-8-what-s-new.aspx</link><pubDate>Mon, 19 Sep 2011 04:24:04 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:902624</guid><dc:creator>arik</dc:creator><slash:comments>4</slash:comments><description>&lt;p&gt;Got back from &lt;a href="http://www.buildwindows.com/"&gt;Build conference&lt;/a&gt;. Since I expect many people will ask me &amp;quot;So, what&amp;#39;s new?&amp;quot; and since the answer is rather complex, I figured I should try to write a post about it, so here goes…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/build_logo_1A197150.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="build_logo" border="0" alt="build_logo" src="http://blogs.microsoft.co.il/blogs/arik/build_logo_thumb_1F87E1F4.png" width="252" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;General Information&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Windows 7 sold (i.e. legal copies) over 450,000,000 copies since it was released. &lt;/li&gt;    &lt;li&gt;Windows 7 bypassed Windows XP in world usage. &lt;/li&gt;    &lt;li&gt;Windows 8 will be used primary for tablets and other touch-based devices. &lt;/li&gt;    &lt;li&gt;Windows 8 can run on Intel-based processors or &lt;a href="http://en.wikipedia.org/wiki/ARM_architecture"&gt;ARM&lt;/a&gt;-based processors. &lt;/li&gt;    &lt;li&gt;Windows 8 consumes fewer resources than Windows 7 and has the same hardware requirements. &lt;/li&gt;    &lt;li&gt;Windows 8 has a new user interface, used primarily with touch screens but supports fallback to mouse and keyboard, applications that uses the new user interface are called &amp;quot;Metro-style applications&amp;quot;. &lt;/li&gt;    &lt;li&gt;All participants of the Build conference received a Samsung tablet with a preview release of Windows 8, that has the following spec:      &lt;ul&gt;       &lt;li&gt;Intel Core i5 &lt;/li&gt;        &lt;li&gt;4GB DDR3 &lt;/li&gt;        &lt;li&gt;64GB SSD &lt;/li&gt;        &lt;li&gt;11.6&amp;quot; diagonal, 1366x768 display &lt;/li&gt;        &lt;li&gt;Included dock and USB keyboard &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Windows 8 Developer Preview version can be downloaded &lt;a href="http://msdn.microsoft.com/en-us/windows/apps/br229516"&gt;here&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Windows 8 for Developers&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;There is a new way to expose Windows API named Windows Runtime or &lt;strong&gt;WinRT&lt;/strong&gt;.       &lt;ul&gt;       &lt;li&gt;WinRT is completely native and is built above COM with the addition of inheritance, generics, delegates and more. Basically WinRT = Modern COM. &lt;/li&gt;        &lt;li&gt;WinRT doesn&amp;#39;t cover all previous Win32 APIs. &lt;/li&gt;        &lt;li&gt;WinRT has can be used from C++, C#, VB.NET and JavaScript using &lt;u&gt;language projections&lt;/u&gt; which are auto-generated from the WinRT APIs and provide a natural and familiar experience for developers of the language. &lt;/li&gt;        &lt;li&gt;WinRT API follow a guideline that says that every API which might take more than 50ms should be async. As a result a lot of WinRT APIs are async. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/windows-8-platform-tools_0B8E4F5E.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="windows-8-platform-tools" border="0" alt="windows-8-platform-tools" src="http://blogs.microsoft.co.il/blogs/arik/windows-8-platform-tools_thumb_1592CABC.jpg" width="600" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WinRT includes a native UI framework, XAML-based, for building Metro-style applications. &lt;/li&gt;    &lt;li&gt;The XAML of the new WinRT UI framework resembles Silverlight XAML rather than WPF XAML. &lt;/li&gt;    &lt;li&gt;Metro-style applications can be built in the following technologies:      &lt;ul&gt;       &lt;li&gt;C++ and XAML &lt;/li&gt;        &lt;li&gt;C# and XAML &lt;/li&gt;        &lt;li&gt;VB.NET and XAML &lt;/li&gt;        &lt;li&gt;JavaScript and HTML/CSS &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;A Metro-style application can collaborate with another Metro-style application without knowing him at all using several contracts that Windows 8 defines, e.g. share source contract and share target contract. &lt;/li&gt;    &lt;li&gt;Metro-style applications should define the &lt;u&gt;capabilities&lt;/u&gt; they use, similar to Windows Phone applications. At runtime these declarations are enforced. &lt;/li&gt;    &lt;li&gt;C++ has new extensions that allows easy integration with WinRT, these extensions follow a syntax similar to C++/CLI, only they are completely native. &lt;/li&gt;    &lt;li&gt;The next version of .NET Framework is 4.5, nothing too exciting there. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;IDE Improvements&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;There is a &lt;a href="http://www.microsoft.com/visualstudio/en-us/visual-studio-11"&gt;preview version&lt;/a&gt; &lt;strong&gt;Visual Studio 11 &lt;/strong&gt;and &lt;strong&gt;Expression Blend 5&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;New in Visual Studio 11:      &lt;ul&gt;       &lt;li&gt;Added new project templates for developing Metro-style applications in all the supported languages. &lt;/li&gt;        &lt;li&gt;Productivity Power Tools incorporated into Visual Studio 11. &lt;/li&gt;        &lt;li&gt;New features for agile development including: Sprint Planning, Managing Task Board, Performing Code Reviews. &lt;/li&gt;        &lt;li&gt;XAML properties editor is the same as the corresponding Blend editor. &lt;/li&gt;        &lt;li&gt;Deploy to the new Windows App Store directly from Visual Studio 11. &lt;/li&gt;        &lt;li&gt;Added tools for viewing and basic editing 3D models, images, textures and also for debugging DirectX based output. &lt;/li&gt;        &lt;li&gt;Added feature that allows searching for code duplication based on semantic tree instead of simple text search. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;New in Expression Blend 5:      &lt;ul&gt;       &lt;li&gt;Designing Metro-style HTML / CSS applications. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;TFS will be available as a service on the cloud. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Some General Insights:&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;C++ is very much alive! I&amp;#39;ve been to an excellent lecture on modern C++ (the portable one, not MS specific), by Herb Sutter. Wow. So many C++ developers, the room was packed! &lt;/li&gt;    &lt;li&gt;Future of Silverlight is not clear. There &lt;u&gt;will&lt;/u&gt; be version 5 but there&amp;#39;s no information about what&amp;#39;s next. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Since all the videos are now available on the conference site, I strongly suggest you see the ones that are interesting for you. Note that there quite a lot.&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/19/windows-8-what-s-new.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/19/windows-8-what-s-new.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/19/windows-8-what-s-new.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/19/windows-8-what-s-new.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=902624" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Build/default.aspx">Build</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/PDC+2011/default.aspx">PDC 2011</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WinRT/default.aspx">WinRT</category></item><item><title>WPF Tutorial Published [HEB]</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/07/wpf-tutorial-published-heb.aspx</link><pubDate>Thu, 08 Sep 2011 03:30:52 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:896919</guid><dc:creator>arik</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;After publishing a &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx"&gt;Windows Phone tutorial&lt;/a&gt; and a &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/21/silverlight-tutorial-published-heb.aspx"&gt;Silverlight tutorial&lt;/a&gt;, I now bring you the WPF tutorial, for the sake of XAML-based technology completeness.&lt;/p&gt;  &lt;p&gt;This 37 chapters tutorial in Hebrew completely adapted to fit &lt;strong&gt;WPF desktop development &lt;/strong&gt;and using relevant source code and screenshots.&lt;/p&gt;  &lt;p&gt;The tutorial is hosted on the great Hebrew developers community site: &lt;a href="http://webmaster.org.il/"&gt;WebMaster.org.il&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://midnightprogrammer.net/image.axd?picture=2011%2F5%2Fwindows-presentation-foundation-wpf-logo.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;The tutorial is based on &lt;strong&gt;WPF 4 &lt;/strong&gt;and it teaches desktop development from the first step, using &lt;strong&gt;Visual C# 2010 Express&lt;/strong&gt;, provided freely by Microsoft.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_091C748E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_5FC52C8F.png" width="297" height="67" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Following is the index for all chapters:&lt;/p&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf"&gt;Introduction &amp;amp; Working Environment&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-first-application"&gt;First Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-xaml"&gt;XAML Language&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-properties"&gt;Setting Properties in XAML&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-code-behind"&gt;XAML and Code-behind C#&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-layout"&gt;Layout: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-layout-stackpanel"&gt;Layout: Using StackPanel &amp;amp; WrapPanel&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-layout-dockpanel"&gt;Layout: Using DockPanel&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-layout-grid"&gt;Layout: Using Grid&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-layout-canvas"&gt;Layout: Using Canvas&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-layout-properties"&gt;Layout: Additional Properties&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-basic-controls"&gt;Basic Controls: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-basic-controls-buttons"&gt;Basic Controls: Button controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-basic-controls-text"&gt;Basic Controls: Text Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-basic-controls-listbox"&gt;Basic Controls: ListBox&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-basic-controls-combobox"&gt;Basic Controls: ComboBox&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-more-controls"&gt;More Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-calendar-controls"&gt;Date Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-menu-controls"&gt;Menu Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-content-control"&gt;Understanding ContentControl&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-dependency-properties"&gt;Using Dependency Properties&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-routed-events"&gt;Using Routed Events&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-windows"&gt;Adding Child Windows&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-resources"&gt;Using Resources&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-binding"&gt;Data Binding: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-binding-mode"&gt;Data Binding: Controlling Information Flow&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-binding-update-source-trigger"&gt;Data Binding: Controlling Update Time&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-binding-sources"&gt;Data Binding: Defining Sources&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-binding-ivalueconverter"&gt;Data Binding: Using IValueConverter&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-binding-inotifypropertychanged"&gt;Data Binding: Using INotifyPropertyChanged&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-binding-collection"&gt;Data Binding: Binding to Collections&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-data-templates"&gt;Using Data Templates&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-shapes"&gt;Using Shapes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-brushes"&gt;Using Brushes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-image-and-video"&gt;Displaying Images and Videos&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-transformations"&gt;Using Transformations&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/wpf-styles"&gt;Using Styles&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/07/wpf-tutorial-published-heb.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/07/wpf-tutorial-published-heb.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/07/wpf-tutorial-published-heb.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/09/07/wpf-tutorial-published-heb.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=896919" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/webmaster.org.il/default.aspx">webmaster.org.il</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Hebrew/default.aspx">Hebrew</category></item><item><title>Order in Chaos: Handling unhandled exceptions in a WPF application</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/28/order-in-chaos-handling-unhandled-exceptions-in-a-wpf-application.aspx</link><pubDate>Mon, 29 Aug 2011 00:03:02 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:889982</guid><dc:creator>arik</dc:creator><slash:comments>14</slash:comments><description>&lt;h3&gt;Introduction&lt;/h3&gt;  &lt;p&gt;So you want to handle somehow all the unhandled exceptions in your application.    &lt;br /&gt;Usually you want to accomplish one of the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Log the exception for later diagnostics &lt;/li&gt;    &lt;li&gt;Present the user an unhandled exception UI, nicer than the default &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You heard there’s an event you should register, or maybe you find one by mistake, but is it the correct one?&lt;/p&gt;  &lt;p&gt;Did you know there are four (!) different events for handling unhandled exceptions in the .NET framework?&lt;/p&gt;  &lt;p&gt;So what is the difference between them and when should we use each one?    &lt;br /&gt;This post will hopefully answer these questions.&lt;/p&gt;  &lt;p&gt;Note: this is NOT a replacement for &lt;b&gt;try-catch&lt;/b&gt; blocks!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Summary&lt;/h3&gt;  &lt;p&gt;I’ll begin with the summary to avoid boring busy developers.&lt;/p&gt;  &lt;p&gt;In a typical WPF application you should use &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.application.dispatcherunhandledexception.aspx"&gt;Application.Current.DispatcherUnhandledException&lt;/a&gt;&lt;/b&gt; for exceptions generated on the UI thread and &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx"&gt;AppDomain.CurrentDomain.UnhandledException&lt;/a&gt;&lt;/b&gt; for all the other exceptions.&lt;/p&gt;  &lt;p&gt;Now, for the details..&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;System.Windows.Forms.Application.ThreadException&lt;/h3&gt;  &lt;p&gt;This event is used for catching unhandled exceptions only on UI threads created by &lt;b&gt;WinForms&lt;/b&gt;. Other exceptions, generated on non-UI threads won’t arrive to this event. Use &lt;b&gt;AppDomain.Current.UnhandledException&lt;/b&gt; to catch them.&lt;/p&gt;  &lt;p&gt;The default behavior of a WinForms application with an unhandled exception is to present the following error dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_297A0E4E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_2FFD6811.png" width="454" height="163" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you register to this event, the application will not show the error dialog and will automatically extend the application life (i.e. the application won’t be killed).&lt;/p&gt;  &lt;p&gt;If you do want to end your application, maybe after logging the exception or asking the user with a personalized dialog, you must do it yourself using &lt;b&gt;Application.Exit()&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;You can find the MSDN documentation on this event &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;System.Windows.Application.Current.DispatcherUnhandledException&lt;/h3&gt;  &lt;p&gt;This event is used for catching unhandled exceptions only from the &lt;u&gt;main&lt;/u&gt; UI thread created by &lt;b&gt;WPF&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;The default behavior of a WPF application with an unhandled exception is to present the following error dialog and end the application:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_4B061152.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_7525996D.png" width="366" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you register to this event, you will get the chance to log the exception, but the application will still end, unless you set &lt;b&gt;e.Handled = true&lt;/b&gt;, on the event’s EventArgs parameter.&lt;/p&gt;  &lt;p&gt;You can find the MSDN documentation on this event &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.application.dispatcherunhandledexception.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Dispatcher.UnhandledException &lt;/h3&gt;  &lt;p&gt;This event is used for catching unhandled exceptions on the thread attached to the specific Dispatcher (WPF only). Note, that in WPF two threads can have two different Dispatcher object attached. This event is only useful if you have several UI threads in your WPF application, which is quite rare. If you’re not sure, you probably need to handle only the previous event: Application.Current.DispatcherUnhandledException.&lt;/p&gt;  &lt;p&gt;As in the previous event, if you register, you will get the change to log the exception. To prevent the exception internal handling from being called set &lt;b&gt;e.Handled = true&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;You can find the MSDN documentation on this event &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.unhandledexception.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;AppDomain.CurrentDomain.UnhandledException&lt;/h3&gt;  &lt;p&gt;This event is used for catching unhandled exceptions generated from all threads running under the context of a specific application domain. &lt;/p&gt;  &lt;p&gt;You can find the MSDN documentation on this event &lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Bonus: AppDomain.CurrentDomain.FirstChanceException&lt;/h3&gt;  &lt;p&gt;This event which exists only from .NET 4, is raised on ANY exception, if the handled one. In fact, the event is raised before the search for the catch blocks. You can’t handle the exception using this event. You can use it if you need to log exceptions that are caught.&lt;/p&gt;  &lt;p&gt;You can find the MSDN documentation on this event &lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomain.firstchanceexception.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/28/order-in-chaos-handling-unhandled-exceptions-in-a-wpf-application.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/28/order-in-chaos-handling-unhandled-exceptions-in-a-wpf-application.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/28/order-in-chaos-handling-unhandled-exceptions-in-a-wpf-application.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/28/order-in-chaos-handling-unhandled-exceptions-in-a-wpf-application.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=172641" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=889982" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WinForms/default.aspx">WinForms</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Dispatcher/default.aspx">Dispatcher</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Order+in+Chaos/default.aspx">Order in Chaos</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Exceptions/default.aspx">Exceptions</category></item><item><title>Silverlight Tutorial Published [HEB]</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/21/silverlight-tutorial-published-heb.aspx</link><pubDate>Mon, 22 Aug 2011 03:36:05 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:887227</guid><dc:creator>arik</dc:creator><slash:comments>9</slash:comments><description>&lt;p&gt;After publishing a &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx"&gt;Windows Phone tutorial&lt;/a&gt;, the next logical step is a Silverlight tutorial.&lt;/p&gt;  &lt;p&gt;So here it is, a 40 chapters tutorial in Hebrew completely adapted to &lt;strong&gt;Silverlight &lt;u&gt;web &lt;/u&gt;development &lt;/strong&gt;and using relevant source code and screenshots.&lt;/p&gt;  &lt;p&gt;The tutorial is hosted on the great Hebrew developers community site: &lt;a href="http://webmaster.org.il/"&gt;WebMaster.org.il&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://upload.wikimedia.org/wikipedia/en/d/db/Silverlight.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;The tutorial is based on &lt;strong&gt;Silverlight 4 &lt;/strong&gt;and it teaches Silverlight web development from the first step, using &lt;strong&gt;Visual Web Developer 2010 Express&lt;/strong&gt;, provided freely by Microsoft.&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://webmaster.org.il/data/upl/articles2/-Silverlight----_AB48/image_28acc673-a9a2-4661-84e3-c53c32d2a892.png" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Following is the index for all chapters:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight"&gt;Introduction &amp;amp; Working Environment&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-first-application"&gt;First Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-xaml"&gt;XAML Language&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-properties"&gt;Setting Properties in XAML&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-code-behind"&gt;XAML and Code-behind C#&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-layout"&gt;Layout: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-layout-stackpanel"&gt;Layout: Using StackPanel&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-layout-grid"&gt;Layout: Using Grid&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-layout-canvas"&gt;Layout: Using Canvas&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-layout-properties"&gt;Layout: Additional Properties&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-basic-controls"&gt;Basic Controls: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-basic-controls-buttons"&gt;Basic Controls: Button Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-basic-controls-text"&gt;Basic Controls: Text Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-basic-controls-listbox"&gt;Basic Controls: ListBox&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-basic-controls-combobox"&gt;Basic Controls: ComboBox&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-more-controls"&gt;More Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-date-controls"&gt;Date Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-content-control"&gt;Understanding ContentControl&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-dependency-properties"&gt;Using Dependency Properties&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-routed-events"&gt;Using Routed Events&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-adding-child-windows"&gt;Adding Child Windows&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-resources"&gt;Using Resources&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-binding"&gt;Data Binding: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-binding-mode"&gt;Data Binding: Controlling Information Flow&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-binding-update-source-trigger"&gt;Data Binding: Controlling Update Time&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-binding-sources"&gt;Data Binding: Defining Sources&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-binding-ivalueconverter"&gt;Data Binding: Using IValueConverter&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-binding-inotifypropertychanged"&gt;Data Binding: Using INotifyPropertyChanged&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-binding-collection"&gt;Data Binding: Binding to Collections&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-data-templates"&gt;Using Data Templates&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-shapes"&gt;Using Shapes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-brushes"&gt;Using Brushes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-image-and-video"&gt;Displaying Images and Videos&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-transformations"&gt;Using Transformations&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-styles"&gt;Using Styles&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-access-to-html"&gt;Access HTML from Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-access-from-html"&gt;Access Silverlight from HTML&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-splash-screen"&gt;Adding Splash Screen&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-out-of-browser"&gt;Creating Out-Of-Browser Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/silverlight-isolated-storage"&gt;Using Isolated Storage&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Stay tuned for the WPF tutorial.&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/21/silverlight-tutorial-published-heb.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/21/silverlight-tutorial-published-heb.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/21/silverlight-tutorial-published-heb.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/21/silverlight-tutorial-published-heb.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=887227" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/webmaster.org.il/default.aspx">webmaster.org.il</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Hebrew/default.aspx">Hebrew</category></item><item><title>New C# Forum for the Israeli Developers Community</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/17/new-c-forum-for-the-israeli-developers-community.aspx</link><pubDate>Thu, 18 Aug 2011 03:48:01 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:885789</guid><dc:creator>arik</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Following are some blog news:&lt;/p&gt;  &lt;h3&gt;New Israeli C# Forum&lt;/h3&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://blogs.microsoft.co.il/blogs/gilf/MSDN-Logo_0692FEAF.jpg" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;I&amp;#39;m proud to present a new MSDN forum in Hebrew for the &lt;strong&gt;C# developers community &lt;/strong&gt;in Israel, managed by yours truly. &lt;/p&gt;  &lt;p&gt;The forum is available on the following link: &lt;a title="http://social.msdn.microsoft.com/Forums/he-il/VisualCsharpil" href="http://social.msdn.microsoft.com/Forums/he-il/VisualCsharpil"&gt;http://social.msdn.microsoft.com/Forums/he-il/VisualCsharpil&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To all those nice developers who keep asking me C# related questions by mail, I strongly urge you to post your C# related questions on this forum.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOT because I don&amp;#39;t enjoy it! &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;On contrary, I love to help you and would even more enjoy it if even more people could enjoy the answers. Plus, there&amp;#39;s more people on this forum that can help, so you will probably get an answer sooner :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In other news..&lt;/p&gt;  &lt;h3&gt;New Windows 8 Blog&lt;/h3&gt;  &lt;p&gt;With &lt;a href="http://www.buildwindows.com/"&gt;Build conference&lt;/a&gt; approaching fast, Microsoft recently opened a new blog for Windows 8 behind the scenes details. Hopefully this is a sign that Microsoft is going to raise the curtain from the mysterious Windows 8. Follow the new blog &lt;a href="http://blogs.msdn.com/b/b8/"&gt;here&lt;/a&gt; or on their Twitter &lt;strong&gt;&lt;a href="https://twitter.com/#!/BuildWindows8"&gt;@BuildWindows8&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/17/new-c-forum-for-the-israeli-developers-community.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/17/new-c-forum-for-the-israeli-developers-community.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/17/new-c-forum-for-the-israeli-developers-community.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/17/new-c-forum-for-the-israeli-developers-community.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=885789" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Windows+8/default.aspx">Windows 8</category></item><item><title>Using Windows Phone As Windows 7 Accelerometer Sensor</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/13/using_2D00_windows_2D00_phone_2D00_as_2D00_windows_2D00_7_2D00_accelerometer_2D00_sensor.aspx</link><pubDate>Sat, 13 Aug 2011 15:54:20 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:883702</guid><dc:creator>arik</dc:creator><slash:comments>191</slash:comments><description>&lt;p&gt;I just had a cool idea! (actually I had it like 6 month ago, but bear with me).&lt;/p&gt;  &lt;p&gt;My idea involves mixing some of the features in Windows 7 with some of the features in Windows Phone 7, to create a glorious mix!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_6105F6E1.png"&gt;&lt;img style="margin:0px auto;display:block;float:none;" title="image" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_25DE2CE4.png" width="640" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Windows 7&lt;/h3&gt;  &lt;p&gt;One of the new features in Windows 7 is the &lt;a href="http://msdn.microsoft.com/en-us/library/dd318953(VS.85).aspx"&gt;Sensor API&lt;/a&gt; which provides a standard interface for accessing sensors of various types, like &lt;font style="background-color:#ffff00;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;accelerometer&lt;/strong&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;, etc..&lt;/p&gt;  &lt;p&gt;I &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2010/06/29/using-windows-7-light-sensor-in-your-application.aspx"&gt;wrote&lt;/a&gt; in the past about how you can consume this API from a C# application using &lt;a href="http://code.msdn.microsoft.com/WindowsAPICodePack"&gt;Windows API Code Pack&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Windows Phone 7&lt;/h3&gt;  &lt;p&gt;Windows Phone 7 comes with a few sensors out of the box, among them: &lt;strong&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;strong&gt;accelerometer!&lt;/strong&gt;&lt;strong&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Idea&lt;/h3&gt;  &lt;p&gt;What if we use Windows Phone 7 accelerometer sensor as a standard device on Windows 7?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Roadmap&lt;/h3&gt;  &lt;p&gt;So how can we accomplish that? let&amp;#39;s break the idea to steps:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 1&lt;/u&gt;: Create a software driver &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I’ll start with creating a dummy software driver. This driver will implement what&amp;#39;s necessary to be a standard Windows 7 Accelerometer sensor, but at this stage will simply return constant data.&lt;/p&gt;  &lt;p&gt;In order to write a sensor driver for Windows 7 I’ll need to use &lt;a href="http://www.microsoft.com/whdc/driver/wdf/umdf.mspx"&gt;User Mode Driver Framework&lt;/a&gt; (UMDF), a COM-like, C++ framework for writing user-mode drivers in Windows 7.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 2&lt;/u&gt;: Transfer Windows Phone 7 sensor data into the PC&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The next step is to find a way to transfer the accelerometer data from a Windows Phone device into the PC. One possible way of doing this implementing a local WCF service on the desktop that the Phone will keep calling with accelerometer data. This will require an application to run on the phone to keep the data flowing.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 3&lt;/u&gt;: Consume the WCF service from the phone&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Using the service from the previous step we can now consume it in a simple Windows Phone application that all it does is getting the accelerometer sensor data using the phone API and call the WCF service with the latest data.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 4&lt;/u&gt;: Make the software driver consume the Windows Phone 7 data&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now that I have a software driver that returns dummy accelerometer data and a way to get real accelerometer data from the Windows Phone, all I need to do is connecting the dots and make my accelerometer driver return the real data. To do this I&amp;#39;ll need some kind of inter process communication to transfer the data from the WCF service to the driver.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Long Story Short…&lt;/h3&gt;  &lt;p&gt;I present to you the &lt;strong&gt;Windows Phone Accelerometer Driver for Windows 7&lt;/strong&gt;!&lt;/p&gt;  &lt;p&gt;The full source code for this project can be found on the &lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;a href="http://wp7accelerometer.codeplex.com/"&gt;CodePlex project site&lt;/a&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Some Implementation Details&lt;/h3&gt;  &lt;p&gt;The actual driver was fairly easy to implement since I used the CodeProject article &amp;quot;&lt;a href="http://www.codeproject.com/KB/system/wiisensor.aspx"&gt;Writing a Sensor Driver for the Wiimote on Windows 7&lt;/a&gt;&amp;quot; by &lt;a href="http://blogorama.nerdworks.in/entry-WritingasensordriverfortheWiim.aspx"&gt;Rajasekharan Vengalil&lt;/a&gt; as a base for my Windows Phone 7 driver. You can find the driver source code in the project named &lt;strong&gt;WP7AccelerometerDriver&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;As mentioned earlier I&amp;#39;ve implemented a simple local WCF service for transferring the accelerometer data from the phone to the driver. You can find the service source code in the project named &lt;strong&gt;WP7AccelerometerService&lt;/strong&gt;. The service uses named pipes to communicate with the driver.&lt;/p&gt;  &lt;p&gt;The phone application is a very simple one that consumes the WCF service and call it whenever a new accelerometer value is available. You can find its source code in the project named &lt;strong&gt;WP7AccelerometerClient&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Finally, if you want to check the functionality of the accelerometer driver you can use either the &lt;strong&gt;SensorDiagnostics &lt;/strong&gt;project or the more fun &lt;strong&gt;PlaneDemo&lt;/strong&gt; project, which I borrowed for &lt;a href="http://weblogs.asp.net/sergeyzwezdin/archive/2009/07/01/windows-7-sensor-and-location-platform-sensors-programming-part-2-3.aspx"&gt;Sergey Zwezdin blog&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;How to Install?&lt;/h3&gt;  &lt;p&gt;1. Download and extract project binaries or source from the &lt;a href="http://wp7accelerometer.codeplex.com/releases/view/71672"&gt;CodePlex project site&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;2. Open &lt;strong&gt;CMD&lt;/strong&gt; &lt;u&gt;as administrator &lt;/u&gt;&lt;/p&gt;  &lt;p&gt;3. Go to the folder &lt;strong&gt;\Driver\Install\&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;4. According to the bitness of your OS Run &lt;strong&gt;install_wp7_driver_32bit.bat &lt;/strong&gt;or &lt;strong&gt;install_wp7_driver_64bit.bat&lt;/strong&gt; to install the driver. &lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_25322462.png"&gt;     &lt;br /&gt;      &lt;br /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_25322462.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_71799236.png" width="600" height="490" /&gt;&lt;/a&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;5. When the following notification appears, select &amp;quot;&lt;strong&gt;Install this driver software anyway&lt;/strong&gt;&amp;quot;: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image11_1F04C4AD.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image11_thumb_250BC5AE.png" width="600" height="344" /&gt;&lt;/a&gt;     &lt;br /&gt;This should take around 1-2 minutes to complete. &lt;/p&gt;  &lt;p&gt;6. Enable installed Sensor in the &lt;strong&gt;Control Panel&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_5B6F12A5.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_18336EAB.png" width="600" height="374" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;7. Run the WCF service from &lt;u&gt;as administrator&lt;/u&gt;. If you run it from Visual Studio, make sure you ran Visual Studio as administrator.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_7191B5D2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_7B963130.png" width="600" height="135" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;8. Run the Windows Phone client on a real device while connected to the PC and enter your PC (LAN) IP &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_574126E1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_23F4C7AB.png" width="330" height="600" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;9. That&amp;#39;s it! you can now sit back and enjoy the ride using the &lt;strong&gt;PlaneDemo&lt;/strong&gt; application or &lt;strong&gt;SensorDiagnostics&lt;/strong&gt;, or any other software that uses the accelerometer sensor. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_0DAE868C.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_7E8781E4.png" width="500" height="600" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_6EF44A48.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_05C2F5F8.png" width="600" height="400" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;How to Uninstall? &lt;/h3&gt;  &lt;p&gt;If you want to uninstall the driver simply go to the &lt;strong&gt;Device Manager&lt;/strong&gt;, select the &amp;quot;&lt;strong&gt;WP7 Accelerometer Sensor&lt;/strong&gt;&amp;quot; device from the &lt;strong&gt;Sensors &lt;/strong&gt;category, select uninstall from the context menu and &lt;strong&gt;make sure you mark the checkbox to delete the driver&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/image_32C7BCF9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/arik/image_thumb_1B005FC6.png" width="466" height="287" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Final Note&lt;/h3&gt;  &lt;p&gt;I&amp;#39;ve seen the project works both on a real device and using the phone emulator, however it&amp;#39;s not a one-click install. I expect users to have problems with the installation. If you encounter some problems, please post on the &lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;a href="http://wp7accelerometer.codeplex.com/discussions"&gt;CodePlex project site forum&lt;/a&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt; page and I&amp;#39;ll do my best to help. &lt;/p&gt;  &lt;p&gt;Also, if you want to improve the source code (maybe adding GPS support?) or the installation procedure, I&amp;#39;ll be happy to include your improvements and even include you as one of the project members on CodePlex.&lt;/p&gt;  &lt;p&gt;This project was pure fun since it combines many useful technologies to create real value. Among the technologies you can find: C++, COM, UMDF, C#, WCF, WP7, etc..&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/13/using_2D00_windows_2D00_phone_2D00_as_2D00_windows_2D00_7_2D00_accelerometer_2D00_sensor.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/13/using_2D00_windows_2D00_phone_2D00_as_2D00_windows_2D00_7_2D00_accelerometer_2D00_sensor.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/13/using_2D00_windows_2D00_phone_2D00_as_2D00_windows_2D00_7_2D00_accelerometer_2D00_sensor.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/13/using_2D00_windows_2D00_phone_2D00_as_2D00_windows_2D00_7_2D00_accelerometer_2D00_sensor.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=172641" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=883702" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/COM/default.aspx">COM</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Accelerometer/default.aspx">Accelerometer</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/UMDF/default.aspx">UMDF</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Driver/default.aspx">Driver</category></item><item><title>WPF: Dictionary Value Converter</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/10/wpf-dictionary-value-converter.aspx</link><pubDate>Wed, 10 Aug 2011 20:51:41 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:882529</guid><dc:creator>arik</dc:creator><slash:comments>7</slash:comments><description>&lt;h4&gt;What’s the story?&lt;/h4&gt;  &lt;p&gt;You want to convert an enum value to a bitmap image. &lt;/p&gt;  &lt;h4&gt;That’s easy, here’s a solution&lt;/h4&gt;  &lt;p&gt;Usually you would simply create a new &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx"&gt;value converter&lt;/a&gt; which has some custom code (e.g. a switch –case statement) to convert from the enum value to the relevant image.&lt;/p&gt;  &lt;h4&gt;Is there a better solution?&lt;/h4&gt;  &lt;p&gt;How many times have you written this kind of converter, the kind that takes a value and maps it to another value?&lt;/p&gt;  &lt;p&gt;Well, no more!&lt;/p&gt;  &lt;p&gt;I present to you: &lt;b&gt;DictionaryValueConverter&lt;/b&gt;. A Converter that lets you define a collection of key-value pairs and do the mapping for you.&lt;/p&gt;  &lt;h4&gt;So, how can I use this converter?&lt;/h4&gt;  &lt;p&gt;The following code provides a common usage of this converter. Here I map three enum values to three different bitmap images. Each value in the &lt;b&gt;Values&lt;/b&gt; property is another image which is mapped by its &lt;b&gt;x:Key&lt;/b&gt;.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:059066c1-483d-4d6f-92aa-88da2d9238fe" class="wlWriterSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;max-height:500px;overflow:auto;padding:2px 5px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;propertyTypeToImage&amp;quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter.Values&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;BitmapImage&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Static&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; local&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;PropertyType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;.Name}&amp;quot;&lt;/span&gt;&lt;br /&gt;                     &lt;span style="color:#ff0000;"&gt; UriSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Name.png&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;BitmapImage&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Static&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; local&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;PropertyType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;.Age}&amp;quot;&lt;/span&gt;&lt;br /&gt;                     &lt;span style="color:#ff0000;"&gt; UriSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Age.png&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;BitmapImage&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Static&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; local&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;PropertyType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;.Phone}&amp;quot;&lt;/span&gt;&lt;br /&gt;                     &lt;span style="color:#ff0000;"&gt; UriSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Phone.png&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter.Values&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;h4&gt;This is SO COOL, can I use it also to convert Booleans to Visibility?&lt;/h4&gt;  &lt;p&gt;Well, yes and no.&lt;/p&gt;  &lt;p&gt;Theoretically, it will work. There is nothing in the code which prevents it.&lt;/p&gt;  &lt;p&gt;Practically, you need a way to specify the “true” and “false” Boolean values as the keys. &lt;/p&gt;  &lt;p&gt;Unfortunately, XAML 2006 doesn’t allow &lt;b&gt;x:Key&lt;/b&gt; to have complex values (using &lt;a href="http://msdn.microsoft.com/en-us/library/ms788723.aspx#property_element_syntax"&gt;property element syntax&lt;/a&gt;). This was fixed in XAML 2009, but WPF doesn’t support it yet.&lt;/p&gt;  &lt;p&gt;To work around it you can define constants for the “true” and “false” values and use x:Static markup extension to provide the keys.&lt;/p&gt;  &lt;p&gt;For example:&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8ac5fffb-9551-4e1d-bce3-ffa669ac48d9" class="wlWriterSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;overflow:auto;padding:2px 5px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;BooleanValues&lt;/span&gt;&lt;br /&gt; {&lt;br /&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; True = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; False = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt; }&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b6d282b4-e6eb-444c-afb8-55d3c5d77d77" class="wlWriterSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;overflow:auto;padding:2px 5px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;booleanToVisibilityConverter&amp;quot;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter.Values&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Visibility&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Static&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; local&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;BooleanValues&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;.True}&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Visible&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Visibility&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Visibility&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;Key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Static&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; local&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;BooleanValues&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;.False}&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Collapsed&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Visibility&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#a31515;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter.Values&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;converters&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DictionaryValueConverter&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;So, how is it implemented?&lt;/h4&gt;  &lt;p&gt;Like this:&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5b43d8a5-2e06-4928-ad62-55705838bf4b" class="wlWriterSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;overflow:auto;padding:2px 5px;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Globalization;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Windows;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Windows.Data;&lt;br /&gt; &lt;br /&gt; &lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; Common.Converters&lt;br /&gt; {&lt;br /&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DictionaryValueConverter&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;IValueConverter&lt;/span&gt;&lt;br /&gt;     {&lt;br /&gt;         &lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; Store the key type.&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; Setting this property is needed if your key is an enum and  &lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; KeyType { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt; &lt;br /&gt;         &lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; Store the key-value pairs for the conversion&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#808080;"&gt;///&lt;/span&gt;&lt;span style="color:#008000;"&gt; &lt;/span&gt;&lt;span style="color:#808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt; Values { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt; &lt;br /&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DictionaryValueConverter()&lt;br /&gt;         {&lt;br /&gt;             Values = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&amp;gt;();&lt;br /&gt;         }&lt;br /&gt; &lt;br /&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; Convert(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; value, &lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#2b91af;"&gt;CultureInfo&lt;/span&gt; culture)&lt;br /&gt;         {&lt;br /&gt;             &lt;span style="color:#008000;"&gt;// if key type is not set, get it from the first dictionary value, usually it&amp;#39;s the same for all the keys&lt;/span&gt;&lt;br /&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (KeyType == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;             {&lt;br /&gt;                 KeyType = Values.Keys.First().GetType();&lt;br /&gt;             }&lt;br /&gt; &lt;br /&gt;             &lt;span style="color:#008000;"&gt;// if key type is an enum&lt;/span&gt;&lt;br /&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (KeyType.IsEnum)&lt;br /&gt;             {&lt;br /&gt;                 &lt;span style="color:#008000;"&gt;// convert integral value to enum value&lt;/span&gt;&lt;br /&gt;                 value = &lt;span style="color:#2b91af;"&gt;Enum&lt;/span&gt;.ToObject(KeyType, value);&lt;br /&gt;             }&lt;br /&gt; &lt;br /&gt;             &lt;span style="color:#008000;"&gt;// if dictionary contains the requested key&lt;/span&gt;&lt;br /&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (Values.ContainsKey(value))&lt;br /&gt;             {&lt;br /&gt;                 &lt;span style="color:#008000;"&gt;// return the relevant value&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Values[value];&lt;br /&gt;             }&lt;br /&gt; &lt;br /&gt;             &lt;span style="color:#008000;"&gt;// otherwise, don&amp;#39;t return a value, this will fall back to the binding FallbackValue&lt;/span&gt;&lt;br /&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DependencyProperty&lt;/span&gt;.UnsetValue;&lt;br /&gt;         }&lt;br /&gt; &lt;br /&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; ConvertBack(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; value, &lt;span style="color:#2b91af;"&gt;Type&lt;/span&gt; targetType, &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; parameter, &lt;span style="color:#2b91af;"&gt;CultureInfo&lt;/span&gt; culture)&lt;br /&gt;         {&lt;br /&gt;             &lt;span style="color:#008000;"&gt;// no support for converting back&lt;/span&gt;&lt;br /&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DependencyProperty&lt;/span&gt;.UnsetValue;&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt; }&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;You can download a demo application &lt;a href="http://blogs.microsoft.co.il/blogs/arik/DictionaryValueConverterDemo.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;That’s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/10/wpf-dictionary-value-converter.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/10/wpf-dictionary-value-converter.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/10/wpf-dictionary-value-converter.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/10/wpf-dictionary-value-converter.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=172641" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=882529" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/IValueConverter/default.aspx">IValueConverter</category></item><item><title>Windows Phone Tutorial Published [HEB]</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx</link><pubDate>Thu, 04 Aug 2011 21:09:31 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:879842</guid><dc:creator>arik</dc:creator><slash:comments>9</slash:comments><description>&lt;p&gt;I&amp;#39;ve recently published a 41 chapters tutorial in Hebrew about developing application using Windows Phone. The tutorial is hosted on the great Hebrew developers community site: &lt;a href="http://webmaster.org.il/"&gt;WebMaster.org.il&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/logo_windows_phone_v_51163FE8.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px auto;padding-left:0px;padding-right:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Windows Phone Tutorial Published [HEB]" border="0" alt="Windows Phone Tutorial Published [HEB]" src="http://blogs.microsoft.co.il/blogs/arik/logo_windows_phone_v_thumb_35C3C170.jpg" width="377" height="323" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The tutorial is based on &lt;strong&gt;Windows Phone Mango &lt;/strong&gt;and it teaches Windows Phone development from the first step, using &lt;strong&gt;Visual Studio 2010 Express&lt;/strong&gt;, provided freely by Microsoft.&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Windows Phone Tutorial Published [HEB]" alt="Windows Phone Tutorial Published [HEB]" src="http://webmaster.org.il/data/upl/articles2/-Windows-Phone-----_81C5/image601_3.png" /&gt;&lt;/p&gt;  &lt;p&gt;Following is the index for all chapters:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone"&gt;Introduction &amp;amp; Working Environment&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-first-application"&gt;First Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-xaml"&gt;XAML Language&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-properties"&gt;Setting Properties in XAML&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-code-behind"&gt;XAML and Code-behind C#&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-layout"&gt;Layout: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-layout-stackpanel"&gt;Layout: Using StackPanel&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-layout-grid"&gt;Layout: Using Grid&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-layout-canvas"&gt;Layout: Using Canvas&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-layout-properties"&gt;Layout: Additional Properties&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-basic-controls"&gt;Basic Controls: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-basic-controls-buttons"&gt;Basic Controls: Button Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-basic-controls-text"&gt;Basic Controls: Text Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-basic-controls-listbox"&gt;Basic Controls: ListBox&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-border-slider-progressbar"&gt;More Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-web-controls"&gt;Web Controls&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-content-control"&gt;Understanding ContentControl&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-dependency-properties"&gt;Using Dependency Properties&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-routed-events"&gt;Using Routed Events&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-adding-pages"&gt;Adding Pages to the Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-resources"&gt;Using Resources&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-binding"&gt;Data Binding: Introduction&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-binding-mode"&gt;Data Binding: Controlling Information Flow&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-binding-update-source-trigger"&gt;Data Binding: Controlling Update Time&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-binding-sources"&gt;Data Binding: Defining Source&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-binding-ivalueconverter"&gt;Data Binding: Using IValueConverter&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-binding-inotifypropertychanged"&gt;Data Binding: Using INotifyPropertyChange&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-binding-collection"&gt;Data Binding: Binding to Collections&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-data-templates"&gt;Using Data Templates&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-shapes"&gt;Using Shapes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-brushes"&gt;Using Brushes&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-image-and-video"&gt;Displaying Images and Videos&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-transformations"&gt;Using Transformations&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-styles"&gt;Using Styles&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-pivot-panorama"&gt;Using Pivot and Panorama&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-orientation"&gt;Handle Phone Orientation&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-application-bar"&gt;Working with Application Bar&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-lifecycle"&gt;Application Lifecycle&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-launchers"&gt;Using Launchers&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-choosers"&gt;Using Choosers&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://webmaster.org.il/articles/windows-phone-sensors-accelerometer"&gt;Using Accelerometer Sensor&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Coming next: A Silverlight guide and a WPF guide (with technology specific details and screenshots).&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/08/04/windows.phone.tutorial.published.hebrew.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=879842" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/webmaster.org.il/default.aspx">webmaster.org.il</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Hebrew/default.aspx">Hebrew</category></item><item><title>Using PriorityBinding in WPF – Screencast [HEB]</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/31/using-prioritybinding-in-wpf-screencast-heb.aspx</link><pubDate>Mon, 01 Aug 2011 00:56:12 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:878290</guid><dc:creator>arik</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;In the last screencasts we&amp;#39;ve seen how to &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/10/using-ivalueconverter-in-wpf-screencast-heb.aspx"&gt;use&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/18/implementing-ivalueconverter-in-wpf-screencast-heb.aspx"&gt;implement&lt;/a&gt; IValueConverter and how to &lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/24/using-multibinding-and-imultivalueconverter-in-wpf-screencast-heb.aspx"&gt;use&lt;/a&gt; Multi-Binding for advanced data binding scenarios.&lt;/p&gt;  &lt;p&gt;This time we continue with advanced binding and explore the benefits of PriorityBinding, a useful binding gem feature that lets you define multiple sources for your binding target value, with priorities.&lt;/p&gt;  &lt;p&gt;Please notice that the screencast was recorded in Hebrew, but the demo is clear enough to be watched without understanding a word. &lt;/p&gt;  &lt;p&gt;You can watch the screencast on YouTube HD &lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;&lt;a href="http://www.youtube.com/watch?v=9OFfPsvptUQ&amp;amp;hd=1"&gt;here&lt;/a&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;. &lt;/p&gt;  &lt;p&gt;Or here, &lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;embedded in my blog: &lt;/p&gt; &lt;iframe height="390" src="http://www.youtube.com/embed/9OFfPsvptUQ?hd=1" frameborder="0" width="640"&gt;&lt;/iframe&gt;  &lt;p&gt;On my next screencast we will see how you to use Priority-Binding in a WPF application. &lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/31/using-prioritybinding-in-wpf-screencast-heb.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/31/using-prioritybinding-in-wpf-screencast-heb.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/31/using-prioritybinding-in-wpf-screencast-heb.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/31/using-prioritybinding-in-wpf-screencast-heb.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=878290" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Binding/default.aspx">Binding</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/VIDEO/default.aspx">VIDEO</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/youtube/default.aspx">youtube</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Screencast/default.aspx">Screencast</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/PriorityBinding/default.aspx">PriorityBinding</category></item><item><title>Build 2011, Here I Come!</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/28/build-2011-here-i-come.aspx</link><pubDate>Thu, 28 Jul 2011 22:59:37 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:877365</guid><dc:creator>arik</dc:creator><slash:comments>1</slash:comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/28/build-2011-here-i-come.aspx" scrolling="no" frameborder="0" style="border:none;width:130px;height:80px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" alt="BUILD" src="http://www.buildwindows.com/themes/buildtheme/content/build_logo.png" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;All is set:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Conference ticket – check. &lt;/li&gt;    &lt;li&gt;Plane ticket – check. &lt;/li&gt;    &lt;li&gt;Hotel – check. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Build – Here I come!&lt;/p&gt;  &lt;p&gt;If everything goes as scheduled, in approx. a month and a half I&amp;#39;ll be on the plane to Anaheim California, heading to the biggest conference Microsoft ever produced.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.buildwindows.com/"&gt;Build&lt;/a&gt; (AKA PDC 2011) will be all about Windows 8. &lt;/p&gt;  &lt;p&gt;From some research I&amp;#39;ve done, which from obvious reasons can&amp;#39;t be disclosed at this stage, Windows 8 is going to bring the biggest revolution since .NET was invented.&lt;/p&gt;  &lt;p&gt;I can&amp;#39;t wait hearing about all the new Windows 8 feature I&amp;#39;ll get to play with in the coming year :)&lt;/p&gt;  &lt;p&gt;If you&amp;#39;re coming to the conference feel free to drop me a mail.&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=877365" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/OFFTOPIC/default.aspx">OFFTOPIC</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Build/default.aspx">Build</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/PDC+2011/default.aspx">PDC 2011</category></item><item><title>Using MultiBinding and IMultiValueConverter in WPF – Screencast [HEB]</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/24/using-multibinding-and-imultivalueconverter-in-wpf-screencast-heb.aspx</link><pubDate>Mon, 25 Jul 2011 01:24:32 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:876226</guid><dc:creator>arik</dc:creator><slash:comments>7</slash:comments><description>&lt;p&gt;In my last two screencasts I showed how you can &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/10/using-ivalueconverter-in-wpf-screencast-heb.aspx"&gt;use&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/18/implementing-ivalueconverter-in-wpf-screencast-heb.aspx"&gt;implement&lt;/a&gt; &lt;strong&gt;IValueConverter&lt;/strong&gt; to control the data binding process.&lt;/p&gt;  &lt;p&gt;This time we continue our exploration of the data binding customizations and see what does multi-binding mean and how to use and implement &lt;strong&gt;IMultiValueConverter&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Please notice that the screencast was recorded in Hebrew, but the demo is clear enough to be watched without understanding a word.&lt;/p&gt;  &lt;p&gt;You can watch the screencast on YouTube HD &lt;a href="http://www.youtube.com/watch?v=v1lxqhjw7zo&amp;amp;hd=1"&gt;here&lt;/a&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;Or here, &lt;font style="background-color:#ffff00;"&gt;&lt;/font&gt;embedded in my blog:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;iframe height="390" src="http://www.youtube.com/embed/v1lxqhjw7zo?hd=1" frameborder="0" width="640"&gt;&lt;/iframe&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/24/using-multibinding-and-imultivalueconverter-in-wpf-screencast-heb.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/24/using-multibinding-and-imultivalueconverter-in-wpf-screencast-heb.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/24/using-multibinding-and-imultivalueconverter-in-wpf-screencast-heb.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/24/using-multibinding-and-imultivalueconverter-in-wpf-screencast-heb.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=876226" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/IMultiValueConverter/default.aspx">IMultiValueConverter</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Binding/default.aspx">Binding</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/VIDEO/default.aspx">VIDEO</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/youtube/default.aspx">youtube</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Screencast/default.aspx">Screencast</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/MultiBinding/default.aspx">MultiBinding</category></item><item><title>Implementing IValueConverter in WPF – Screencast [HEB]</title><link>http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/18/implementing-ivalueconverter-in-wpf-screencast-heb.aspx</link><pubDate>Mon, 18 Jul 2011 04:18:39 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:866422</guid><dc:creator>arik</dc:creator><slash:comments>7</slash:comments><description>&lt;p&gt;This screencast is a direct continuation of the previous one, where I showed how to &lt;a href="http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/10/using-ivalueconverter-in-wpf-screencast-heb.aspx"&gt;use an object implementing IValueConverter&lt;/a&gt; in WPF. In this screencast I show how to &lt;strong&gt;implement&lt;/strong&gt; &lt;strong&gt;IValueConverter&lt;/strong&gt; to provide custom logic when performing data binding.&lt;/p&gt;  &lt;p&gt;Please notice that the screencast was recorded in Hebrew, but the demo is clear enough to be watched without understanding a word.&lt;/p&gt;  &lt;p&gt;You can watch the screencast on YouTube HD &lt;a href="http://www.youtube.com/watch?v=tI8hgEI1pnA&amp;amp;hd=1"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Or here, embedded in my blog:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;iframe width="640" height="390" src="http://www.youtube.com/embed/tI8hgEI1pnA?hd=1" frameborder="0"&gt;&lt;/iframe&gt; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On my next screencast we will see how you to use Multi-Binding in a WPF application.&lt;/p&gt;  &lt;p&gt;That&amp;#39;s it for now,    &lt;br /&gt;Arik Poznanski.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/18/implementing-ivalueconverter-in-wpf-screencast-heb.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/18/implementing-ivalueconverter-in-wpf-screencast-heb.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/18/implementing-ivalueconverter-in-wpf-screencast-heb.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/arik/archive/2011/07/18/implementing-ivalueconverter-in-wpf-screencast-heb.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=866422" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Sela/default.aspx">Sela</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/IValueConverter/default.aspx">IValueConverter</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/VIDEO/default.aspx">VIDEO</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/youtube/default.aspx">youtube</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Hebrew/default.aspx">Hebrew</category><category domain="http://blogs.microsoft.co.il/blogs/arik/archive/tags/Screencast/default.aspx">Screencast</category></item></channel></rss>