<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Developer Tools Blogs</title>
    <description>Developer Tools Blogs</description>
    <link>http://blogs.telerik.com/Blogs.aspx</link>
    <docs>http://backend.userland.com/rss</docs>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Telerik" /><feedburner:info uri="telerik" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Telerik</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>Quick Tips on Troubleshooting Your Web Pages – Element Inspector and Network Resources</title>
      <description>&lt;p&gt;When I first started out developing web pages back in the day there barely were any tools for development outside of the IDEs that were offered, which weren’t too much to write home about anyways. While some might say that web pages that were manly cluttered with animated GIFs and content related to Warcraft 1 &amp;amp; 2 and Diablo 1 (tells you a lot about my child hood ;)) is not considered much of a web development project, I still say it is (or was) :D. Either way, you wrote your HTML, CSS (fairly new too) and JavaScript and hoped everything would turn out OK when you opened it in the browser. If something was off you went back to tweak it in your IDE (*cough* notepad *cough*) and refreshed while crossing your fingers that everything would be better this time around. Alerts were also frequently used as a way to see if a JavaScript function was accessed, and if a variable existed or what it had for a value.&lt;/p&gt; &lt;p&gt;It’s not like this today though. Today is much, much different – in a fantastic way. In today’s world we have more tools than we can shake a stick at for web development. Especially in the way of helping us developers in figuring out what exactly is happening to our web pages when they get rendered in our browser. Questions like “How come this looks great in Chrome but slightly quirky in IE?”, “Why is none of my JavaScript executing?” and “Why is this page loading so slowly?” can now be answered within each of the major browsers thanks to the Developer Tools offered for each one.&lt;/p&gt; &lt;p&gt;Some of you might be saying “well duh, I’ve been using this forever” but there is still a large group of the developer population that does not know about these tools. So for the sake of people either new to web development, or for those of you that just haven’t heard of these tools, or only use a small portion of them, I wanted to write this quick blog post series. I’ll be covering some of the main features of these Developer Tools, as well as show how they look in the three major browsers that I like to use; Chrome, Firefox and IE. In the case of Firefox I’m going to be using &lt;a href="http://getfirebug.com/" title="Firebug home page"&gt;Firebug&lt;/a&gt;, an add-on that has been available for quite some time and was my introduction to browser dev tools. Firefox does have built-in dev tools now, but I still think Firebug offers more features and is the preferred tools to use right now.&lt;/p&gt; &lt;p&gt;Enough of my rambling on here, let’s get to it! Today I’ll be covering the Element Inspection tools, as well as the Resources tools.&lt;/p&gt; &lt;h1&gt;Element Inspection&lt;/h1&gt; &lt;p&gt;Ever seen a button on a page that looked ridiculously awesome and wondered why it looks so good? Maybe you’re just curious why a certain element is now in the upper right-hand corner (has happened way too many times for me), or maybe you just want to see how the page you’re currently on is laid out.&lt;/p&gt; &lt;p&gt;Well thanks to the element inspector all these mysteries are solved! How often do you get to hear that? Well, the element inspector often (as in, most major browsers have this ability) provides you with a couple of useful things.&lt;/p&gt; &lt;p&gt;First of all, when you inspect an element you usually get to see both where it is currently located on the page (each browser does this a little differently) as well as where it is in the DOM. Additionally, and this is an extremely useful feature, you get to see the CSS that affects the particular element. You can see everything from what styles are supposed to get applied, which ones get overridden, and the final styles applied. You can usually also see which CSS file (and what line number!) is responsible for that particular rule as well. Super awesome in scenarios where you would normally just stare at the screen tearing your hair out wondering why everything looks so wrong.&lt;/p&gt; &lt;p&gt;For this particular demo I just have a very quick sample HTML page, as I just want to cover the basics.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div class="reCodeBlock" style="border:1px solid #7f9db9;border-image: initial; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;html&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;head&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;script&lt;/code&gt; &lt;code style="color: #808080;"&gt;src&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"Scripts/jquery-1.7.2.min.js"&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;script&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;link&lt;/code&gt; &lt;code style="color: #808080;"&gt;href&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"Styles/Styles.css"&lt;/code&gt; &lt;code style="color: #808080;"&gt;rel&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"stylesheet"&lt;/code&gt; &lt;code style="color: #000000;"&gt;/&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;title&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;Quick Dev Tools Sample&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;title&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;style&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px !important;"&gt;&lt;code style="color: #000000;"&gt;p&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px !important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 48px !important;"&gt;&lt;code style="color: #000000;"&gt;color: #FFFFFF;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;style&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;head&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;body&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;p&lt;/code&gt; &lt;code style="color: #808080;"&gt;id&lt;/code&gt;&lt;code style="color: #000000;"&gt;=&lt;/code&gt;&lt;code style="color: blue;"&gt;"sampleParagraph"&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px !important;"&gt;&lt;code style="color: #000000;"&gt;This is a sample paragraph&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;p&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;body&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;html&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;As you can see I also have a separate CSS file called Styles.css, which at this moment only looks like this:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div class="reCodeBlock" style="border:1px solid #7f9db9;border-image: initial; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;body&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;background-color: #FFFFFF;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;p&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;background-color: #EFB087;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;font-family: Verdana;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;width: 100px;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Very simple, but illustrates the points I want to make. Just from looking at the code above you can see a few things:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;We have a paragraph which should have a black (#000000 in HEX) font&lt;/li&gt; &lt;li&gt;The font in the paragraph element should be Verdana (no backup)&lt;/li&gt; &lt;li&gt;The background of the paragraph should be a kind of orange-y color (I’m awful with color names)&lt;/li&gt; &lt;li&gt;The background of the body element should be #FFFFFF, or in an English term – white :)&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Let’s take a peek at how this looks in our browsers various developer tools available to us.&lt;/p&gt; &lt;h2&gt;Chrome&lt;/h2&gt; &lt;p&gt;There are a couple of ways you can work with the element inspector tool within Chrome. The easiest way to make sure that you are looking at the specific element you want is to right-click on it in your browser and select “Inspect Element” from the context menu that appears.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_001.sflb" alt="Chrome Inspect element" /&gt;&lt;/p&gt; &lt;p&gt;Once you have done this the Chrome Dev Tools will open up, with your particular element highlighted within the DOM.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_002.sflb" alt="Chrome Element Inspector" /&gt;&lt;/p&gt; &lt;p&gt;Speaking of the DOM, you can actually navigate through the DOM and highlight elements that way too. This can be done by just opening the Chrome Dev Tools (CTRL + SHIFT + I, or F12) and going to the Elements tab. Once here you’ll see the same view as before, only the body element will be highlighted. If you hover over, or click, on any HTML element in here it will get highlighted as well.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_003.sflb" alt="Chrome Dev Tools - Element Inspector" /&gt;&lt;/p&gt; &lt;p&gt;As that screenshot shows you, our element is actually highlighted on our page, and we even get some additional information about it. We know that it’s a “p” element, with the ID sampleParagraph (“#” refers to the ID) and that it’s 100px by 54px in size.&lt;/p&gt; &lt;p&gt;You also might have noticed the “Styles” and “Computed Styles” in the second image there. Well, this area allows us to easily wee what styles end up getting applied to the element. This means CSS rules that affect the element, even if they have ended up over-writing other styles. Computed Style shows you the end result, and where each style comes from, as can be seen here:&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_004.sflb" alt="Chrome Inspector Styles" /&gt;&lt;/p&gt; &lt;p&gt;You might notice that each one of those documents (.css and .html) are actually links and will open the CSS file in the Chrome Dev tools to that specific line in the CSS or HTML file so that you can dive in to the file in charge of the style. This gives you a chance to see where the particular style you defined exists, which becomes very handy when you are scratching your head wondering why that element is not getting styled properly.&lt;/p&gt; &lt;h2&gt;Firefox&lt;/h2&gt; &lt;p&gt;As I mentioned previously, Firefox has a very similar view brought to you by the add-on Firebug. So let’s go through the same things as I did with Chrome above.&lt;/p&gt; &lt;p&gt;First let’s right-click on my element and go to “Inspect Element with Firebug”. You might notice that there is an “Inspect Element” option as well. This is for the internal developer tools from Firefox that I mentioned in the beginning. Right now I’ll focus on Firebug, but you never know what kind of blog posts the future holds!&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_005.sflb" alt="Firefox Inspect Element" /&gt;&lt;/p&gt; &lt;p&gt;Now we see that the element is highlighted in our DOM explorer.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_006.sflb" alt="Firefox Element Inspector" /&gt;&lt;/p&gt; &lt;p&gt;You get the same view that I mentioned above with Chrome as well, where I can highlight the element in the DOM explorer and have it highlighted in the actual web page as well. So far, nothing really too different.&lt;/p&gt; &lt;p&gt;One thing that you see immediately though is the style tab over on the right-hand side. This is where you notice some differences. For example, the first view we see just shows us the rule applied to this particular element. This was available in Chrome as well, but for the sake of comparison let’s go over to the Computed tab:&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_007.sflb" alt="Firefox Computed Styles" /&gt;&lt;/p&gt; &lt;p&gt;Not exactly what we saw in Chrome. The nice thing it does is split up all of the styles according to their relevant groups. So Text, Background, Box Model etc., but there is no way to see where exactly these come from. So we have to look through the styles tab to see where everything is coming from, which isn’t a bad thing I just love having those kinds of lines drawn for me.&lt;/p&gt; &lt;h2&gt;IE9&lt;/h2&gt; &lt;p&gt;IE9 has some pretty spiffy tools for web development, which hasn’t always been its strong suit in previous iterations. The great thing is that you can also test for the various modes that have existed within IE (quirks mode etc.) and go back to IE7 for testing – all in the same browser.&lt;/p&gt; &lt;p&gt;While there isn’t a context menu item to inspect the element we can still very easily get access to an element in order to inspect it. If we open our page in IE9 and press F12 we will see the Developer Tools appear. Once we’ve done this we just need to find the arrow icon under the HTML tab, which starts the element inspection:&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_008.sflb" alt="IE9 Element Inspector" /&gt;&lt;/p&gt; &lt;p&gt;Once we’ve clicked on an element we’re granted a very similar view to what we’ve seen before in the other browsers.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_009.sflb" alt="IE9 Dev Tools - Element Inspection" /&gt;&lt;/p&gt; &lt;p&gt;We have the same ability to see all of the styles, but one thing that is different is instead of “Computed” styles we now have “Trace Styles”.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_010.sflb" alt="IE9 Trace Styles" /&gt;&lt;/p&gt; &lt;p&gt;This is just the same as in the other browsers, however now we have something that is closer to what we had in Chrome. Unfortunately we cannot get the exact line number, but if we click on a particular file name we can very easily see where in the source file these styles are located. This also allows for very quick tests to see what happens when you remove the styles, which in both other browsers can only be done in the Style tab.&lt;/p&gt; &lt;h1&gt;Network&lt;/h1&gt; &lt;p&gt;I’m sure you’ve run in to scenarios where you swear that you added an image to a page, or you realize that there’s no CSS being applied to your page and you’re wondering why. Often times these scenarios are derived from the fact that there was an issue downloading the particular resource. Whether it be an image, a CSS file, or maybe even the next page our clients are navigating to, it can always happen. Spelling mistakes, or moved resources – the list goes on.&lt;/p&gt; &lt;p&gt;Well, what if I told you that you can easily see exactly what kind traffic is occurring on a particular web page, and see exactly what files are attempted to, or successfully, downloaded? Hard to believe it? Let me introduce you to the Network tab of these browser dev tools – it’ll rock your world!&lt;/p&gt; &lt;p&gt;For the sake of keeping things simple I’ll be using the same HTML page as with the element inspector.&lt;/p&gt; &lt;h2&gt;Chrome&lt;/h2&gt; &lt;p&gt;In Chrome it is very easy to find this Network tab. Just open up the Chrome Dev Tools (CTRL+SHIFT+i) and select the “Network tab".&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_011.sflb" alt="Chrome Network Tab" /&gt;&lt;/p&gt; &lt;p&gt;Here we can see quite a bit of information, although since my page is fairly simple there might not be a ton of items to inspect. Nevertheless, we can see that I attempted to download index.html, jquery-1.7.2.min.js and Styles.css, all using the GET method. These all succeeded, and I can even see what initiated this action – pretty nifty! Chrome also gives us the ability to see how long it took to download the file, as well as where in the overall page load the download took place.&lt;/p&gt; &lt;p&gt;If we had more happening on this page it would all go through the Network tab like this. Ajax requests would be found here for example. Of course, if we were unable to download a resource it would gladly tell us and say specifically what kind of error (404, 500 etc.) that caused the issue. This is extremely useful when you see odd behavior on a page. You never know what you might’ve missed to download, or if there are any errors in your way.&lt;/p&gt; &lt;p&gt;If you’d like to you can also click on each resource and see the Headers and Response messages for each of these requests. There is also a Preview (for our HTML file this would display the entire HTML in plain text) and a Timing tab which gives us insight as to how long it took for this entire request to get back to us.&lt;/p&gt; &lt;h2&gt;Firefox&lt;/h2&gt; &lt;p&gt;Firefox has a very similar view as what we found in Chrome. If I open up Firebug and click on the “Net” tab on my sample page I am greeted by this:&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_012.sflb" alt="Firefox Net Tab" /&gt;&lt;/p&gt; &lt;p&gt;As we can see we get a similar view to what we had in Chrome. While it doesn’t tell us what kind of file this is, it still displays all of the files that downloaded. Additionally we get the status, field which would inform us if anything went wrong. You can also expand each item to get a more detailed view of the response, similarly to what we had in Chrome as well&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_013.sflb" alt="Firefox Net tab expanded" /&gt;&lt;/p&gt; &lt;h2&gt;IE9&lt;/h2&gt; &lt;p&gt;IE isn’t far too different either actually and having this as a standard feature is always a good touch. There is an interesting approach that IE9 takes, which is that you can selectively choose when to start and end the capturing of this data. More on this in a second! :)&lt;/p&gt; &lt;p&gt;If we open up the IE9 Dev Tools (F12) and select the “Network” tab this gets displayed:&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_014.sflb" alt="IE9 Network Tab" /&gt;&lt;/p&gt; &lt;p&gt;So, nothing happens by itself here. In Chrome and Firefox we would just refresh the page if we saw nothing under this tab and automatically things would capture. However, this could also leave us with a ton of extra information that we’re not interested in. What if we just want to look at what happens when we click that one button? IE9 lets us define exactly when we start the capture, and when to end it.&lt;/p&gt; &lt;p&gt;If we hit “Start capturing” and refresh the page I should get something similar to the other two browsers.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/dev_tools_015.sflb" alt="IE9 Network Tab, Captured Results" /&gt;&lt;/p&gt; &lt;p&gt;Bingo! We get to see the method, satus/result as well as what type of request we are dealing with. Additionally all of the timing information is there as well. One neat thing is that we also get to see what particular element was in charge of initiating the request, even if it was a refresh.&lt;/p&gt; &lt;p&gt;For some more detailed information, which would contain all of the more nitty gritty items that we saw in Chrome and FF all we need to do is press “Go to detailed view” and voila – more information than you can shake a stick at!&lt;/p&gt; &lt;h1&gt;Oh, We Are Just Getting Started&lt;/h1&gt; &lt;p&gt;So that’s a quick overview of the Element Inspector and the Network tab of Chrome 18 , Firefox 12 and IE9. This wasn’t necessarily a deep dive into any one tool or any one browser, but more of a quick overview of what’s available. Hopefully I inspired those of you whom haven’t used these tools before, or maybe I covered something you haven’t been using! Keep in mind that there’s more to come later as I dive in to the more JavaScript heavy items in the next blog post! :D&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet-ajax.aspx"&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/AJAX_blogs_banner.sflb" alt="Download a Trial of the RadControls Today!" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2&gt;About the author&lt;/h2&gt; &lt;img alt="Carl Bergenhem" src="http://blogs.telerik.com/Libraries/ASP_NET_MVC/CarlBergenhem.sflb" class="photo" /&gt; &lt;h3 class="fn"&gt;Carl Bergenhem&lt;/h3&gt; &lt;p&gt;
Carl Bergenhem is an Enterprise Solutions Consultant at Telerik specializing in the ASP.NET AJAX and ASP.NET MVC products. He has always been interested in web development and has played around with various web technologies since he was a child. In his free time Carl enjoys soccer, running and playing his guitar.
&lt;/p&gt; &lt;p class="twit"&gt;&lt;a href="http://www.twitter.com/carlbergenhem"&gt;@carlbergenhem&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/P_HZ-d3TXdc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/P_HZ-d3TXdc/quick-tips-on-troubleshooting-your-web-pages-element-inspector-and-network-resources.aspx</link>
      <author>ASP.NET AJAX Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-16/quick-tips-on-troubleshooting-your-web-pages-element-inspector-and-network-resources.aspx</comments>
      <guid isPermaLink="false">8f0de103-94a1-4774-be5b-4b22157c98cd</guid>
      <pubDate>Wed, 16 May 2012 18:39:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-16/quick-tips-on-troubleshooting-your-web-pages-element-inspector-and-network-resources.aspx</feedburner:origLink></item>
    <item>
      <title>What makes a marketer of a toolset for building Windows Phone apps happy?</title>
      <description>&lt;p&gt;It is news like this one: two of the four apps that won the big prize of the &lt;a target="_blank" href="http://www.30tolaunch.com/WindowsPhone/Finish"&gt;30 to Launch competition&lt;/a&gt; are built with&lt;a href="http://www.telerik.com/products/windows-phone.aspx"&gt; RadControls for Windows Phone&lt;/a&gt; - the product our team is building with so much care.&lt;/p&gt; &lt;p&gt;And the apps are:&lt;br /&gt; &lt;a target="_blank" href="http://www.windowsphone.com/en-US/apps/510d0b03-9271-4b7c-a8f8-d090ddeb6139"&gt;Play the hunt &lt;/a&gt;– built by &lt;a target="_blank" href="http://www.eshymedia.com/Pages/aboutus.aspx"&gt;Eshy Media&lt;/a&gt; &lt;br /&gt; &lt;a target="_blank" href="http://www.windowsphone.com/en-US/apps/6c12eed7-d8af-4790-b5a4-49c23c6aad24"&gt;Social Mints&lt;/a&gt; – built by &lt;a target="_blank" href="http://www.gotechark.com/"&gt;Techark&lt;/a&gt;. Social Mints was also the winner of Core77's FastTrack to the Mobile App International Design Award and was featured at Mobile World Congress 2012. &lt;/p&gt; &lt;p&gt;“We are extremely excited about this win as there were more than 130 apps submitted for the contest,” said Pratik Kothari from Techark. &lt;/p&gt; &lt;p&gt;And So Am I. Because our customers apps’ success is our team’s ultimate reward.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blogs.telerik.com:80//Libraries/Marketing_team/Play-the-hunt.sflb?;decreaseOnly=true" /&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blogs.telerik.com:80//Libraries/Marketing_team/Social-Mints.sflb?;decreaseOnly=true" /&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/products/windows-phone.aspx"&gt; If you want to try how RadControls for Windows Phone can improve your app or help you create a new one, download a free trial from here.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/baUTGjDAbMY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/baUTGjDAbMY/what-makes-a-marketer-of-a-toolset-for-building-windows-phone-apps-happy.aspx</link>
      <author>Marketing Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-15/what-makes-a-marketer-of-a-toolset-for-building-windows-phone-apps-happy.aspx</comments>
      <guid isPermaLink="false">799a74c0-49f6-4587-aaa3-a4cf8040cb6f</guid>
      <pubDate>Wed, 16 May 2012 12:00:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-15/what-makes-a-marketer-of-a-toolset-for-building-windows-phone-apps-happy.aspx</feedburner:origLink></item>
    <item>
      <title>XAMLflix Video Tutorial: RadCalculator for Silverlight and WPF</title>
      <description>&lt;p&gt;Hello everyone and welcome back to &lt;b&gt;&lt;i&gt;XAMLflix&lt;/i&gt;&lt;/b&gt; with RadCalculator for Silverlight and WPF. I hope you have been enjoying the series as last week we took a look at &lt;a href="http://blogs.telerik.com/blogs/posts/12-05-08/xamlflix-introduces-radpropertygrid.aspx"&gt;RadPropertyGrid&lt;/a&gt; and &lt;a href="http://blogs.telerik.com/jesseliberty/posts/12-05-10/radcombobox.aspx"&gt;RadComboBox&lt;/a&gt;. This week we will be taking a look at RadCalculator for Silverlight and WPF. &lt;/p&gt;  &lt;p&gt;What is &lt;b&gt;&lt;i&gt;XAMLflix&lt;/i&gt;&lt;/b&gt; you might ask? Well, it is Telerik’s way of teaching you how to use both new and existing controls from Telerik’s XAML suite. Each and every Tuesday and Thursday, we will provide a fresh batch of videos and sample projects highlighting a different control. Since our Silverlight and WPF share a common codebase and API, you only have to learn how to use these controls once! You can simply copy and paste the code between frameworks.&lt;/p&gt;  &lt;p&gt;Be sure to check out &lt;a href="http://www.telerik.com/xamlflix.aspx"&gt;&lt;strong&gt;www.telerik.com/xamlflix&lt;/strong&gt;&lt;/a&gt; for all the videos!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;RadCalculator&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;RadCalculator&lt;/b&gt; for Silverlight/WPF has a simple easy-to-use interface enabling the end user to perform all basic calculations such as addition, subtraction, multiplication, division as well as some more complicated ones – reciprocal, square root, negate. The operations can be executed either by clicking the calculator buttons, or by using your keyboard. You can also use the numeric keypad to type numbers and operators by pressing Num Lock. Furthermore, all the Memory and Clear features are exposed as well.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;a href="http://tv.telerik.com/watch/silverlight/getting-started-with-radcalculator-"&gt;Getting Started with RadCalculator&lt;/a&gt;&lt;/b&gt; – In this video, we will see how easy it is to get started with RadCalculator. We will begin by adding RadCalculator to a new Silverlight Application and explore its features. We will wrap up the video by learning how to add the RadCalculatorPicker to you Silverlight project as well. (&lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/CalculatorGettingStartedTTV.sflb?download=true"&gt;Download the Project&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;a href="http://tv.telerik.com/watch/silverlight/create-custom-operations-with-radcalculator"&gt;Customize RadCalculator by Creating Custom Operations&lt;/a&gt; – &lt;/b&gt;In this video, we will learn how RadCalculator can be easily extended by defining custom operations that are needed in specific scenarios. We will add four additional buttons and define the custom operations in code. (&lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/CalculatorCustomizeTTV.sflb?download=true"&gt;Download the Project&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;a href="http://tv.telerik.com/watch/silverlight/use-radcalculatorpicker-with-radgridview-"&gt;Use RadCalculatorPicker as an editing element in RadGridView&lt;/a&gt; – &lt;/b&gt;In this video, we are going to show that RadCalculatorPicker can be embedded as an editing element for a column in RadGridView. Your users will be able to perform calculations inside RadGridView with ease! (&lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/CalculatorGridViewTTv.sflb?download=true"&gt;Download the Project&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Wrap-Up&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Hopefully you’ve seen here just how quickly and easily you can add RadCalculator in your next line-of-business application. And as a reminder, this is only one of controls offered in the Silverlight/WPF suite. So, feel free to download your own copy of the &lt;a href="http://www.telerik.com/download-trial-file.aspx?pid=571"&gt;Silverlight&lt;/a&gt; and &lt;a href="http://www.telerik.com/download-trial-file.aspx?pid=601"&gt;WPF&lt;/a&gt; control suite right now.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Also, before you go, I need your help. Telerik is driven by customer feedback. This is where I need you to tell me what you want to see in the future. Whether it is new controls, additional features or content based off of existing controls, then just drop me a comment in this post or send me a tweet. I look forward to hearing from you shortly!   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.twitter.com/mbcrump"&gt;@mbcrump&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;img style="border-bottom: 0px solid; border-left: 0px solid; width: 600px; height: 162px; border-top: 0px solid; border-right: 0px solid" alt="XAMLflix Download RadControls for Silverlight &amp;amp; WPF" src="/Libraries/Silverlight_team/XAMLflix-CTA-banner-blog.sflb?" usemap="#rade_img_map_1328805965142" sfref="[Libraries]63547fd2-d1d3-4c29-b2fc-19e3b8704c7f" /&gt;&lt;map id="rade_img_map_1328805965142" name="rade_img_map_1328805965142"&gt; &lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=601" shape="RECT" coords="409,66,574,106" /&gt;&lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=571" shape="RECT" coords="409,109,575,150" /&gt;&lt;/map&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/NaFh7-FB1WE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/NaFh7-FB1WE/xamlflix-video-tutorial-radcalculator-for-silverlight-and-wpf.aspx</link>
      <author>Michael Crump</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-15/xamlflix-video-tutorial-radcalculator-for-silverlight-and-wpf.aspx</comments>
      <guid isPermaLink="false">85fe3bc0-1d29-43a1-9ca2-d1605dc24e1d</guid>
      <pubDate>Tue, 15 May 2012 16:24:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-15/xamlflix-video-tutorial-radcalculator-for-silverlight-and-wpf.aspx</feedburner:origLink></item>
    <item>
      <title>Telerik OpenAccess ORM - Using SQL Server 2012 LocalDB</title>
      <description>&lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;span style="font-family: calibri;"&gt;Microsoft SQL Server 2012 is certainly an interesting upgrade for the SQL Server, offering lots of improvements and new features. There are many things that might tempt you to migrate to 2012 or at least to start your new projects based on it, but to name a few:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;span style="font-family: calibri;"&gt;Enhancements for higher availability&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="font-family: calibri;"&gt;New and improved version of the SQL Server Management Studio &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="font-family: calibri;"&gt;Easier migration &amp;ndash; the new Side-by-Side Migration option makes the migration from older versions of SQL Server safer and the rollback easier, which can be crucial. In the same time, you can do even an In Place migration (only if you are running 2005 or 2008 edition) or a full-blown data migration by configuring a new machine.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;span style="font-family: calibri;"&gt;You will most probably want to take advantage of the new file-based version of SQL Express called &lt;strong&gt;LocalDB&lt;/strong&gt;. It will be useful during the development phase of your application as you will not spend any time configuring the server - everything is configured out of the box. In the same time, as it is compatible with the SQL Server 2012 commercial editions, it will be easier to deploy your application to production servers. That means the ORM product you choose has to fully support both versions of the database, and to allow you to easily connect to and use LocalDB.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;span style="font-family: calibri;"&gt;Let&amp;rsquo;s get our hands dirty and try all this with &lt;strong&gt;OpenAccess ORM&lt;/strong&gt; - it &lt;strong&gt;fully supports LocalDB and SQL Server 2012 commercial editions&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: calibri;"&gt;. We can use the &lt;strong&gt;SQL Server Data Tools (SSDT)&amp;nbsp;&lt;/strong&gt;for creating and defining a LocalDB database, and then&amp;nbsp;generate an&amp;nbsp;OpenAccess Domain Model out of it using the simple Update from Database wizard. This component is available out of the box for Visual Studio 11 Beta, so we will use VS 11 to evaluate what is being offered. Those of you who would like to stick to VS 2010 can download and install .NET Framework 4.0.2 and optionally - SSDT (you can also use the old Server Explorer, it's totally fine). &lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;span style="font-family: calibri;"&gt;Note that&amp;nbsp;the Database First approach is the choice in this case since&amp;nbsp;we would like to really familiarize with&amp;nbsp;the database&amp;nbsp;&amp;ndash; for the scenarios where&amp;nbsp;you don&amp;rsquo;t care about it so much,&amp;nbsp;you can just create an empty Domain Model, add your entities and concentrate on the business logic rather than the database specifics.&lt;/span&gt;&lt;/p&gt; &lt;h3 style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;span style="font-family: calibri;"&gt;&lt;strong&gt;1. Create a LocalDB database&lt;/strong&gt;&lt;/span&gt;&lt;/h3&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;span style="font-family: calibri;"&gt;First, you have to create the .mdf file which will represent your database. In order to add one to your project, choose a Service-based Database in the Add New Item dialog (under Data category):&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;img alt="" src="http://blogs.telerik.com:80//Libraries/Ivailo_Ivanov/LDB_localdb.sflb" /&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;After you click Add, a wizard will automatically offer you to create some model or a dataset matching the empty database. Cancel the wizard and we will get to creating the model later.&amp;nbsp;&lt;/p&gt; &lt;strong&gt; &lt;/strong&gt; &lt;h3 style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;strong&gt;2. Access the database and define the schema&lt;/strong&gt;&lt;/h3&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;For database schema manipulations we will use the &lt;strong&gt;SQL Server Object Explorer &lt;/strong&gt;- a shiny new addition to the Visual Studio:&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;img alt="" width="300" height="193" src="http://blogs.telerik.com:80//Libraries/Ivailo_Ivanov/LDB_objexp.sflb?width=300&amp;amp;height=300&amp;amp;decreaseOnly=true" /&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;Initially it will not have any servers presented, but if you click on Add New Server a familiar window pops up asking for connection details. Our problem now is how to specify the LocalDB here&amp;nbsp;- we only know the file name and that's it!? Not so obvious, but after a short search it appeared that for getting started you can try writing &lt;strong&gt;"&lt;span style="font-family: 'courier new'; font-size: 13px; color: #333333;"&gt;(localdb)\v11.0&lt;/span&gt;"&lt;/strong&gt; as a server name and use Windows Authentication. As it turns out, while you can create Named Instances of LocalDB dedicated to one application only, an Automatic (public) one is available and it's named after the LocalDB version, in this case - v11.0. &lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;After we add the Automatic instance, our file is shown as a database under it in the SQL Server Object Explorer. It's full path is used as a database name by default, so we have renamed it to something more readable:&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;img alt="" width="249" height="300" src="http://blogs.telerik.com:80//Libraries/Ivailo_Ivanov/LDB_localdb_attached.sflb?width=300&amp;amp;height=300&amp;amp;decreaseOnly=true" /&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;The UI will somehow remind us for the SQL Server Management Studio, but it certainly has some new things to get used to. Adding a table is easy:&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;img alt="" src="http://blogs.telerik.com:80//Libraries/Ivailo_Ivanov/LDB_newtable_1.sflb" /&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;Just click &lt;strong&gt;Update&lt;/strong&gt;, and after some additional dialogs showing you a preview of the database changes and asking you to confirm them (nice!), the table is added.&lt;/p&gt; &lt;h3 style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;strong&gt;3. Auto-Generate the OpenAccess Domain Model&lt;/strong&gt;&lt;/h3&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;Now we can start the &lt;strong&gt;OpenAccess Add Domain Model&lt;/strong&gt; wizard:&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;img alt="" src="http://blogs.telerik.com:80//Libraries/Ivailo_Ivanov/LDB_addmodel.sflb" /&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;If you are not familiar how to work with the wizard, you can check out the dedicated &lt;a href="http://tv.telerik.com/watch/orm/database-first-series-part-1-creating-model?seriesID=1423"&gt;Getting Started with Database First video&lt;/a&gt;&amp;nbsp;available now in Telerik TV and you should be up to speed! Just &lt;strong&gt;select Microsoft SQL Server as a backend type&lt;/strong&gt; and the connection to the LocalDB file we have added earlier should be &lt;strong&gt;available automatically&lt;/strong&gt;. Just in case you need a connection string anyway, it should be something like:&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;em&gt;Data Source=(LocalDB)\v11.0;AttachDbFilename="[path]\LocalDBTest.mdf";Integrated Security=True&lt;/em&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;Now we are ready - you have your Domain Model&amp;nbsp;in the&amp;nbsp;&lt;strong&gt;OpenAccess Visual Designer&lt;/strong&gt;:&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&lt;img alt="" src="http://blogs.telerik.com:80//Libraries/Ivailo_Ivanov/LDB_model.sflb" /&gt;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 10pt; margin-left: 0cm;"&gt;I hope this quick walkthrough&amp;nbsp;has shown how easy is it is to enjoy the latest technologies with OpenAccess ORM. Stay tuned as Q2 2012 is approaching and we are implementing some long awaited features for it!&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="http://www.telerik.com/download-trial-file.aspx?pid=638" title="Telerik OpenAccess - Download Free Trial" alt="Download Free OpenAccess ORM Trial"&gt;&lt;img title="Telerik OpenAccess - Download Free Trial" alt="Download Free OpenAccess ORM Trial" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Blogs_banner-ORM_Trial.sflb" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/ZdoCd2Qoq24" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/ZdoCd2Qoq24/telerik-openaccess-orm---using-sql-server-2012-localdb.aspx</link>
      <author>OpenAccess ORM Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-14/telerik-openaccess-orm---using-sql-server-2012-localdb.aspx</comments>
      <guid isPermaLink="false">f8ac1080-db60-48e5-a807-c9ab2d703304</guid>
      <pubDate>Tue, 15 May 2012 14:06:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-14/telerik-openaccess-orm---using-sql-server-2012-localdb.aspx</feedburner:origLink></item>
    <item>
      <title>As your startup grows, the founders have to grow with it</title>
      <description>&lt;p&gt;
On Monday, Mark Zuckerberg showed up to pre-IPO roadshow investor meetings wearing
his signature hoodie. &lt;a href="http://www.wedbush.com/"&gt;Wedbush Securities&lt;/a&gt; managing
director &lt;a href="https://twitter.com/#!/michaelpachter"&gt;Michael Pachter&lt;/a&gt; commented
on Bloomberg news yesterday that Zuckerberg should show the investment community some
respect by ditching the hoodie in investor meetings and wearing it is a sign of &lt;a href="http://go.bloomberg.com/tech-deals/2012-05-08-zuckerbergs-hoodie-a-mark-of-immaturity-analyst-says-2/"&gt;immaturity&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://graphics8.nytimes.com/2010/06/03/technology/FACEBOOK_480.jpg" width="312" height="208"&gt;
&lt;/p&gt;
&lt;p&gt;
Pachter’s &lt;a href="http://www.businessinsider.com/analyst-slams-mark-zuckerberg-for-wearing-his-hoodie-to-ipo-meeting-2012-5"&gt;comment&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
"Mark and his signature hoodie: He’s actually showing investors he doesn’t care that
much; he’s going to be him. I think that’s a mark of immaturity. I think that he has
to realize he’s bringing investors in as a new constituency right now, and I think
he’s got to show them the respect that they deserve because he’s asking them for their
money."
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Predictably the tech elite attacked Pachter; Pacther &lt;a href="https://twitter.com/#!/karaswisher/status/200110663966789632"&gt;was
even called a “doofus”&lt;/a&gt; by Kara Swisher of All Things D. To his credit Pacther
is taking it well, even suggesting on Twitter that Mark wear an &lt;a href="http://www.betabrand.com/executive-pinstripe-hoodie.html"&gt;executive
pinstripe hoodie&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
As a guy who proudly wears jeans and tee shirts to formal events, you would expect
me to attack Pachter as well. While I don’t completely agree with Pachter, he does
have a point. 
&lt;/p&gt;
&lt;p&gt;
Founders represent the heart and soul of a company. They set the company culture and
lead by example. The problem with founders is that they sometimes forget that their
company has grown up and they are still acting like the company is a small upstart.
This disconnect between the company’s size and maturity and the founder’s attitude
and behaviors can cause problems, sometimes major ones. 
&lt;/p&gt;
&lt;p&gt;
As startups start to mature, their founders have to mature along with it. As the company
moves from startup to challenger, to market leader, the founder has to make adjustments
along the way. Behaviors and policies that were appropriate for a small startup may
not be appropriate for a company that is public. 
&lt;/p&gt;
&lt;p&gt;
For example when Bill Gates rallied the troops by saying that they were going to “cut
off Netscape’s air supply”, Bill was guilty of acting like Microsoft was the tiny
underdog when in reality it was a huge publically traded market leader and Netscape
was the tiny upstart. Gates’ comment became a major piece of evidence in Microsoft’s
anti-trust trial. 
&lt;/p&gt;
&lt;p&gt;
I’ve made this mistake many times as well. Zagat went through several phases while
I was CTO in the dot com boom and my playful behavior that worked so well in the pre-IPO/VC
dot com environment of late 1999 did not go over well in the post-crash/layoff environment
of 2001. We had brought in a new CEO after the dot com crash and my enthusiasm was
misinterpreted by the CEO as not being serious. Unfortunately this reflected poorly
on the entire IT staff. I was guilty of forgetting that the company had changed and
it was time to keep the same spirit but change some tactics and behaviors. Once I
did, things picked up nicely. 
&lt;/p&gt;
&lt;p&gt;
Founders also make the mistake of thinking like a startup when larger company decisions
are needed. For example, it took Microsoft something like 20 years to buy a corporate
jet, Google and Facebook had to get sued to start acquiring patents, and Yahoo! turned
down a lucrative offer from Microsoft since they still thought of themselves as a
Silicon Valley rebel instead of the blue chip big media company in the trouble it
was in. 
&lt;/p&gt;
&lt;p&gt;
At Telerik, our founders have had to make adjustments over the years. When I met them
Telerik was a scrappy 30 person company. Now we have teams that are larger than that
and over 600 people worldwide. The founders have scaled and adjusted their behavior
accordingly, all while keeping true to themselves and the company culture. They wear
jeans and tee shirts to the office, collared shirts to board meetings, and suits and
ties when accepting the &lt;a href="http://www.telerik.com/company/press-center/company-news/telerik-selected-for-red-herring-global-100.aspx"&gt;Red
Herring 100 award&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
I’m not saying the Mark Zuckerberg should ditch the hoodie and wear a suit to work
everyday. However, he should realize that going public requires some behavioral changes,
not just in financial accounting, but also in his leadership style. 
&lt;/p&gt;
&lt;p&gt;
The techie rebel in me applauds Zuckerberg for standing up the the man and wearing
his hoodie on Monday. The experienced MBA side of me also cringes knowing that Zuckerberg
is bound to make several Bill Gates style mistakes, mistakes that could cost Facebook
dearly. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.stephenforte.net/aggbug.ashx?id=e3dbd663-6499-463b-b13b-6a2441277595" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
OrcsWeb's &lt;a href="http://www.orcsweb.com/hosting/windows-cloud-servers/"&gt;Windows
Cloud Server Hosting&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/1M9JbrsMudM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/1M9JbrsMudM/As+Your+Startup+Grows+The+Founders+Have+To+Grow+With+It.aspx</link>
      <author>Stephen Forte</author>
      <comments>http://www.stephenforte.net/As+Your+Startup+Grows+The+Founders+Have+To+Grow+With+It.aspx</comments>
      <guid isPermaLink="false">c5b23a27-e237-4d05-9ca4-02e52ce1ceda</guid>
      <pubDate>Mon, 14 May 2012 13:30:00 GMT</pubDate>
    <feedburner:origLink>http://www.stephenforte.net/As+Your+Startup+Grows+The+Founders+Have+To+Grow+With+It.aspx</feedburner:origLink></item>
    <item>
      <title>Doing Your First Mock</title>
      <description>&lt;p&gt;Are you looking for a solution to your unit tests modifying data? Perhaps your unit tests are so slow that none of your teammates bother running them? You need &lt;a href="http://www.telerik.com/justmock"&gt;mock objects&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The following items will be covered to help you write better tests:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;b&gt;Why Mocking&lt;/b&gt; – how mock objects help you &lt;/li&gt; &lt;li&gt;&lt;b&gt;Real World Example&lt;/b&gt; –an example of code to be tested &lt;/li&gt; &lt;li&gt;&lt;b&gt;Testing the Example&lt;/b&gt; –how to use mocking to test the example &lt;/li&gt; &lt;li&gt;&lt;b&gt;AAA Pattern &lt;/b&gt;– a pattern emerges when writing clean tests &lt;/li&gt; &lt;/ol&gt; &lt;h2&gt;Why Mocking?&lt;/h2&gt; &lt;p&gt;Mocking is one of the most important factors in writing better unit tests. It drastically minimizes a test’s execution time and gives you an upper hand in validating complex logic without disk, database or service dependencies.&lt;/p&gt; &lt;p&gt;Mocks are more than the default-valued objects known as stubs. Mocks act as collaborators and are subject to behavioral modification. These collaborators will help you achieve your desired unit-testing goal for a given system and a controlled set of inputs. This is achieved by having the mock object stand in for the real object and returning data you have specified.&lt;/p&gt; &lt;p&gt;To get a complete overview of mocks, an informative article named “Mocks aren’t stubs” by &lt;i&gt;Martin Fowler&lt;/i&gt; is a must read.&lt;/p&gt; &lt;p&gt;&lt;a href="http://martinfowler.com/articles/mocksArentStubs.html"&gt;http://martinfowler.com/articles/mocksArentStubs.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After you are finished, it’s time to give you a good grasp of mocking with a real world example. &lt;/p&gt; &lt;h2&gt;Real World Example&lt;/h2&gt; &lt;p&gt;I am going to implement part of a banking system. This includes the transfer of funds between two different currency accounts using the currency converter service. &lt;/p&gt; &lt;p&gt;To begin, I have created an &lt;i&gt;ICurrencyService&lt;/i&gt; interface:&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;interface&lt;/code&gt; &lt;code style="color: #000000;"&gt;ICurrencyService &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;{ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;decimal&lt;/code&gt; &lt;code style="color: #000000;"&gt;GetConversionRate(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;string&lt;/code&gt; &lt;code style="color: #000000;"&gt;fromCurrency, &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;string&lt;/code&gt; &lt;code style="color: #000000;"&gt;toCurrency); &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;This service interface will be injected to an &lt;i&gt;AccountsService &lt;/i&gt;class that is responsible for the transfer funds operation. Once the source and destination account objects are passed to the operation, it will then withdraw from source, convert the currency based on current rate, and finally deposit the converted amount to the target account. There will be a check for available balance, authorization, approval, etc. in more complex scenarios, but they are out of scope for this article.&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;class&lt;/code&gt; &lt;code style="color: #000000;"&gt;AccountService : IAccountService &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;{ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;readonly&lt;/code&gt; &lt;code style="color: #000000;"&gt;ICurrencyService currencyService;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 3px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #000000;"&gt;AccountService(ICurrencyService currencyService) &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;{ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.currencyService = currencyService; &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 3px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;TransferFunds(Account from, Account to, &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;decimal&lt;/code&gt; &lt;code style="color: #000000;"&gt;amount) &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;{ &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;from.Withdraw(amount); &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;decimal&lt;/code&gt; &lt;code style="color: #000000;"&gt;conversionRate = currencyService.GetConversionRate(from.Currency, to.Currency); &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;decimal&lt;/code&gt; &lt;code style="color: #000000;"&gt;convertedAmount = amount * conversionRate; &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px !important;"&gt;&lt;code style="color: #000000;"&gt;to.Deposit(convertedAmount); &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px !important;"&gt;&lt;code style="color: #000000;"&gt;} &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;h2&gt;Testing the Example&lt;/h2&gt; &lt;p&gt;The goal is to validate or assert the transfer funds operation between two accounts. Therefore, this is the system under test (SUT), and the currency service is the collaborator which will be mocked. I am using &lt;b&gt;JustMock&lt;/b&gt; for this purpose, but the core concept is the same with other mocking tools.&lt;/p&gt; &lt;h3&gt;Arrange&lt;/h3&gt; &lt;p&gt;First I will create the mock of the &lt;i&gt;ICurrenyService&lt;/i&gt; interface:&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;ICurrencyService currencyService = Mock.Create&amp;lt;ICurrencyService&amp;gt;();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;From the account service implementation, I can see that &lt;i&gt;GetCurrencyService&lt;/i&gt; is being called to retrieve the conversation rate. The next step is to set an expected return value for it.&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;Mock.Arrange(() =&amp;gt; currencyService.GetConversionRate(&lt;/code&gt;&lt;code style="color: blue;"&gt;"GBP"&lt;/code&gt;&lt;code style="color: #000000;"&gt;, &lt;/code&gt;&lt;code style="color: blue;"&gt;"CAD"&lt;/code&gt;&lt;code style="color: #000000;"&gt;)).Returns(2.20m).MustBeCalled();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;i&gt;Mock.Arrange &lt;/i&gt;is the entry-point for setting expected behavior for a given mock. This line is self-explanatory, but I did use one extra option: &lt;i&gt;MustBeCalled. &lt;/i&gt;This ensures that if &lt;i&gt;currencyService.GetConversationRate&lt;/i&gt; is not called with the above criteria, then it will fail the test.&lt;/p&gt; &lt;p&gt;Since I have finished setting the behavior, I will then create an instance of the &lt;i&gt;AccountService&lt;/i&gt; class followed by the source and destination &lt;i&gt;Account &lt;/i&gt;classes.&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;var accountService = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;AccountService(currencyService);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 3px !important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;var canadianAccount = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Account(0, &lt;/code&gt;&lt;code style="color: blue;"&gt;"CAD"&lt;/code&gt;&lt;code style="color: #000000;"&gt;); &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;var britishAccount = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Account(0, &lt;/code&gt;&lt;code style="color: blue;"&gt;"GBP"&lt;/code&gt;&lt;code style="color: #000000;"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;h3&gt;Act&lt;/h3&gt; &lt;p&gt;Next, I will add some money into the GBP account:&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;britishAccount.Deposit(100);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Then transfer it to my Canadian account:&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;accountService.TransferFunds(britishAccount, canadianAccount, 100);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;h3&gt;Assert&lt;/h3&gt; &lt;p&gt;Once the transfer is complete, I need to make sure the operations happened as expected. I will first assert the balance of the two accounts:&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;Assert.AreEqual(0, britishAccount.Balance); &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;Assert.AreEqual(220, canadianAccount.Balance);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Then I will assert the mock to verify whether the required &lt;i&gt;GetConversationRate&lt;/i&gt; method is called as expected:&lt;/p&gt; &lt;div class="reCodeBlock" style="border: 1px solid #7f9db9; margin-bottom: 20px; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;Mock.Assert(currencyService);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;h2&gt;AAA Pattern&lt;/h2&gt; &lt;p&gt;You may have noticed that there were three easy steps involved with the unit test. This is part of a well-known pattern called Arrange – Act – Assert or AAA. JustMock’s syntax is implemented to strictly follow the AAA pattern to give you a well-structured flow, even in the most complex scenarios.&lt;/p&gt; &lt;p&gt;In this post, I described how mocking will help you. I then built an example project and test to illustrate how to proceed. Mocking helps you write clean unit tests, and it enables you to focus on the test logic by isolating external factors. With mocking, unit testing is no longer a chore.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/justmock"&gt;&lt;img width="600" height="111" title="JustMock-forum-02-2012" style="border-width: 0px; border-style: solid; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" alt="JustMock-forum-02-2012" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Doing-Your-First-Mock_1495-JustMock-forum-02-2012_3.sflb" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2&gt;About the author&lt;/h2&gt; &lt;img width="76" height="76" title="mehfuz" class="photo" alt="mehfuz" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Doing-Your-First-Mock_1495-mehfuz_thumb.sflb" /&gt; &lt;h3 class="fn"&gt;Mehfuz Hossain&lt;/h3&gt; &lt;p&gt;Mehfuz works as the Team Lead at Telerik focusing on JustMock. He is passionate playing around with the latest bits. He has been a Microsoft MVP, author of OS projects like LinqExtender and LINQ to flickr. Prior to working at Telerik , Mehfuz worked as a core member in many high volume web applications including Pageflakes that is acquired by Live Universe in 2008. He is a frequent blogger and was also a contributor and site developer at dotnetslackers.com. He is a firm believer of openness and currently enjoys his free time with objective-c and nodejs bits and never minds writing in textmate.&lt;/p&gt; &lt;p class="twit"&gt;@mehfuzh&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/7E8prLrOB5A" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/7E8prLrOB5A/doing-your-first-mock.aspx</link>
      <author>Just* Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-14/doing-your-first-mock.aspx</comments>
      <guid isPermaLink="false">61ab3bd2-1c2a-4fe1-baad-17b3bd85125b</guid>
      <pubDate>Mon, 14 May 2012 06:22:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-14/doing-your-first-mock.aspx</feedburner:origLink></item>
    <item>
      <title>Designing a Windows 8 Metro style app starting from an existing Windows Phone app – Design Case Study Part 1</title>
      <description>&lt;p&gt;A lot of the Windows Phone developers out there are already considering porting their Windows Phone apps to Windows 8. May be you are thinking: from Metro to Metro - it has to be pretty easy and straightforward, doesn&amp;rsquo;t it? Let&amp;rsquo;s see if this is true. &lt;/p&gt; &lt;p&gt;This case study gives insights into porting the design of an existing Windows Phone app to a Windows 8 Metro app. It discusses the main similarities and differences between the design guidelines of the two platforms, what can and cannot be reused.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh202915%28v=vs.92%29.aspx"&gt;User Experience Design Guidelines for Windows Phone&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh779072.aspx"&gt;User Experience Design Guidelines for Windows 8&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For the purposes of the case study we are using&amp;nbsp;&lt;a href="http://www.windowsphone.com/en-US/apps/21c17744-f63c-4b21-8a69-600cd08193f5"&gt;Tasks&lt;/a&gt; - a free Windows Phone todo lists app with more than 100,000 downloads. The app was created by the Telerik Windows Phone team as a showcase of our &lt;a href="http://www.telerik.com/products/windows-phone.aspx?utm_source=Design-Case-Study-Win8&amp;amp;utm_medium=whitepaper&amp;amp;utm_campaign=links"&gt;UI components for Windows Phone&lt;/a&gt;. It started originally with an app called ToDoLists, which is meant to serve as a learning material for Windows Phone developers (the source code is freely available and can be &lt;a href="http://www.telerik.com/products/windows-phone/getting-started/todolists.aspx?utm_source=Design-Case-Study-Win8&amp;amp;utm_medium=whitepaper&amp;amp;utm_campaign=links"&gt;downloaded from here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;We will touch upon all the key design patterns and processes that are part of a Metro app and comment on what makes Windows Phone and Windows 8 similar and different:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="#design-process"&gt;Design process &lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#layout-navigation"&gt;Layout and navigation &lt;/a&gt;&lt;/li&gt; &lt;li&gt;Commands and actions &lt;/li&gt; &lt;li&gt;Touch &lt;/li&gt; &lt;li&gt;Orientation and views &lt;/li&gt; &lt;li&gt;Notifications and live tiles &lt;/li&gt; &lt;li&gt;Telerik upcoming Windows 8 suite &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;This is the first&amp;nbsp;part from series of two blog posts where we will talk about the design process and layout and navigation. You can download the full series as:&lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="/Files/W8-Design-Case-Study.pdf"&gt;&lt;img width="20" height="20" src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/pdf.sflb" alt="pdf file" /&gt;high resolution pdf&lt;/a&gt;&amp;nbsp;(~7 MB), or &lt;/p&gt; &lt;p&gt;&lt;a target="_blank" href="/Files/W8-Design-Case-Study-small.pdf"&gt;&lt;img width="20" height="20" src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/pdf.sflb" alt="pdf file" /&gt;low resolution pdf&lt;/a&gt; (~2 MB). &lt;/p&gt; &lt;h2 id="design-process"&gt;Design process&lt;/h2&gt; &lt;p&gt;Before we even get to the rough design concept, no matter which platform we are targeting, we start with research, thinking about what users need and analyzing existing applications across all mobile platforms. In our case we had the initial information architecture sorted out in Tasks for Windows Phone. On this solid base we started improving it and make it work for all the screen sizes.&lt;br /&gt;
This is how the low fidelity wireframes looked at this phase &amp;ndash; sketches of ideas, different pages of the application which formed the application flow and the early paper application prototype. The next step was increasing the wireframes fidelity and transferring them from paper to file.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/paper-wireframes_1.sflb" alt="Paper wireframes" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Paper wireframes&lt;/em&gt; &lt;/p&gt; &lt;p&gt;The developers participated in every step of the design process, helping with ideas and technical knowledge. They started working on the prototype of the app simultaneously with me working on the visual design. This does not mean that my job was done once the visual design is delivered &amp;ndash; on the contrary. A serious designer input was needed when all the functionality was put together. Only then, especially with touch, we can be sure everything is in the right place, the interaction is consistent and feels natural. Stick to the agile best practices and have as many iterations as needed with the developer team and your testers, if you have such.&lt;/p&gt; &lt;p&gt;My advice is to start working on the device as soon as possible. Once you&amp;rsquo;ve started working on the device don&amp;rsquo;t be afraid to make all the necessary changes in order for the app to work at its best. &lt;strong&gt;And remember, do not fall in love with the design or the feature which just won&amp;rsquo;t work.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img width="290" height="181" src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/AppFlow-1.sflb?width=300&amp;amp;height=300&amp;amp;decreaseOnly=true" alt="Application flow diagram" /&gt;&amp;nbsp; &lt;img width="290" height="181" src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/AppFlow-2.sflb?width=300&amp;amp;height=300&amp;amp;decreaseOnly=true" alt="Application flow diagram" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Application flow diagram &amp;ndash; one of the deliverables at the end of the design process&lt;/em&gt;&lt;/p&gt; &lt;h2 id="layout-navigation"&gt;Layout and navigation&lt;/h2&gt; &lt;p&gt;The Layout and navigation model of Windows Phone and Windows 8 are very similar and different at the same time. Let&amp;rsquo;s first look at some of the things the two platforms have in common:&lt;/p&gt; &lt;h3&gt;1. Navigate through content&lt;/h3&gt; &lt;p&gt;Content not chrome is one of the essential Metro principles and it applies to both the Windows Phone and the Windows 8 Metro app: they have the same hub and spoke navigation models. Here they are:&lt;/p&gt; &lt;p&gt;1.1. Hub page &amp;ndash; or the home page of the application from where the user reaches the rest of the application content. The goal of the hub page is to show the variety and richness of the content the application provides. It is like a magazine created for the application. In Tasks we show excerpts from due tasks, projects and categories.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/Valentin_Stoychev/W8-01.sflb"&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-01-1.sflb" alt="Tasks hub page for Windows 8" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Tasks for Windows 8 hub page&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-02.sflb" alt="Tasks hub page for Windows Phone" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Tasks for Windows Phone hub page&lt;/em&gt;&lt;/p&gt; &lt;p&gt;1.2. Section pages &amp;ndash; these are pages with identical content type. For example All Tasks page.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-03-1.sflb" alt="Tasks section page" /&gt;&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;em&gt;Tasks for Windows 8 section page&lt;/em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;Tasks for Windows Phone section page&lt;/em&gt;&lt;/p&gt; &lt;p&gt;1.3. Detail pages &amp;ndash; the name speaks for itself &amp;ndash; a page that show the details of a single item.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-04-1.sflb" alt="Tasks details page" /&gt;&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;em&gt;Tasks for Windows 8 details page&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tasks for Windows Phone details page&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Now let&amp;rsquo;s examine the differences between the Windows 8 and Windows Phone design patterns.&lt;/p&gt; &lt;h3&gt;2. No hardware back button in Windows 8&lt;/h3&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-05.sflb" alt="Back button in Windows 8" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Software back button in Windows 8&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Windows 8 has no hardware back button as opposed to Windows Phone, which results in the need for a back button in the page heading or navigation bar. The back button takes the user back where she came from and all pages but the hub page should have it.&lt;/p&gt; &lt;p&gt;In Windows Phone the Backstack is very important &amp;ndash; this the list of pages/steps user went through till the current moment. The Backstack should be carefully managed &amp;ndash; the user must not get lost in the application, fall into traps, loops, and phantom pages, because only in that way she will thrust the application to get her back where she wants.&lt;/p&gt; &lt;p&gt;I will give you an example for that. In Tasks for Windows Phone it is possible to pin a task (project, category) to Start menu. When the user taps on pinned task a details page is opened. To continue browsing in the application the user should tap on the home button close to the logo. When the user is in the home/hub page the details page is removed from the Backstack. The reason is to fulfill the requirement for publishing apps in the marketplace - when the user is on the home page and hit the back button she should go back to start.&lt;/p&gt; &lt;p&gt;In Windows Phone the user navigates through the app by tapping on the content items and application buttons, and goes back with the back button.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;In Windows 8 the user has more opportunities to choose her way.&lt;/strong&gt;&lt;/p&gt; &lt;h3&gt;3. Navigating with the edge swipe&lt;/h3&gt; &lt;p&gt;Swiping from the edge of the screen is what makes the app bar and navigation bar to appear. The Navigation bar provides global navigation controls - it shows on every page and provides consistent navigation experience. The Navigation bar in Tasks for Windows 8 is one of the main differences from the Tasks for WP. We chose to use it as addition to the already implemented navigation model because of the confidence it gives to the user to go everywhere she wants from any page of the app.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-06-1.sflb" alt="Navigation bar in Windows 8" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Navigation bar&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;4. Page filters and sorts&lt;/h3&gt; &lt;p&gt;The pivot control is the Windows Phone way to manage views and pages within application. It is used for filtering the content, viewing multiple data sets or switching views. In Windows 8 the pivot control is replaced with page filters and sorts. It is pretty much like traditional tab pattern.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-07-1.sflb" alt="Tab design pattern in Windows 8" /&gt;&lt;/p&gt; &lt;p style="text-align: center;"&gt;&lt;em&gt;Tab control in Windows 8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Pivot control in Windows Phone&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;5. List menu navigation. Filter menu.&lt;/h3&gt; &lt;p&gt;This is the advantage of the bigger screen &amp;ndash; to have a menu which is made from items of certain type alongside the detailed page of the selected item. Even better, instead of making this menu list long and unreadable, there is a filter available on top to help for easier access to the desired information. This is almost impossible on the smaller phone screen &amp;ndash; to have both the detailed information and the available other choices on same place. It is not applicable in all cases, but in our Tasks app it was more than welcome.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-08.sflb" alt="List menu for navigation" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;List menu with filter in Windows 8&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;6. Horizontal/vertical scrolling&lt;/h3&gt; &lt;p&gt;The other significant difference between Windows Phone and Windows 8 is the way of handling the scrolling. In the Windows Phone panorama control there could be both horizontal &amp;ndash; within the panorama, and vertical &amp;ndash; within the listboxes in the panorama. In Windows 8 this situation is not recommended. There could be only horizontal or only vertical scrolling. The reason for that is the cross-slide interaction &amp;ndash; sliding the finger a short distance, perpendicular to the panning direction to select an item. There should be consistency of the selection interactivity within single page &amp;ndash; that&amp;rsquo;s why the panning direction should be only horizontal or vertical.&lt;/p&gt; &lt;h3&gt;7. Semantic zoom&lt;/h3&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-09-1.sflb" alt="Semantic zoom in Windows 8" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Semantic zoom on the home page&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Another element that needs to be designed in Windows 8 is the semantic zoom - a quick way to zoom out to groups of content and jump to the desired one.&lt;/p&gt; &lt;h3&gt;8. Settings, sharing, about, feedback, search - with charms&lt;/h3&gt; &lt;p&gt;Windows 8 provides for a special place to put all these pages and they are neatly organized. They are called charms and are just an edge swipe away. I must admit that in Windows Phone Tasks these pages are not so well organized but in Windows 8 they will be.&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Valentin_Stoychev/W8-10-1.sflb" alt="Feedback flyout" /&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Feedback flyout&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Tasks for Windows Phone is available for free on the marketplace. &lt;a href="http://www.windowsphone.com/en-US/apps/21c17744-f63c-4b21-8a69-600cd08193f5"&gt;Check it out here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Tasks for Windows 8 is on its way and we will let you know once it&amp;rsquo;s live.&lt;br /&gt;
Tasks for Windows Phone is built with RadControls for Windows Phone &amp;ndash; UI components and building blocks for building Windows Phone apps. &lt;a href="http://www.telerik.com/products/windows-phone.aspx?utm_source=Design-Case-Study-Win8&amp;amp;utm_medium=whitepaper&amp;amp;utm_campaign=links"&gt;Read more here and download a free trial.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Stay tuned for part two where we will take a look at commands and actions, touch, orientation and views, notifications and live tiles and Telerik upcoming Windows 8 suite! &lt;/p&gt; &lt;p&gt;&lt;a style="display: none;" rel="tag" href="http://www.codeproject.com"&gt;CodeProject&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/3GUo4IP-zgo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/3GUo4IP-zgo/designing-a-windows-8-metro-style-app-starting-from-an-existing-windows-phone-app-design-case-study-part-1.aspx</link>
      <author>Windows Phone Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-10/designing-a-windows-8-metro-style-app-starting-from-an-existing-windows-phone-app-design-case-study-part-1.aspx</comments>
      <guid isPermaLink="false">2dadb6fe-ca1f-4eab-9225-37982d4b776e</guid>
      <pubDate>Thu, 10 May 2012 10:31:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-10/designing-a-windows-8-metro-style-app-starting-from-an-existing-windows-phone-app-design-case-study-part-1.aspx</feedburner:origLink></item>
    <item>
      <title>GDI+ in a Windows 8 C# Metro Application – Experimenting for Fun</title>
      <description>&lt;p&gt;It&amp;rsquo;s been about two months since Windows 8 Consumer Preview is out and we, at &lt;a href="http://www.telerik.com"&gt;Telerik&lt;/a&gt;, have been enjoying the new framework and all the features it offers. One of the aspects we've been exploring is the &lt;a href="http://en.wikipedia.org/wiki/Immediate_mode"&gt;immediate mode rendering&lt;/a&gt; and what options the new runtime offers. XAML is in the core of WinRT (Windows Runtime) and it offers rich presentation capabilities but sometimes, especially on devices with limited hardware resources, we need to achieve even better performance to get up to the &amp;ldquo;fast and fluid&amp;rdquo; Metro applications' standard.&lt;/p&gt; &lt;p&gt;As I explained in &lt;a href="http://blogs.telerik.com/georgiatanasov/posts/12-04-02/metro-direct2d-and-xaml-burst-of-performance-in-windows-8.aspx"&gt;this blog post&lt;/a&gt;, Direct2D is undoubtedly the best choice when it comes to presenting heavy visual scenes that are frequently updated. Another immediate-mode rendering option is the WriteableBitmap class where you can directly update pixels on the screen. One of the things that is surprisingly missing in WinRT is the ability to render a XAML UIElement on a WriteableBitmap instance. So, in case you need to use the WriteableBitmap class in your application, the only solution would be to have your own rendering engine that manipulates the pixels of the bitmap. Fortunately, the &lt;a href="http://kodierer.blogspot.com/2012/05/one-bitmap-to-rule-them-all.html"&gt;WriteableBitmapEx&lt;/a&gt; solution, by &lt;a href="https://twitter.com/#%21/rschu"&gt;Rene Schulte&lt;/a&gt;, has already been ported to WinRT and it can serve your needs.&lt;/p&gt; &lt;p&gt;In this post I want to present yet another (a bit crazy) idea I have about outputting content within a WriteableBitmap instance. And that is &amp;ndash; as the title states &amp;ndash; integrating &lt;a href="http://msdn.microsoft.com/en-us/library/ms533798%28v=vs.85%29.aspx"&gt;GDI+&lt;/a&gt; within a C# Metro application and using it to present content.&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://blogs.telerik.com/Libraries/Marketing_team/Screen1_2.sflb?sfref=" /&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com:80//Libraries/Silverlight_team/Telerik_GdiPlusToMetro.sflb"&gt;Download the demo&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I am a big fan of Windows Forms and GDI+ since the initial release of .NET framework. Its only disadvantage is probably the fact that it is a software rendering engine which does not exploit Display Adapter&amp;rsquo;s capabilities. Luckily Native API interoperability is enabled in .NET for Metro Applications and we can call unmanaged methods through the &lt;a href="http://msdn.microsoft.com/en-us/library/aa984739%28v=vs.71%29.aspx"&gt;DllImport&lt;/a&gt; attribute. So, the idea is to create managed wrappers over some GDI+ methods and use them to draw content in an off-screen bitmap, whose pixels will then be passed to a WriteableBitmap instance.&amp;nbsp;&lt;/p&gt; &lt;h2&gt;The wrappers&lt;/h2&gt; &lt;p&gt;If you are familiar with Windows Forms and GDI+ then the wrappers in the demo application will look pretty much familiar &amp;ndash; Brush, Pen, Font, Graphics, etc. Here is an example of how the wrapper of a Brush-object looks like:&lt;/p&gt; &lt;div style="border: 1px solid #7f9db9; overflow-y: auto;" class="reCodeBlock"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;class&lt;/code&gt; &lt;code style="color: #000000;"&gt;SolidBrush : NativeObject&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #000000;"&gt;Color color;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #000000;"&gt;SolidBrush(Color color)&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.color = color;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;IntPtr handle;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;int&lt;/code&gt; &lt;code style="color: #000000;"&gt;result = SafeNativeMethods.GdiPlus.GdipCreateSolidFill(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.color.ToArgb(), &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;out&lt;/code&gt; &lt;code style="color: #000000;"&gt;handle);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;if&lt;/code&gt; &lt;code style="color: #000000;"&gt;(result != 0)&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;throw&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;InvalidOperationException();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.NativePtr = handle;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #000000;"&gt;Color Color&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;get&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;return&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.color;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;override&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;DestroyNativePtr()&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;base&lt;/code&gt;&lt;code style="color: #000000;"&gt;.DestroyNativePtr();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;SafeNativeMethods.GdiPlus.IntGdipDeleteBrush(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.NativePtr);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Each GDI+ object is associated with a native pointer, which is unmanaged and we need to destroy it when the object is being disposed:&lt;/p&gt; &lt;div style="border: 1px solid #7f9db9; overflow-y: auto;" class="reCodeBlock"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;abstract&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;class&lt;/code&gt; &lt;code style="color: #000000;"&gt;NativeObject : IDisposable&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #000000;"&gt;IntPtr nativePtr;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;~NativeObject()&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.Dispose(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;false&lt;/code&gt;&lt;code style="color: #000000;"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #000000;"&gt;IntPtr NativePtr&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;get&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;return&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.nativePtr;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;set&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.nativePtr = value;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;public&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;Dispose()&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.Dispose(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;true&lt;/code&gt;&lt;code style="color: #000000;"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;GC.SuppressFinalize(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;Dispose(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;bool&lt;/code&gt; &lt;code style="color: #000000;"&gt;disposing)&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;if&lt;/code&gt; &lt;code style="color: #000000;"&gt;(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.NativePtr != IntPtr.Zero)&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;try&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 48px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.DestroyNativePtr();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;catch&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 48px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;throw&lt;/code&gt;&lt;code style="color: #000000;"&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;finally&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 48px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.NativePtr = IntPtr.Zero;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 36px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;protected&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;virtual&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;DestroyNativePtr()&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;h2&gt;Drawing content&lt;/h2&gt; &lt;p&gt;We will initialize a Graphics object from a Bitmap and will draw a string on it. First, let&amp;rsquo;s create the needed GDI resources:&lt;/p&gt; &lt;div style="border: 1px solid #7f9db9; overflow-y: auto;" class="reCodeBlock"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;InitializeGdiResources()&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiBitmap = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Bitmap(PixelWidth, PixelHeight);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiGraphics = Graphics.FromBitmap(&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiBitmap);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiFont = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Font(&lt;/code&gt;&lt;code style="color: blue;"&gt;"Segoe UI"&lt;/code&gt;&lt;code style="color: #000000;"&gt;, 32, GdiPlusToMetro.FontStyle.Bold | GdiPlusToMetro.FontStyle.Italic);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiBrush = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;SolidBrush(Colors.White);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiStringFormat = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;StringFormat(StringFormatFlags.NoClip);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiPen = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;Pen(Colors.White, 1);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.writeableBitmap = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;WriteableBitmap(PixelWidth, PixelHeight);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.img.Source = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.writeableBitmap;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Time for some pixels to be output on the screen:&lt;/p&gt; &lt;div style="border: 1px solid #7f9db9; overflow-y: auto;" class="reCodeBlock"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;RenderText()&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;RectangleF rect = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;new&lt;/code&gt; &lt;code style="color: #000000;"&gt;RectangleF()&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;Width = PixelWidth,&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 24px ! important;"&gt;&lt;code style="color: #000000;"&gt;Height = PixelHeight&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;};&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiGraphics.DrawString(DisplayText, &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiFont, &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiBrush, rect, &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiStringFormat);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;h2&gt;Updating the WriteableBitmap&amp;rsquo;s pixels&lt;/h2&gt; &lt;p&gt;Now that we have some content produced we need to update the pixels of our WriteableBitmap instance:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div style="border: 1px solid #7f9db9; overflow-y: auto;" class="reCodeBlock"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;private&lt;/code&gt; &lt;code style="color: #006699; font-weight: bold;"&gt;void&lt;/code&gt; &lt;code style="color: #000000;"&gt;EndRender()&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;{&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;byte&lt;/code&gt;&lt;code style="color: #000000;"&gt;[] pixels = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.gdiBitmap.GetPixels();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;Stream stream = &lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.writeableBitmap.PixelBuffer.AsStream();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;stream.Seek(0, SeekOrigin.Begin);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #000000;"&gt;stream.Write(pixels, 0, pixels.Length);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 12px ! important;"&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;this&lt;/code&gt;&lt;code style="color: #000000;"&gt;.writeableBitmap.Invalidate();&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px ! important;"&gt;&lt;code style="color: #000000;"&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;h2&gt;Points of interest&lt;/h2&gt; &lt;p&gt;I also performed the same test as in the &lt;a href="http://blogs.telerik.com/georgiatanasov/posts/12-04-02/metro-direct2d-and-xaml-burst-of-performance-in-windows-8.aspx"&gt;Direct2D blog post&lt;/a&gt; &amp;ndash; rendering a polyline, consisting of 5000 points, within a 1024*768 rectangle. The results are pretty impressive:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table cellspacing="5" cellpadding="5"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;br /&gt; &lt;/td&gt; &lt;td&gt;FPS (frames-per-second)&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;GDI+ (antialias off) &lt;br /&gt; &lt;/td&gt; &lt;td&gt;&amp;nbsp;27&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;GDI+ (antialias on) &lt;br /&gt; &lt;/td&gt; &lt;td&gt;&amp;nbsp;3-4&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;XAML Polyline &lt;br /&gt; &lt;/td&gt; &lt;td&gt;&amp;nbsp;3&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;A software-rendering engine, that GDI+ is, produces the same results (sometimes even better) than a hardware-accelerated counterpart, which the XAML Polyline is. I definitely think that MS should revisit the Polyline implementation &amp;ndash; I really can&amp;rsquo;t understand why it is that slow.&amp;nbsp;&lt;/p&gt; &lt;h2&gt;Conclusion&lt;/h2&gt; &lt;p&gt;I know that some (if not most) of you are wondering: &amp;ldquo;Why would I need GDI+ in my application when I have Direct2D&amp;rdquo;? Well, it is indeed up to you &amp;ndash; this is just an experiment, which I (and hopefully you :)) find funny and interesting. With this experiment I learned that:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;DllImport is supported in .NET for Metro Applications.&lt;/li&gt; &lt;li&gt;You cannot render XAML UI elements within a WriteableBitmap instance.&lt;/li&gt; &lt;li&gt;You can get the WriteableBitmap&amp;rsquo;s PixelBuffer as a stream and write some bytes within it.&lt;/li&gt; &lt;li&gt;Pixel format in WriteableBitmap is BGRA.&lt;/li&gt; &lt;li&gt;GDI+ is at least as fast as XAML regarding line(s) rendering. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt;&lt;br /&gt;
GDI+ is not in the list of &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/br205756.aspx"&gt;supported graphics APIs&lt;/a&gt; for developing Metro
Style applications, so this demo will fail the App Store verification
tool. So, if you want to have your application published on the store,
this approach is definitely not a solution :) Thanks to &lt;a href="https://twitter.com/#%21/Pete_Brown"&gt;Pete_Brown&lt;/a&gt; and &lt;a href="https://twitter.com/#%21/dotMorten"&gt;Morten Nielsen&lt;/a&gt; for pointing this out.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Well, that&amp;rsquo;s it, do not hesitate to grab the demo and give it a try. Please note that the set of wrapped GDI+ functionality is limited and its purpose is to fit the demo&amp;rsquo;s requirements. And have in mind that GDI+ will prevent you from publishing your app on the store.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com:80//Libraries/Silverlight_team/Telerik_GdiPlusToMetro.sflb"&gt;Download the demo&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/6r1zDdAvjd8" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/6r1zDdAvjd8/gdi-in-a-windows-8-c-metro-application-experimenting-for-fun.aspx</link>
      <author>Georgi Atanasov</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-09/gdi-in-a-windows-8-c-metro-application-experimenting-for-fun.aspx</comments>
      <guid isPermaLink="false">18cf2bd8-7186-4473-bcf0-e5f58545ac80</guid>
      <pubDate>Wed, 09 May 2012 14:46:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-09/gdi-in-a-windows-8-c-metro-application-experimenting-for-fun.aspx</feedburner:origLink></item>
    <item>
      <title>Slides, Source Code and Video to the Diagramming Framework Webinar Now Available</title>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Hello everyone,&lt;/p&gt;  &lt;p&gt;I wanted to thank you all for attending the webinar today. As I promised in the webinar all of the materials are now available for you to download and explore on your own. If you have any questions then feel free to send me a tweet or leave a comment below. I’d also suggest that you download RadControls for &lt;a href="http://www.telerik.com/download-trial-file.aspx?pid=571"&gt;Silverlight&lt;/a&gt; and/or &lt;a href="http://www.telerik.com/download-trial-file.aspx?pid=601"&gt;WPF&lt;/a&gt; if you haven’t already. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Diagramming Framework Webinar Materials&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/RadDiagram_Framework.sflb?download=true"&gt;Slides&lt;/a&gt;, &lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/RadDiagWebinar.sflb?download=true"&gt;Source Code&lt;/a&gt; and the &lt;a href="http://tv.telerik.com/watch/silverlight/telerik-raddiagram-webinar"&gt;Recorded Webinar Video&lt;/a&gt; are available right now! &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Other XAMLFlix Webinars&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.telerik.com/evanhutnick/posts/12-05-03/telerik-xamlflix-data-visualization-webinar-wrap-up.aspx"&gt;Data Visualization&lt;/a&gt; : By Evan Hutnick - happened last week and all the materials have been posted to his blog. Go ahead and check it out to see what is happening with the latest XAML Data Visualization components from Telerik. &lt;/li&gt;    &lt;li&gt;GridView: By Jesse Liberty - Is coming up on May 15&lt;sup&gt;th&lt;/sup&gt; @ 11AM EST. You should go ahead and &lt;a href="http://www.telerik.com/products/xaml/xamlflix-webinar-registration.aspx"&gt;register now&lt;/a&gt; to make sure you are getting the most from RadGridView. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;What did we cover today?&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Getting Started Basics&lt;/b&gt; – How to create a project using RadDiagram, what files are referenced, and other need to know items. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Items Editing and Manipulation &lt;/b&gt;– Starting with a blank project, we added items and began manipulating how they appear on screen. We discussed &lt;u&gt;DataBinding&lt;/u&gt;, the different connector types, and different CapTypes. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;CCPD operations&lt;/b&gt; – We showed you exactly how you can copy, cut, paste, and delete from RadDiagram. You can even turn off those options if needed! &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Pan/Zoom/Resizing/ZOrder&lt;/b&gt; – We reviewed how you can pan/zoom RadDiagram by code or through the keyboard/mouse. We also discussed how to resize and ZOrder. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Undo-redo&lt;/b&gt; – We showed you how RadDiagram keeps track of changes made in the diagramming structure. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Align and snap&lt;/b&gt; – We showed you how you can easily align selected DiagramItems to RadDiagram. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Diagram commands&lt;/b&gt; – We showed you how to use commands in Buttons to do such things as Align, Snap, Copy and Paste, ShowGridLines, and more.)       &lt;ul&gt;       &lt;li&gt;RadDiagram provides a powerful set of 22 RoutedUICommands that help you work with your RadDiagram and its Items easily and build better MVVM applications. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Save/Load – serialization –&lt;/b&gt;We serialized an XML string (and viewed the contents in notepad) then loaded the XML back into RadDiagram. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Virtualization&lt;/b&gt; – We talked briefly about why you need UI Virtualization and showed how easy it was to turn it off and on. More details below:       &lt;ul&gt;       &lt;ul&gt;         &lt;ul&gt;           &lt;li&gt;RadDiagram supports UI Virtualization, which collapses all items outside the viewable area, thus enhancing the UI performance while manipulating the diagraming elements. However as the virtualization implementation only collapses the visibility of the controls outside the viewport, those items will still be considered during a layout operation for example. This means that a Layout operation will change the visibility of the diagraming elements if they are brought into the viewport area. &lt;/li&gt;         &lt;/ul&gt;       &lt;/ul&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Read-Only Diagram – &lt;/b&gt;We showed you different properties for Controlling the Read-Only State.&lt;b&gt;&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Keyboard Shortcuts&lt;/b&gt; - For your power users this allows you to trigger commands without using the mouse       &lt;ul&gt;       &lt;ul&gt;         &lt;ul&gt;           &lt;li&gt;RadDiagram allows you to trigger most of its features using key combinations. Below you can find a list of all supported key combinations and information about the features they trigger:              &lt;ul&gt;               &lt;li&gt;You can use the Ctrl key to change the active mouse tool in the RadDiagram. The default tool is the PointerTool but holding down the Ctrl key allows you to use the PanTool. &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Ctrl + C&lt;/b&gt; - triggers the DiagramCommands.Copy command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Ctrl + X&lt;/b&gt; - triggers the DiagramCommands.Cut command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Ctrl + V&lt;/b&gt; - triggers the DiagramCommands.Paste command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Ctrl + Z&lt;/b&gt; - triggers the DiagramCommands.Undo command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Ctrl + Y&lt;/b&gt; - triggers the DiagramCommands.Redo command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Ctrl + A&lt;/b&gt; - triggers the DiagramCommands.SelectAll command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;F2&lt;/b&gt; - triggers the DiagramCommands.BeginEdit command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Enter&lt;/b&gt; - triggers the DiagramCommands.CommitEdit command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Escape&lt;/b&gt; - triggers the DiagramCommands.CancelEdit command &lt;/li&gt;                &lt;li&gt;&lt;b&gt;Delete&lt;/b&gt; - triggers the DiagramCommands.Delete command &lt;/li&gt;             &lt;/ul&gt;           &lt;/li&gt;         &lt;/ul&gt;       &lt;/ul&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Wrap-up&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Thanks for watching and if you have any questions or comments then please let me know. Also, before you go, I need your help. Telerik is driven by customer feedback. This is where I need you to tell me what you want to see in the future. Whether it is new controls, additional features or content based off of existing controls, then just drop me a comment in this post or send me a tweet. I will find a proper solution for you. &lt;/p&gt;  &lt;p&gt;Also, keep watching the &lt;a href="http://www.telerik.com/products/xaml/xamlflix.aspx"&gt;XAMLflix&lt;/a&gt; page as we are releasing two new videos series each and every week. You should also go back and watch any videos that you may have missed.&amp;#160; &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.twitter.com/mbcrump"&gt;@mbcrump&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;img style="border-bottom: 0px solid; border-left: 0px solid; width: 600px; height: 162px; border-top: 0px solid; border-right: 0px solid" alt="XAMLflix Download RadControls for Silverlight &amp;amp; WPF" src="/Libraries/Silverlight_team/XAMLflix-CTA-banner-blog.sflb?" usemap="#rade_img_map_1328805965142" sfref="[Libraries]63547fd2-d1d3-4c29-b2fc-19e3b8704c7f" /&gt;&lt;map id="rade_img_map_1328805965142" name="rade_img_map_1328805965142"&gt; &lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=601" shape="RECT" coords="409,66,574,106" /&gt;&lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=571" shape="RECT" coords="409,109,575,150" /&gt;&lt;/map&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/m7NXvx90LVY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/m7NXvx90LVY/slides-source-code-and-video-to-the-diagramming-framework-webinar-now-available.aspx</link>
      <author>Michael Crump</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-08/slides-source-code-and-video-to-the-diagramming-framework-webinar-now-available.aspx</comments>
      <guid isPermaLink="false">5c654842-e570-4c0f-b308-7bc772cd30b6</guid>
      <pubDate>Wed, 09 May 2012 12:30:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-08/slides-source-code-and-video-to-the-diagramming-framework-webinar-now-available.aspx</feedburner:origLink></item>
    <item>
      <title>There’s a Tool for That: 13 Essential Tools for the Ninja Web Developer</title>
      <description>&lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_20.sflb"&gt;&lt;img style="display: inline; background-image: none; float: right; border: 0px solid;" title="image" alt="image" src="http://blogs.telerik.com/Libraries/Joshua_Holt_s_Library/Weapons-last.sflb" width="244" height="195" /&gt;&lt;/a&gt;When I am not hacking code, I can usually be found tinkering with cars.&amp;nbsp; I have been working on cars for a long time, and have acquired quite a collection of tools along the way.&amp;nbsp; It&amp;rsquo;s safe to say I &lt;em&gt;&lt;strong&gt;love&lt;/strong&gt;&lt;/em&gt; tools much to my fianc&amp;eacute;e&amp;rsquo;s dismay. =)&amp;nbsp;&amp;nbsp; In this blog I highlight a few tools I find useful for web development, and best of all, almost all of them are completely free!&lt;/p&gt; &lt;h2&gt;General Tools&lt;/h2&gt; &lt;blockquote&gt; &lt;h4&gt;&lt;a href="http://fiddler2.com/fiddler2/" target="_blank"&gt;Fiddler&lt;/a&gt;&lt;/h4&gt; &lt;p&gt;Fiddler is one of the best HTTP debugging tools available today. It can be used any time you want to capture &lt;em&gt;all &lt;/em&gt;HTTP traffic between your computer, and the internet. In addition, it can be used to create, replay, inspect, and tinker with any HTTP request.&amp;nbsp; Actually Fiddler has way too many capabilities to list here!&amp;nbsp; Check out &lt;a href="http://fiddler2.com/Fiddler/help/video/default.asp" target="_blank"&gt;these getting started videos&lt;/a&gt; for more information.&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;General Browser Tools &amp;amp; Plugins&lt;/h2&gt; &lt;blockquote&gt; &lt;h3&gt;Client-Side Debugging and Inspection&lt;/h3&gt; &lt;p&gt;It amazes me how many developers still don&amp;rsquo;t know about the great tools available for working with HTML/JavaScript/Page Resource in the browser.&amp;nbsp; Most of the tools listed below make it easy to see all &lt;strong&gt;KINDS&lt;/strong&gt; of information about the current page.&amp;nbsp; In addition, all of them have a built in JavaScript debugger, and profiler, to help with JavaScript development!&amp;nbsp; IF YOU ARE NOT USING ONE OF THESE TOOLS YOU &lt;strong&gt;ARE&lt;/strong&gt; WASTING TIME!&amp;nbsp; &lt;/p&gt; &lt;h4&gt;&lt;a href="http://getfirebug.com/" target="_blank"&gt;Firebug&lt;/a&gt; &amp;ndash; Firefox&lt;/h4&gt; &lt;p&gt;When I was introduced to Firebug web development went from a dark stormy night, to a blissful summer afternoon!&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;h4&gt;&lt;a href="https://developers.google.com/chrome-developer-tools/docs/overview" target="_blank"&gt;Chrome Developer Tools&lt;/a&gt; &amp;ndash; Built INTO Chrome&lt;/h4&gt; &lt;p&gt;The Chrome developer tools are similar to Firebug; however I prefer debugging JavaScript in the Chrome tools.&amp;nbsp; &lt;/p&gt; &lt;h4&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd565628(v=vs.85).aspx" target="_blank"&gt;F12 Developer Tools&lt;/a&gt; &amp;ndash; Built INTO IE since IE8&lt;/h4&gt; &lt;p&gt;I first used the IE developer tools in IE7 when it was a separate download.&amp;nbsp; Back then they were helpful, but nothing amazing.&amp;nbsp; I tend to only use F12 Developer Tools &lt;em&gt;when debugging IE problems&lt;/em&gt;.&amp;nbsp; That said they are better than nothing, and I look forward to seeing what comes with IE10.&lt;/p&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;h3&gt;Window Resizers&lt;/h3&gt; &lt;p&gt;While developing the UI for a web application it is often helpful to look at the site in a variety of resolutions.&amp;nbsp; These tools allow you to do just that!&amp;nbsp; &lt;/p&gt; &lt;h4&gt;Resize Window &amp;ndash; Chrome&lt;/h4&gt; &lt;p&gt;Resize window sits right next to the chrome address bar making it 2 clicks to change the resolution:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_6.sflb"&gt;&lt;img style="margin: 0px; display: inline; background-image: none; border: 0px solid;" title="image" alt="image" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_thumb_2.sflb" width="126" height="244" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Out of the box it provides a few presets, but you can add as many as you want:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_4.sflb"&gt;&lt;img style="margin: 0px; display: inline; background-image: none; border: 0px solid;" title="image" alt="image" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_thumb_1.sflb" width="195" height="244" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The cool part about this resizer is it&amp;rsquo;s ability to resize the window including or excluding the browser chrome, which is very helpful for previewing sites targeted for mobile devices.&lt;/p&gt; &lt;h4&gt;Built into IE Developer Tools &lt;/h4&gt; &lt;p&gt;This is one feature the IE developer tools provide out of the box that none of the others do:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_8.sflb"&gt;&lt;img style="margin: 0px; display: inline; background-image: none; border: 0px solid;" title="image" alt="image" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_thumb_3.sflb" width="244" height="84" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The IE developer tools are only capable of resizing the entire window, which means the view port is actually smaller than the target size.&amp;nbsp; &lt;/p&gt; &lt;h4&gt;About Firefox -&lt;/h4&gt; &lt;p&gt;I have never found a good window resizer for Firefox.&amp;nbsp; If you know of one I would love to hear about it!&lt;/p&gt; &lt;h3&gt;Form Tampering&lt;/h3&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Sometimes you need to send bogus data in a request to test server validation, however; it might not be easy to do because you have some really &lt;em&gt;awesome&lt;/em&gt; client validation happening.&amp;nbsp; &lt;em&gt;(Note: Proper test coverage would help here, but that&amp;rsquo;s a whole &amp;lsquo;nother thing&amp;nbsp; =)).&lt;/em&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;In these cases I tend to use one of these tools to intercept the request and tweak it:&lt;/p&gt; &lt;h4&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/tamper-data/" target="_blank"&gt;TamperData&lt;/a&gt; &amp;ndash; Firefox&lt;/h4&gt; &lt;p&gt;TamperData actually captures and displays all traffic passing through Firefox.&amp;nbsp; Clicking &lt;strong&gt;Start Tamper&lt;/strong&gt;, and submitting a form, displays the dialog below allowing you to customize almost everything about the request:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_2.sflb"&gt;&lt;img style="display: inline; background-image: none; border: 0px solid;" title="image" alt="image" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_thumb.sflb" width="244" height="140" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;h4&gt;&lt;a href="http://www.bayden.com/tamperie/" target="_blank"&gt;TamperIE&lt;/a&gt; - IE&lt;/h4&gt; &lt;p&gt;This is the first form tampering tool I ever used.&amp;nbsp; It&amp;rsquo;s very simple and effective.&amp;nbsp; It can sometimes get annoying as it pops up on &lt;em&gt;every&lt;/em&gt; POST when it is enabled; so make sure to disable it when you don&amp;rsquo;t need it!&lt;/p&gt; &lt;h4&gt;About Chrome &amp;ndash; &lt;/h4&gt; &lt;p&gt;There is not a tool like this available yet for chrome surprisingly. The reason is due to API limitations in Chrome. However, the Chrome team &lt;a href="http://code.google.com/chrome/extensions/trunk/webRequest.html" target="_blank"&gt;recently added the needed hooks&lt;/a&gt; to make such a plugin possible, so stay on the look out!&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;Image Tools&lt;/h2&gt; &lt;blockquote&gt; &lt;h3&gt;&lt;a href="http://css-sprit.es/" target="_blank"&gt;CSS Sprites&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;This site is by far the best sprite builder I have used.&amp;nbsp; I like it because not only does it combine the images, but it will offer to create a rollover version using sepia, desaturation, and a few other options.&amp;nbsp; In addition, it&amp;nbsp; will spit out the CSS or &lt;strong&gt;SASS&lt;/strong&gt; for the sprite sheet, and provide example usage!&amp;nbsp; Saves tons of time!&lt;/p&gt; &lt;p&gt;Example sprite sheet, as you can see I chose to have it create a desaturated rollover effect (bottom row):&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_12.sflb"&gt;&lt;img style="margin: 0px; display: inline; background-image: none; border: 0px solid;" title="image" alt="image" src="http://blogs.telerik.com/Libraries/MetaBlogLib/Windows-Live-Writer-Web-Development-Tools-I-Could-Never-Live_DA28-image_thumb_5.sflb" width="148" height="36" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;ASP.Net Specific &lt;/h2&gt; &lt;blockquote&gt; &lt;h3&gt;&lt;a href="http://miniprofiler.com/" target="_blank"&gt;MiniProfiler&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;MiniProfiler is a lightweight profiling tool allowing developers to profile server side methods, and ADO.NET calls.&amp;nbsp; Results are shown client side as you browse the site making it extremely easy to identify slow operations. It is extremely lightweight; so no need to worry about profiling &lt;strong&gt;production&lt;/strong&gt; sites.&amp;nbsp; In fact, it was created by the &lt;a href="http://www.stackoverflow.com" target="_blank"&gt;StackOverflow&lt;/a&gt; guys and they run it &lt;strong&gt;24/7&lt;/strong&gt; to monitor the &lt;a href="http://stackexchange.com/" target="_blank"&gt;StackExchange&lt;/a&gt; sites.&amp;nbsp; &lt;a href="http://www.hanselman.com" target="_blank"&gt;Scott Hanselman&lt;/a&gt; created a great guide available &lt;a href="http://www.hanselman.com/blog/NuGetPackageOfTheWeek9ASPNETMiniProfilerFromStackExchangeRocksYourWorld.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;h3&gt;&lt;a href="http://getglimpse.com" target="_blank"&gt;Glimpse&lt;/a&gt;&lt;/h3&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Glimpse gives developers a client side &lt;em&gt;glimpse&lt;/em&gt; of what is happening server side. Glimpse captures metadata about each request, and sends the data to a client side interface.&amp;nbsp; Meaning you can use it (much like MiniProfiler) as you browse your site.&amp;nbsp; In addition, Glimpse makes it easy to create plugins, meaning it&amp;rsquo;s capabilities are only limited by your imagination!&amp;nbsp; Make sure to check out the quick start guide &lt;a href="http://getglimpse.com/About/QuickStart" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;MVC Specific Tools&lt;/h2&gt; &lt;blockquote&gt; &lt;h3&gt;&lt;a href="https://github.com/telerik/razor-converter" target="_blank"&gt;Razor Converter&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;If you are looking to upgrade older ASP.NET MVC projects to Razor, but dreading the conversion process, know that there is hope! Telerik created this &lt;strong&gt;awesome &lt;/strong&gt;tool to convert all the views in a project from the web forms view engine to razor!&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;Web Forms Specific Tools&lt;/h2&gt; &lt;h3&gt;View State Inspectors&lt;/h3&gt; &lt;p&gt;These tools are pretty self-explanatory, use them when you want to inspect a page&amp;rsquo;s view state! =)&lt;/p&gt; &lt;h4&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/aspnet-viewstate-viewer/" target="_blank"&gt;ViewState Viewer&lt;/a&gt; &amp;ndash; Firefox&lt;/h4&gt; &lt;h4&gt;&lt;a href="https://chrome.google.com/webstore/detail/mhfgbepafobiainjedlonoanghiedllg" target="_blank"&gt;Viewstate Indicator&lt;/a&gt; &amp;ndash; Chrome&lt;/h4&gt; &lt;h2&gt;VS Specific Tools&lt;/h2&gt; &lt;blockquote&gt; &lt;h3&gt;&lt;a href="http://chirpy.codeplex.com/" target="_blank"&gt;Chirpy&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;In my &lt;a href="http://blogs.telerik.com/blogs/posts/12-04-27/time-saving-features-for-mvc-developers.aspx" target="_blank"&gt;last blog&lt;/a&gt; I discussed some awesome features in Telerik&amp;rsquo;s MVC Extensions, specifically the web asset handlers.&amp;nbsp; I received a few questions about how I handle minifying CSS and JavaScript files in VS.&amp;nbsp; As of late I have been using Chirpy.&amp;nbsp; Chirpy handles CSS, JS, CoffeeScript, dotLess, and more!&amp;nbsp; It can handle minification using YUI, uglify.js, Google Closure,&amp;nbsp; or the Ajax minifier. In addition, it can validate JavaScript, CSS, and dotLess files.&amp;nbsp; All in all, I find to be an extremely useful add-in for Visual Studio.&amp;nbsp; There is a great guide about the features available &lt;a href="http://www.weirdlover.com/2010/07/18/chirpy-attains-godlike-abilities-in-version-1-0-0-4/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt; &lt;blockquote&gt; &lt;h3&gt;&lt;a href="http://www.telerik.com/products/justcode.aspx" target="_blank"&gt;JustCode&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;Telerik&amp;rsquo;s JustCode had built in code analysis and refactoring features for JavaScript and ASP.NET since day one, making it an indispensable tool for development.&amp;nbsp; In one of the recent releases the JustCode team added CSS analysis and refactoring features, making it even &lt;em&gt;more&lt;/em&gt; awesome!&amp;nbsp; You can download a trial &lt;a href="http://www.telerik.com/download-trial-file.aspx?pid=717"&gt;here&lt;/a&gt;!&amp;nbsp;&lt;/p&gt; &lt;/blockquote&gt; &lt;h2&gt;Bottom Line&lt;/h2&gt; &lt;p&gt;The above list covers just &lt;em&gt;some&lt;/em&gt; of the great tools I use when doing web development.&amp;nbsp; There are tons of other tools out there though, and I would love to hear about your favorite tool!&lt;/p&gt; &lt;p&gt;Happy Coding!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet-ajax.aspx" target="blank"&gt;&lt;img src="/Libraries/Carl_Bergenhem_s_Library/AJAX_blogs_banner.sflb" alt="Download the RadControls trial today!" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a style="display: none;" href="http://www.codeproject.com" rel="tag" target="blank"&gt;CodeProject&lt;/a&gt;&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2&gt;About the author&lt;/h2&gt; &lt;img alt="Joshua Holt" src="http://blogs.telerik.com/Libraries/Joshua_Holt_s_Library/josh.sflb" class="photo" /&gt; &lt;h3 class="fn"&gt;Joshua Holt&lt;/h3&gt; &lt;p&gt;
Joshua Holt works as a Developer Support Specialist at Telerik focusing on &lt;a href="http://www.telerik.com/products/aspnet-ajax.aspx" target="blank"&gt;ASP.NET&lt;/a&gt;, but tends to dabble in all of the products. Part of his role at Telerik is to work closely with the team, and help developers leverage the Telerik product line up. In his free time he likes to tinker with spatial data visualization projects, and chase clouds. Prior to working at Telerik, Joshua worked as a consultant for several Fortune 500 companies in the oil and gas industry.
&lt;/p&gt; &lt;p class="twit"&gt;&lt;a href="https://twitter.com/#!/jholt456" target="_blank"&gt;@jholt456&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/8Wsk2L62BDc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/8Wsk2L62BDc/there-s-a-tool-for-that-13-essential-tools-for-the-ninja-web-developer.aspx</link>
      <author>ASP.NET AJAX Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-08/there-s-a-tool-for-that-13-essential-tools-for-the-ninja-web-developer.aspx</comments>
      <guid isPermaLink="false">06a14395-c927-43b0-959c-5ad1c3c6638f</guid>
      <pubDate>Tue, 08 May 2012 14:49:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-08/there-s-a-tool-for-that-13-essential-tools-for-the-ninja-web-developer.aspx</feedburner:origLink></item>
    <item>
      <title>XAMLflix Introduces RadPropertyGrid</title>
      <description>&lt;p&gt;Hello everyone and welcome back to &lt;b&gt;&lt;i&gt;XAMLflix&lt;/i&gt;&lt;/b&gt; with RadPropertyGrid for Silverlight and WPF. I hope you have been enjoying the series as last week we took a look at &lt;a href="http://blogs.telerik.com/michaelcrump/posts/12-05-01/xamlflix-introduces-raddraganddrop.aspx"&gt;RadDragAndDrop&lt;/a&gt; and &lt;a href="http://blogs.telerik.com/jesseliberty/posts/12-05-03/radmaskedinput.aspx"&gt;RadMaskedInput&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What is &lt;b&gt;&lt;i&gt;XAMLflix&lt;/i&gt;&lt;/b&gt; you might ask? Well, it is Telerik’s way of teaching you how to use both new and existing controls from Telerik’s XAML suite. Each and every Thursday, we will provide a fresh batch of videos and sample projects highlighting a different control. Since our Silverlight and WPF share a common codebase and API, you only have to learn how to use these controls once! You can simply copy and paste the code between frameworks.&lt;/p&gt;  &lt;p&gt;Be sure to check out &lt;a href="http://www.telerik.com/xamlflix.aspx"&gt;&lt;strong&gt;www.telerik.com/xamlflix&lt;/strong&gt;&lt;/a&gt; for all the videos!     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Meet RadPropertyGrid&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;RadPropertyGrid &lt;/b&gt;provides an easy and versatile approach to processing data objects' properties. It can be bound to an item with just a single line of code and you may start exploring or editing its properties. The property editor controls are auto generated - text fields for string properties, CheckBoxes for Boolean, DateTimePickers for dates, and so forth.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;a href="http://tv.telerik.com/watch/silverlight/getting-started-with-radpropertygrid-"&gt;Getting Started with RadPropertyGrid&lt;/a&gt;&lt;/b&gt; – In this video, we will see how easy it is to bind RadPropertyGrid to a data item then bind it to an existing control such as RadButton. We will also discuss setting up PropertyDefinitions which will allow us to customize the data displayed inside the RadPropertyGrid. (&lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/RadPropertyGridGSTTv.sflb?download=true"&gt;Download the Project&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;a href="http://tv.telerik.com/watch/silverlight/working-with-nested-properties-in-radpropertygrid-"&gt;Working with Nested Properties in RadPropertyGrid&lt;/a&gt; – &lt;/b&gt;In this video, we will explore how to processing nested properties in a tree-like visual structure within RadPropertyGrid.&amp;#160; (&lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/RadPropertyGridNestedTTv.sflb?download=true"&gt;Download the Project&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;a href="http://tv.telerik.com/watch/silverlight/edit-row-details-radgridview-with-radpropertygrid-"&gt;Edit Row Details of RadGridView with RadPropertyGrid&lt;/a&gt; – &lt;/b&gt;In this video, we are going to edit the Row Details of RadGridView with RadPropertyGrid. (&lt;a href="http://blogs.telerik.com/Libraries/MichaelCrump/RadPropertyGridGridViewTTV.sflb?download=true"&gt;Download the Project&lt;/a&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Wrap-Up&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Thanks for reading (and watching) and if you have any questions or comments then please let me know. Also, keep watching the &lt;a href="http://www.telerik.com/products/xaml/xamlflix.aspx"&gt;XAMLflix&lt;/a&gt; page as we are releasing two new videos series each and every week. You should also go back and watch any videos that you may have missed.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.twitter.com/mbcrump"&gt;@mbcrump&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;img style="border-bottom: 0px solid; border-left: 0px solid; width: 600px; height: 162px; border-top: 0px solid; border-right: 0px solid" alt="XAMLflix Download RadControls for Silverlight &amp;amp; WPF" src="/Libraries/Silverlight_team/XAMLflix-CTA-banner-blog.sflb?" usemap="#rade_img_map_1328805965142" sfref="[Libraries]63547fd2-d1d3-4c29-b2fc-19e3b8704c7f" /&gt;&lt;map id="rade_img_map_1328805965142" name="rade_img_map_1328805965142"&gt; &lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=601" shape="RECT" coords="409,66,574,106" /&gt;&lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=571" shape="RECT" coords="409,109,575,150" /&gt;&lt;/map&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/5w4YYRyPaB0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/5w4YYRyPaB0/xamlflix-introduces-radpropertygrid.aspx</link>
      <author>Michael Crump</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-08/xamlflix-introduces-radpropertygrid.aspx</comments>
      <guid isPermaLink="false">62070c73-36c9-424a-84dd-4518229ecd23</guid>
      <pubDate>Tue, 08 May 2012 12:10:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-08/xamlflix-introduces-radpropertygrid.aspx</feedburner:origLink></item>
    <item>
      <title>Upcoming Events : Speaking and Attending</title>
      <description>&lt;p&gt;Hello Everyone,&lt;/p&gt;  &lt;p&gt;From time to time, I sit down and write out all the events that I will be speaking at or attending in hopes of connecting with other developers who may be attending these events. I’ll be at these events representing &lt;a href="http://www.telerik.com"&gt;Telerik&lt;/a&gt;, so feel free to stop by the booth and ask say Hi.&amp;#160; I have several different talks lined-up from Windows 8, Silverlight, OData and Windows Phone 7! That’s a lot of XAML if you ask me!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Rocky Mountain Trifecta – Colorado - May 19th, 2012&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/image_7A8DA90D.sflb"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.telerik.com/Libraries/MetaBlogLib/image_thumb_09DCF71E.sflb" width="255" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have two sessions at this event: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://rmtechtrifecta.com/#sessions/82"&gt;Get Started Buliding Metro Applications for Windows 8 using XAML/C#&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://rmtechtrifecta.com/#sessions/83"&gt;10 Things a Silverlight Developer Should Know when Building A Metro Application&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Developer Camp – Georgia – May 23rd, 2012&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The only speakers at this event are Microsoft employees, so I will only be attending. If you want to talk Telerik products then send me a tweet/email and we will link up.    &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TechEd – Florida – June 11th – 14th, 2012&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.telerik.com/Libraries/MetaBlogLib/image_61798AFD.sflb"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.telerik.com/Libraries/MetaBlogLib/image_thumb_36D99621.sflb" width="240" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will not be speaking at this event, but will be in the Telerik booth showing off all of our XAML products.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;CodeStock – Tennessee – June 15/16, 2012&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.codestock.org/Marketing/codestock_lowres.png" width="254" height="133" /&gt;&lt;/p&gt;  &lt;p&gt;I have two sessions at this event: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codestock.org/Sessions/getting-your-feet-wet-with-odata-in-silverlight-5-and-wp7-mango.aspx"&gt;Getting your Feet Wet with OData in Silverlight 5 and WP7 Mango&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codestock.org/Sessions/get-started-buliding-metro-applications-for-windows-8-using-xaml-c-.aspx"&gt;Get Started Buliding Metro Applications for Windows 8 using XAML/C#&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;That Conference – Wisconsin – August 13th-15th 2012&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://thatconference.com/Images/SiteBadges/220w.jpg" width="254" height="173" /&gt;&lt;/p&gt;  &lt;p&gt;I have one sessions at this event:    &lt;br /&gt;&lt;/p&gt; &lt;a href="http://thatconference.com/sessions#other"&gt;Get Started Buliding Metro Applications for Windows 8 using XAML/C#&lt;/a&gt;   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Wrap-up&lt;/h3&gt;  &lt;p&gt;If you are attending any of the events then please come up and introduce yourself. I really enjoy meeting new people and hopefully we can sit down and talk tech!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/Twi7hWLtrUE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/Twi7hWLtrUE/upcoming-events-speaking-and-attending.aspx</link>
      <author>Michael Crump</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-07/upcoming-events-speaking-and-attending.aspx</comments>
      <guid isPermaLink="false">653bc20d-7eeb-4880-bdc5-673284cdecf2</guid>
      <pubDate>Tue, 08 May 2012 12:00:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-07/upcoming-events-speaking-and-attending.aspx</feedburner:origLink></item>
    <item>
      <title>Another Awesome VS11 Feature - WAI-ARIA Support</title>
      <description>&lt;h1&gt;Taking a Step Back &amp;ndash; What is Accessibility?&lt;/h1&gt; &lt;p&gt;Accessibility is always &amp;nbsp;a large concern when creating applications. Whether these are meant for the web, desktop machines, or even mobile devices, accessibility is a huge factor. I have often run into scenarios where developers are not even aware of accessibility concerns, or decide to leave it as one of those &amp;ldquo;oh, I&amp;rsquo;ll get to it later&amp;rdquo; tasks on their TODO list. Some of you might even be asking yourself what accessibility actually is. Well, when I talk about accessibility I&amp;rsquo;m referring to the ability for your application to function for people with disabilities so they can still navigate and interact with your application.&lt;/p&gt; &lt;p&gt;If you haven&amp;rsquo;t taken a look at the accessibility of your applications you should really dedicate some time to ensure that your website complies with modern day accessibility guidelines. Some of the more popular ones are &lt;a href="http://www.section508.gov/" title="Section 508"&gt;Section 508&lt;/a&gt; (used a lot with government organizations) and the &lt;a href="http://www.w3.org/TR/WCAG/" title="Web Content Accessibility Guidelines (WCAG) 2.0"&gt;Web Content Accessibility Guidelines (WCAG) 2.0&lt;/a&gt;. Here at Telerik we pride ourselves in complying with these two, as can be seen on &lt;a href="http://www.telerik.com/products/aspnet-ajax/getting-started/tech-sheets/accessibility-support.aspx" title="this page"&gt;this page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Now today I want to talk about another set of guidelines for accessibility, WAI-ARIA (Web Accessibility Initiative &amp;ndash; Accessible Rich Internet Applications). This specification goes over how to increase accessibility of web pages where dynamic content and user interface components have been implemented using Ajax, HTML, CSS, JavaScript and other technologies. Essentially a guide on how to ensure that today&amp;rsquo;s websites can be as accessible as possible.&lt;/p&gt; &lt;p&gt;Along with introducing WAI-ARIA I want to take a look at how VS11 can help us with developing more compliant site, as well as what we here at Telerik are doing in this area.&lt;/p&gt; &lt;p&gt;If you want to take advantage of the cool stuff that Visual Studio 11 is doing with WAI-ARIA I recommend that you download the VS11 beta, which you can find by clicking on the following image :)&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/visualstudio/11/en-us/downloads"&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/Get-VS-11-Beta.sflb" alt="Get the Visual Studio 11 Beta!" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;What is WAI-ARIA?&lt;/h1&gt; &lt;p&gt;So, what is this whole WAI-ARIA business? Well, as I mentioned above WAI-ARIA is a set of specifications on how to increase the accessibility of modern day web applications that deal with &amp;ldquo;dynamic content and advanced user interface controls developed with Ajax, HTML, JavaScript, and related technologies&amp;rdquo; (quoting the official &lt;a href="http://www.w3.org/WAI/intro/aria" title="WAI-ARIA official page"&gt;WAI-ARIA page&lt;/a&gt; here). This comes from the &lt;a href="http://www.w3.org/WAI/" title="Web Accessibility Initiative (WAI)"&gt;Web Accessibility Initiative (WAI)&lt;/a&gt; of the &lt;a href="http://www.w3.org/" title="W3C"&gt;W3C&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;What it boils down to is that ARIA is a set of additional semantic tags and attributes that describe and identify features for user interaction, how they relate to each other, and their current state. Often times this boils down to their roles, states, and functionality. Think of controls such as menus, trees, and grids. All of these are pretty sophisticated controls that have a lot of dynamic-ness surrounding them.&lt;/p&gt; &lt;p&gt;Although it is a fairly new standard it still has gained support across most of the major browsers. To name some, IE8+, FireFox 3+ and Chrome 4+ (although in Chrome this is still partially supported) all support the standard (although some a bit more than others). Support also increases with each new version of these browsers. For detailed list of what browsers support WAI-ARIA you can check out the caniuse page &lt;a href="http://caniuse.com/wai-aria" title="caniuse.com WAI-ARIA check"&gt;right here&lt;/a&gt;.&lt;/p&gt; &lt;h1&gt;Why is WAI-ARIA Important?&lt;/h1&gt; &lt;p&gt;All the good stuff you&amp;rsquo;re using today to get the awesome interactions and behavior out of your site takes heavy use of the technologies that WAI-ARIA covers; HTML, JavaScript and Ajax. Implementing these can often lead to confusion within the technologies and applications that are used by people with disabilities, with screen readers being the most common types of applications used.&lt;/p&gt; &lt;p&gt;These screen readers attempt to read the content of what is on the user&amp;rsquo;s screen out loud to the user, by parsing through what the browser is displaying and presenting that to the user. Remember that application you wrote that had ridiculously complicated HTML, followed by a couple of thousand lines of JavaScript to deal with interaction? Imagine an application attempting to parse through that and tell a human at the other end what it&amp;rsquo;s seeing, in terms that are understandable. All of a sudden that paragraph that comes flying in from the left and constantly moves around the screen seems a little bit over the top, right? Well, it probably should feel over the top either way ;)&lt;/p&gt; &lt;p&gt;WAI-ARIA is here to make it easier for people with disabilities to access your website. This means that not only can you provide your content to everyone, you also equalize the playing field of the awesome place that is the internet.&lt;/p&gt; &lt;h1&gt;VS11 and WAI-ARIA&lt;/h1&gt; &lt;p&gt;So, how does Visual Studio 11 help you with ensuring that your application is more WAI-ARIA compliant? Well, it makes it ridiculously easy to include it by using intellisense of course! I personally love intellisense because I constantly doubt if I spelled something correctly. Plus, if I&amp;rsquo;m unsure of what&amp;rsquo;s available to me it&amp;rsquo;s very easy to scroll through the options that I have and find which one fits the best for me.&lt;/p&gt; &lt;h2&gt;Roles&lt;/h2&gt; &lt;p&gt;Let&amp;rsquo;s take a quick look at how I would go about defining a menu in HTML and how WAI-ARIA can get implemented:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div class="reCodeBlock" style="border:1px solid #7f9db9;border-image: initial; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;div&lt;/code&gt; &lt;code style="color: #000000;"&gt;id=&amp;rdquo;menu&amp;rdquo;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 9px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ul&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 18px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt; &lt;code style="color: #000000;"&gt;class=&amp;rdquo;menuItem&amp;rdquo;&amp;gt;Menu Item 1&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 18px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt; &lt;code style="color: #000000;"&gt;class=&amp;rdquo;menuItem&amp;rdquo;&amp;gt;Menu Item 2&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 9px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ul&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;div&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;The example above assumes I have some awesome CSS to go along with it to make these items menu-like. Now that I think about it, let&amp;rsquo;s make this HTML5 compliant :)&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div class="reCodeBlock" style="border:1px solid #7f9db9;border-image: initial; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;nav&lt;/code&gt; &lt;code style="color: #000000;"&gt;id=&amp;rdquo;menu&amp;rdquo;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 9px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ul&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 18px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt; &lt;code style="color: #000000;"&gt;class=&amp;rdquo;menuItem&amp;rdquo;&amp;gt;Menu Item 1&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 18px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt; &lt;code style="color: #000000;"&gt;class=&amp;rdquo;menuItem&amp;rdquo;&amp;gt;Menu Item 2&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 9px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ul&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;nav&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;&lt;em&gt;Side-note: Always try to find a good excuse for working in HTML5!&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Now if a screen reader were to go through here and see this, how does it really know that this is a menu? Sure, &amp;ldquo;Menu Item 1&amp;rdquo; and &amp;ldquo;Menu Item 2&amp;rdquo; and even the CSS classes and ID attribute gives it away, but I could be very sneaky and name this something that the screen reader&amp;nbsp;wouldn't&amp;nbsp;parse as a menu. You could end up with some very odd statements being read back to the user. This is where WAI-ARIA comes in and solves the issue for us. Let&amp;rsquo;s WAI-ARIA-ize (newly coined term right there!) the code above:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div class="reCodeBlock" style="border:1px solid #7f9db9;border-image: initial; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;nav&lt;/code&gt; &lt;code style="color: #000000;"&gt;role=&amp;rdquo;menu&amp;rdquo;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 9px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ul&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 18px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt; &lt;code style="color: #000000;"&gt;role=&amp;rdquo;menuitem&amp;rdquo;&amp;gt;Menu Item 1&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 18px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt; &lt;code style="color: #000000;"&gt;role=&amp;rdquo;menuitem&amp;rdquo;&amp;gt;Menu Item 2&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;li&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;span style="margin-left: 9px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;ul&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;nav&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Imagine you were to write a screen reader. Wouldn&amp;rsquo;t this latest code snippet just make your life so much easier? Now we know that the parent nav element is supposed to be a menu, and the list items we have are menu items! Now how did VS11 help me with this? Intellisense! Take a look at this screenshot to see how helpful it was for me:&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/waiaria_001.sflb" alt="WAI-ARIA role intellisense in VS11" /&gt;&lt;/p&gt; &lt;p&gt;Right after I typed &amp;ldquo;role&amp;rdquo; and hit the &amp;ldquo;=&amp;rdquo; key I immediately got a list of available roles.&lt;/p&gt; &lt;h2&gt;States and aria-*&lt;/h2&gt; &lt;p&gt;So that was roles, but what about various states? When I talk about states I literally mean the state of the element. If, for example, we were creating a tree view,&amp;nbsp;wouldn't&amp;nbsp;we want to know if the current node is expanded or collapsed? This is where ARIA states come in to play. These are dynamic properties, so they change along with the state of the element. These are often handled by using attributes that are prefixed with &amp;ldquo;aria-&amp;ldquo;. VS11 is nice enough to allow us to have these available in intellisense! Let&amp;rsquo;s take a quick look at an example of how to use some of these attributes.&lt;/p&gt; &lt;p&gt;What I&amp;rsquo;m going to do is add a very simple aria-* tag to an input, namely aria-required. This labels the particular element as a required field for all of the screen readers out there. Now, you might be thinking &amp;ldquo;We already have that! Just add the error message or a &amp;lsquo;*&amp;rsquo; next to the element!&amp;rdquo; Well, I&amp;rsquo;ve seen plenty of examples of some neat an intuitive ways to display required field messages, but they&amp;rsquo;re not always that easy to see for screen readers. For example, what about just bolding the label that is tied to an input field? Pretty easy to spot by a human, but difficult to parse through with a screen reader. The aria-required tag makes it super easy to say that this field is indeed required. So, I&amp;rsquo;ll just start off by creating a label and an input:&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;div class="reCodeBlock" style="border:1px solid #7f9db9;border-image: initial; overflow-y: auto;"&gt; &lt;div style="background-color: #ffffff;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;label&lt;/code&gt; &lt;code style="color: #000000;"&gt;id=&amp;rdquo;firstLabel&amp;rdquo;&amp;gt;First Name&amp;lt;/&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;label&lt;/code&gt;&lt;code style="color: #000000;"&gt;&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="background-color: #f8f8f8;"&gt;&lt;span style="margin-left: 0px !important;"&gt;&lt;code style="color: #000000;"&gt;&amp;lt;&lt;/code&gt;&lt;code style="color: #006699; font-weight: bold;"&gt;input&lt;/code&gt; &lt;code style="color: #000000;"&gt;id=&amp;rdquo;firstName&amp;rdquo; type=&amp;rdquo;text&amp;rdquo; /&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;p&gt;Now if I want to add the appropriate WAI-ARIA tag to this I can of course just look up the various ARIA attributes and their accepted settings over at &lt;a href="http://dev.w3.org/html5/markup/aria/aria.html#aria-attrs-all" title="dev.w3.org"&gt;dev.w3.org&lt;/a&gt;, or I can use Visual Studio 11. As you can see in this screenshot, when I type out aria- I get a whole list of potential attributes I can set just via intellisense&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/waiaria_002.sflb" alt="WAI-ARIA attribute support VS11" /&gt;&lt;/p&gt; &lt;p&gt;VS11&amp;rsquo;s intellisene even provides us with the appropriate options available to us&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/waiaria_003.sflb" alt="WAI-ARIA attribute support VS11 options" /&gt;&lt;/p&gt; &lt;p&gt;It even works with ARIA attributes that has multiple options&lt;/p&gt; &lt;p&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/waiaria_004.sflb" alt="WAI-ARIA support in VS11 more options" /&gt;&lt;/p&gt; &lt;p&gt;Pretty neat, eh? Useful as well! With it being this easy to add accessibility to your applications there really shouldn&amp;rsquo;t be anything stopping you from implementing this!&lt;/p&gt; &lt;h1&gt;Telerik and WAI-ARIA&lt;/h1&gt; &lt;p&gt;Because I&amp;rsquo;m proud of Telerik&amp;rsquo;s efforts in this area, I wanted to write a quick note about the WAI-ARIA support that we offer in &lt;a href="http://www.telerik.com/products/aspnet-ajax.aspx" title="Telerik's controls for ASP.NET AJAX"&gt;Telerik's controls for ASP.NET AJAX&lt;/a&gt;. Although not all controls currently offer this support, we do have it enabled in some of our bigger ones like &lt;a href="http://www.telerik.com/products/aspnet-ajax/grid.aspx" title="Grid "&gt;Grid &lt;/a&gt;and &lt;a href="http://www.telerik.com/products/aspnet-ajax/window.aspx" title="Window"&gt;Window&lt;/a&gt;. This list is also constantly expanding, with all recent releases expanding on this availability.&lt;/p&gt; &lt;p&gt;How do you take use of this in the supported controls? Well there should be a simple property called &lt;strong&gt;EnableAriaSupport &lt;/strong&gt;which you should just set to true. This will allow the control to go from the &amp;ldquo;regular&amp;rdquo; mode into a WAI-ARIA compliant mode that renders ARIA roles and states.&lt;/p&gt; &lt;p&gt;For an example of this support, and the difference it makes in terms of the HTML, you can check out this &lt;a href="http://blogs.telerik.com/blogs/posts/11-06-29/wai-aria-support-for-radcontrols-for-asp-net-ajax.aspx" title="blog post on Telerik WAI-ARIA support"&gt;blog post&lt;/a&gt; which goes into further details about the RadGrid&amp;rsquo;s WAI-ARIA support.&lt;/p&gt; &lt;h1&gt;Accessibility-rize Today!&lt;/h1&gt; &lt;p&gt;I just love making up words! Anyway, hopefully I was able to enlighten you a bit on what WAI-ARIA is, and why it is important to think about when creating your new application, or going through and modernizing an old project. With deeper browser support happening with each release of our favorite browsers, and tools like VS11 to help us out when we either forget to implement it, or what roles and states exist, it becomes even easier to make an amazing web application with the latest and greatest standard, while still allowing all your visitors to see the content.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.telerik.com/products/aspnet-ajax.aspx"&gt;&lt;img src="http://blogs.telerik.com:80//Libraries/Carl_Bergenhem_s_Library/AJAX_blogs_banner.sflb" alt="Try the Telerik RadControls Today!" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;div class="vcard" id="author"&gt; &lt;h2&gt;About the author&lt;/h2&gt; &lt;img alt="Carl Bergenhem" src="http://blogs.telerik.com/Libraries/ASP_NET_MVC/CarlBergenhem.sflb" class="photo" /&gt; &lt;h3 class="fn"&gt;Carl Bergenhem&lt;/h3&gt; &lt;p&gt;
Carl Bergenhem is an Enterprise Solutions Consultant at Telerik specializing in the ASP.NET AJAX and ASP.NET MVC products. He has always been interested in web development and has played around with various web technologies since he was a child. In his free time Carl enjoys soccer, running and playing his guitar.
&lt;/p&gt; &lt;p class="twit"&gt;&lt;a href="http://www.twitter.com/carlbergenhem"&gt;@carlbergenhem&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/0WCJWMp-HgY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/0WCJWMp-HgY/another-awesome-vs11-feature---wai-aria-support.aspx</link>
      <author>ASP.NET AJAX Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-07/another-awesome-vs11-feature---wai-aria-support.aspx</comments>
      <guid isPermaLink="false">c21562ec-0833-4092-922a-6bf208bed616</guid>
      <pubDate>Mon, 07 May 2012 17:02:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-07/another-awesome-vs11-feature---wai-aria-support.aspx</feedburner:origLink></item>
    <item>
      <title>Add the Error Diagnostics Control to Your Windows Phone App with 3 Lines of Code</title>
      <description>&lt;p&gt;Everyone in the mobile apps business needs real-time feedback about their app’s crashes. These have to be quickly fixed, so that you are not losing converted leads. Instead, these users need to be treated with the utmost attention. To get the feedback you have three ways to go:&lt;/p&gt; &lt;p&gt;1)&amp;nbsp;&amp;nbsp; &amp;nbsp;Use the error reporting procedure on App Hub, but you’ll have to wait for 3 to 4 days for the crash reports to be ready, which may result in losing some of&amp;nbsp; your users.&lt;br /&gt;
2)&amp;nbsp;&amp;nbsp; &amp;nbsp;Put some time and efforts and write the functionality yourself.&lt;br /&gt;
3)&amp;nbsp;&amp;nbsp; &amp;nbsp;Use Telerik ready-to-use Error Diagnostics control that allows the end-user to send real-time crash data.&amp;nbsp;&lt;/p&gt; &lt;p&gt;The 3rd option has two obvious advantages: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;No time is wasted writing something that already exists.&lt;/li&gt; &lt;li&gt;The time lag issue that you face with the App Hub reports is solved. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Check out this short video:&lt;/p&gt; &lt;p&gt;&lt;object width="560" height="315"&gt; &lt;param name="movie" value="http://www.youtube.com/v/iiH5cVTLQmQ?version=3&amp;amp;hl=en_US&amp;amp;rel=0"&gt; &lt;param name="allowFullScreen" value="true"&gt; &lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/iiH5cVTLQmQ?version=3&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="315" width="560"&gt;&lt;/object&gt; &lt;/p&gt; &lt;p&gt;Here are some details about the control. Implementing Telerik Error Diagnostic control in your Windows Phone app enables you to receive crash reports, get specific debug and run-time information from your end users when an issue (such as ApplicationUnhandledException) in your application is encountered. Whenever an exception occurs, a MessageBox dialog is displayed and users can send the report via e-mail.  It will only take them a few seconds and you will get tons of data about the crash helping you to resolve the problem faster. Diagnostic data include: app version, app total runs, app runs after last update, device model, navigation stack and more. Optionally a screenshot of the current application state can be provided. Developers can also add custom data when an exception has occurred and to collect runtime logs. You may even send the data anonymously with the help of Web Services as detailed in &lt;a href="http://blogs.telerik.com/valentinstoychev/posts/12-02-06/using-raddiagnostics-for-wp7-to-receive-error-reports-anonymously.aspx"&gt;this blog post&lt;/a&gt;.  If you still need help in getting up to speed with Error Diagnostics, then you can watch our Q1 2012 webinar and check out the additional resources found &lt;a href="http://blogs.telerik.com/michaelcrump/posts/12-02-21/slides-source-code-and-video-to-the-windows-phone-q1-2012-webinar-now-available.aspx"&gt;here&lt;/a&gt;.
&lt;/p&gt; &lt;p&gt;Apart from the automatic data which is provided out of the box developers can extend the component in two other ways:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Add their own custom data when the exception occurs (using the ExceptionOccured event). &lt;a href="http://www.telerik.com/help/windows-phone/diagnostics-gettingstarted.html"&gt;Read how&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Add debug data in their application while it runs. When an exception occurs this debug data is sent along with the crash data. &lt;a href="http://www.telerik.com/help/windows-phone/diagnostics-features-diagnosticdata.html"&gt;Read more&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;p&gt;And the other good news is that it only takes three lines of code to implement the functionality in your app.&lt;/p&gt; &lt;p&gt;Telerik Error Diagnostics for Windows Phone can be downloaded as part of the RadControls for Windows Phone suite. &lt;a href="http://www.telerik.com/download-trial-file.aspx?pid=777"&gt;Free trial is available here.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Share this blog post if you found it useful.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/HNnLLkfxXZ4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/HNnLLkfxXZ4/add-the-error-diagnostics-control-to-your-windows-phone-app-with-3-lines-of-code.aspx</link>
      <author>Marketing Team</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-04/add-the-error-diagnostics-control-to-your-windows-phone-app-with-3-lines-of-code.aspx</comments>
      <guid isPermaLink="false">18e206fa-db02-4204-a64a-ae7130613aea</guid>
      <pubDate>Mon, 07 May 2012 12:00:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-04/add-the-error-diagnostics-control-to-your-windows-phone-app-with-3-lines-of-code.aspx</feedburner:origLink></item>
    <item>
      <title>Telerik XAMLflix Data Visualization Webinar Wrap-up</title>
      <description>&lt;p&gt;Thank you everyone for turning out to Tuesday’s&amp;nbsp;&lt;a href="http://www.telerik.com/xamlflix.aspx" title="XAMLflix"&gt;XAMLflix&lt;/a&gt; Data Visualization webinar, featuring the RadControls for Silverlight and WPF in action.  We covered a lot of ground in this webinar, moving at a quick pace to present the wide range of Telerik Data Visualization controls with lots of hands-on coding and examples, but as those who attended can see we didn’t even have time to cover them all (yes, we do have that many first class data visualization controls in our toolbox).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;A Quick Recap&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;For anyone who may have missed the webinar, here is a quick recap to entice you to &lt;a href="http://tv.telerik.com/watch/silverlight/xamlflix-presents-telerik-data-visualization"&gt;watch the on-demand video&lt;/a&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;ChartView&lt;/strong&gt; – Exploring the designer widgets that enable you to quickly generate a Cartesian or Polar chart.  Or, if you’re brand new to RadChartView this provides a great option for seeing how the different charting elements play together.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;DataBars&lt;/strong&gt; – Quick, to-the-point visualizations that provide a bar representing a single value, multiple values, or multiple values in proportion to one another-- complete with a lightweight axis to give a better scope on your data.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Gauge&lt;/strong&gt; – Our newly redesigned Gauge is more fluid and easier to use than ever before.  Additionally, in the spirit of ChartView the new Gauge is built using an additive process, meaning you can include as many range markers and indicators as you would like.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Sparklines&lt;/strong&gt; – Similar to DataBars, the Sparklines provide mini-charts that allow you to put more meaning behind smaller groups of data.  Whether you need linear, area, scatter, column, or win-loss charts, Sparklines provide quick and lightweight visualizations that can easily be incorporated into your GridView templates.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;TimeBar&lt;/strong&gt; – When working with DateTime-based data, TimeBar provides a quick and easy way to visualize large amounts of data over time while offering built-in support for zooming, scrolling, and selection of time spans.  It works best when integrated with our Chart and features RadSparklines for visualizing data.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Timeline&lt;/strong&gt; – Another look at DateTime-based data allows you to display both point-in-time data as well as duration-based events, allowing you to visualize (complete with the all-too-familiar zooming and scrolling feature!) events in a linear fashion.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;TreeMap/PivotMap&lt;/strong&gt; – Have a large amount of data that can benefit from some visual flair?  Tree and PivotMap provide a visual representation of values using relative size, allowing you to see different values as well as offering hooks into the original data for tooltips or other visual customization.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Map&lt;/strong&gt; – We didn’t have time to cover RadMap in the webinar, but thankfully I hit upon RadMap via the XAMLflix campaign already, so fear not, there are plenty of videos and projects just waiting to deliver you Mappy goodness online already – &lt;a href="http://www.telerik.com/products/xaml/xamlflix/map.aspx#xamlflix-content" title="XAMLflix RadMap"&gt;check ‘em out&lt;/a&gt;!&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;And remember, this is just the tip of the iceberg when it comes to our RadControls for Silverlight and WPF.  But you’re in luck!  We’ve got two more webinars scheduled for the next two weeks being presented by Michael Crump and Jesse Liberty, our resident XAML Evangelists – &lt;a href="http://www.telerik.com/products/xaml/xamlflix-webinar-registration.aspx" title="XAMLflix Webinars"&gt;follow this link to register for both&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Call to Action&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;What, you mean I want you folks to do something after reading all of that?&lt;/p&gt; &lt;p&gt;Most certainly!  Telerik is a company driven by customer feedback, so in addition to the XAMLflix campaign we have a few other things in the pipeline to help you make the most of our Silverlight and WPF suites, but when it comes down to it we want to hear from you to know what kinds of resources help you to best adopt and use our controls.  So drop me a line in the comments and say “Hey Evan, it would rock if you folks could produce XYZ!” and we’ll put it in the pipeline.  Seriously, right now we are bursting at the seams with XAML Evangelism talent and we want to put it to work for our customers.&lt;/p&gt; &lt;p&gt;Now for the really good stuff –&amp;nbsp;&lt;a href="http://tv.telerik.com/watch/silverlight/xamlflix-presents-telerik-data-visualization"&gt;check out the on-demand video for the webinar here&lt;/a&gt; and feel free to&amp;nbsp;&lt;a href="http://blogs.telerik.com:80//Libraries/Evan_s_Documents/XAMLflix-Data-Visualization-Webinar.sflb" target="_blank"&gt;download a copy of the project&lt;/a&gt; that I put together from this link.  That way you can play along at home and experiment with these controls from the comfort of your workstations.&lt;/p&gt; &lt;p&gt;Thanks and stay tuned for more from the XAML team and XAMLflix!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.twitter.com/evanhutnick"&gt;@EvanHutnick&lt;/a&gt;&lt;/p&gt; &lt;br /&gt; &lt;img style="border-width: 0px; border-style: solid; width: 600px; height: 162px;" alt="XAMLflix Download RadControls for Silverlight &amp;amp; WPF" src="http://blogs.telerik.com:80//Libraries/Silverlight_team/XAMLflix-CTA-banner-blog.sflb?" usemap="#rade_img_map_1328805965142" /&gt;&lt;map name="rade_img_map_1328805965142" id="rade_img_map_1328805965142"&gt; &lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=601" shape="RECT" coords="409,66,574,106"&gt;&lt;/area&gt; &lt;area href="http://www.telerik.com/account/free-trials/trial-product-versions/single-trial.aspx?pmvid=0&amp;amp;pid=571" shape="RECT" coords="409,109,575,150"&gt;&lt;/area&gt; &lt;/map&gt;&lt;img src="http://feeds.feedburner.com/~r/Telerik/~4/_4V7TmLr6Yg" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/Telerik/~3/_4V7TmLr6Yg/telerik-xamlflix-data-visualization-webinar-wrap-up.aspx</link>
      <author>Evan Hutnick</author>
      <comments>http://blogs.telerik.com/blogs/posts/12-05-03/telerik-xamlflix-data-visualization-webinar-wrap-up.aspx</comments>
      <guid isPermaLink="false">52035d74-0c33-4c89-86a1-7966562a3087</guid>
      <pubDate>Fri, 04 May 2012 14:30:00 GMT</pubDate>
    <feedburner:origLink>http://blogs.telerik.com/blogs/posts/12-05-03/telerik-xamlflix-data-visualization-webinar-wrap-up.aspx</feedburner:origLink></item>
  </channel>
</rss>

