<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0ABQns9eSp7ImA9WhVTEkw.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772</id><updated>2012-02-25T23:15:53.561Z</updated><category term="C#" /><category term="Cmd" /><category term="PRISM" /><category term="Windows Vista" /><category term="Games" /><category term="WM7" /><category term="Win8" /><category term="Technology" /><category term="WCF" /><category term="HTML" /><category term="IT" /><category term="Photography" /><category term="JavaScript" /><category term="WPF" /><category term="Silverlight" /><category term="Windows 7" /><title>TecProGamPho</title><subtitle type="html">Technology / Programming (C#,WPF, Silverlight) / Games / Photography</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://pavzav.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Tecprogampho" /><feedburner:info uri="tecprogampho" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkYGR34zeSp7ImA9WhRVE0g.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-4212383210839495734</id><published>2012-01-12T08:48:00.000Z</published><updated>2012-01-12T08:48:46.081Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-12T08:48:46.081Z</app:edited><title>What are the most profitable apps?</title><content type="html">&lt;div class="separator" style="clear: both; text-align: left;"&gt;
If you ask yourself what type of app you should create from the profitability&amp;nbsp;point of view, just have a look below.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-5PXuB214Zo4/Tw6XGDsnv0I/AAAAAAAAIqQ/7ljPJ79mrek/s1600/5481.WP-Marketplace-Opportunity-infographic-r09b-011112_588D8EFF.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-5PXuB214Zo4/Tw6XGDsnv0I/AAAAAAAAIqQ/7ljPJ79mrek/s1600/5481.WP-Marketplace-Opportunity-infographic-r09b-011112_588D8EFF.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-4212383210839495734?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n3uwIC8g7AAW0ND8NCzI_uBeIRs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n3uwIC8g7AAW0ND8NCzI_uBeIRs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n3uwIC8g7AAW0ND8NCzI_uBeIRs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n3uwIC8g7AAW0ND8NCzI_uBeIRs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/Y30XcDeb4Zk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/4212383210839495734/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2012/01/what-are-most-profitable-apps.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/4212383210839495734?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/4212383210839495734?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/Y30XcDeb4Zk/what-are-most-profitable-apps.html" title="What are the most profitable apps?" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-5PXuB214Zo4/Tw6XGDsnv0I/AAAAAAAAIqQ/7ljPJ79mrek/s72-c/5481.WP-Marketplace-Opportunity-infographic-r09b-011112_588D8EFF.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2012/01/what-are-most-profitable-apps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQFRHo4eip7ImA9WhRXF0w.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-7198147700241504604</id><published>2011-12-24T08:11:00.001Z</published><updated>2011-12-24T08:11:55.432Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-24T08:11:55.432Z</app:edited><title>Merry Christmas and Happy New Year</title><content type="html">&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-7198147700241504604?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ghcZbv1ZoRJFYe5FGdpWMJ_J1qk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghcZbv1ZoRJFYe5FGdpWMJ_J1qk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ghcZbv1ZoRJFYe5FGdpWMJ_J1qk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ghcZbv1ZoRJFYe5FGdpWMJ_J1qk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/asOsdZ3wkQ8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/7198147700241504604/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/12/merry-christmas-and-happy-new-year.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7198147700241504604?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7198147700241504604?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/asOsdZ3wkQ8/merry-christmas-and-happy-new-year.html" title="Merry Christmas and Happy New Year" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/12/merry-christmas-and-happy-new-year.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YER30-eCp7ImA9WhRXEkU.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1601304602758596884</id><published>2011-12-19T08:58:00.001Z</published><updated>2011-12-19T08:58:26.350Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-19T08:58:26.350Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WM7" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Multi-Translator ver. 2.0</title><content type="html">&lt;a href="http://www.windowsphone.com/en-GB/apps/386c92a9-ec33-4f92-9499-172bd6e4131b"&gt;Multi-Translator 2.0&lt;/a&gt; &lt;b&gt;[Mango]&lt;/b&gt; has been released.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-1601304602758596884?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Z9m-eb4GnPfkkzQdKVzLmuYLZIA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z9m-eb4GnPfkkzQdKVzLmuYLZIA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Z9m-eb4GnPfkkzQdKVzLmuYLZIA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Z9m-eb4GnPfkkzQdKVzLmuYLZIA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/O7EQ0CMZWRA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1601304602758596884/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/12/multi-translator-ver-20.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1601304602758596884?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1601304602758596884?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/O7EQ0CMZWRA/multi-translator-ver-20.html" title="Multi-Translator ver. 2.0" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/12/multi-translator-ver-20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EHRnw8eSp7ImA9WhRWEE0.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-5069447485780538401</id><published>2011-11-30T16:43:00.001Z</published><updated>2011-12-27T16:00:37.271Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-27T16:00:37.271Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WM7" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>How to scroll ListBox (ScrollViewer) to show an element without using BringIntoView method</title><content type="html">&lt;div style="text-align: justify;"&gt;
This is a problem you can encounter in WPF and Silverlight. The usual solution presented in the Internet is to use &lt;b&gt;BringIntoView()&lt;/b&gt; method. This approach works but does not guarantee that the whole element will be showed. The solution I want to show you is similar in both technologies and is more precise than BringIntoView() method.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Let's assume that our UI contains a ListBox with a content&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="&lt;b&gt;SomeItems&lt;/b&gt;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!--...--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
If we want to show a particular item contained in&amp;nbsp;&lt;b&gt;SomeItems&lt;/b&gt;&amp;nbsp;ListBox we have to discover &lt;b&gt;ScrollViewer&lt;/b&gt; which is a part of a ListBox visual tree and run &lt;b&gt;ScrollToVerticalOffset&lt;/b&gt; method pointing to an index of an item we want to show. The following class can be used to find any DepenendecyObject in a visual tree.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; VisualHelper&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; T FindDependencyObject&amp;lt;T&amp;gt;(DependencyObject dependencyObject)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    where T : DependencyObject&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            DependencyObject d = dependencyObject;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            while (!(d &lt;span class="kwrd"&gt;is&lt;/span&gt; T) &amp;amp;&amp;amp; VisualTreeHelper.GetChildrenCount(d) &amp;gt; 0)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                d = VisualTreeHelper.GetChild(d, 0);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; d &lt;span class="kwrd"&gt;as&lt;/span&gt; T;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
This is how you can use the code presented above&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; scrollViewer = VisualHelper.FindDependencyObject&amp;lt;ScrollViewer&amp;gt;(SomeItems);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;scrollViewer.ScrollToVerticalOffset([index of an item]);&lt;/pre&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-5069447485780538401?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vR0LoKtbZ7OpchT7kVKSBTYSxz8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vR0LoKtbZ7OpchT7kVKSBTYSxz8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vR0LoKtbZ7OpchT7kVKSBTYSxz8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vR0LoKtbZ7OpchT7kVKSBTYSxz8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/iv4CX_sGTR4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/5069447485780538401/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/11/how-to-scroll-listbox-scrollviewer-to.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5069447485780538401?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5069447485780538401?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/iv4CX_sGTR4/how-to-scroll-listbox-scrollviewer-to.html" title="How to scroll ListBox (ScrollViewer) to show an element without using BringIntoView method" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/11/how-to-scroll-listbox-scrollviewer-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUGQXs7fyp7ImA9WhRSF0k.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-806034047003333523</id><published>2011-11-04T08:13:00.000Z</published><updated>2011-11-20T00:17:00.507Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-20T00:17:00.507Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WM7" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Multi-Translator</title><content type="html">My first application has been released and is available on &lt;a href="http://www.windowsphone.com/en-GB/apps/386c92a9-ec33-4f92-9499-172bd6e4131b"&gt;Windows Phone Marketplace&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/xL5mkQIKaU4" width="420"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-806034047003333523?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KXLTsVTBlV3iz6pJ_3-aONdrglU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KXLTsVTBlV3iz6pJ_3-aONdrglU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KXLTsVTBlV3iz6pJ_3-aONdrglU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KXLTsVTBlV3iz6pJ_3-aONdrglU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/fuRq77_hoPc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/806034047003333523/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/11/my-first-application-has-been-released.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/806034047003333523?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/806034047003333523?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/fuRq77_hoPc/my-first-application-has-been-released.html" title="Multi-Translator" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/xL5mkQIKaU4/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/11/my-first-application-has-been-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UCQHs6eyp7ImA9WhdWGUg.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-4748113428456538793</id><published>2011-09-14T00:03:00.000+01:00</published><updated>2011-09-14T00:07:41.513+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-14T00:07:41.513+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><category scheme="http://www.blogger.com/atom/ns#" term="Win8" /><title>Windows 8</title><content type="html">&lt;div style="text-align: justify;"&gt;
Microsoft finally unveiled some additional details regarding new Windows 8. If you would like to watch the keynote session please have a look at&amp;nbsp;&lt;a href="http://www.buildwindows.com/"&gt;http://www.buildwindows.com/&lt;/a&gt;.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Some key conclusions (for developers) from the keynote:&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;JavaScript is becoming a first-class language (you can find few proofs below)&lt;/li&gt;
&lt;li&gt;Developers will receive VS2011 and Expression Blend 5 with arrival of Windows 8&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-MPADFZ4T37M/Tm_cPT2dQ7I/AAAAAAAAIWc/oLK_fRCUz-g/s1600/win8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="355" src="http://1.bp.blogspot.com/-MPADFZ4T37M/Tm_cPT2dQ7I/AAAAAAAAIWc/oLK_fRCUz-g/s640/win8.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-8Vd9bnyRpWY/Tm_cTU-hK7I/AAAAAAAAIWg/QQiFfWXp4eY/s1600/vs2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://4.bp.blogspot.com/-8Vd9bnyRpWY/Tm_cTU-hK7I/AAAAAAAAIWg/QQiFfWXp4eY/s640/vs2011.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
I really like new Microsoft 'no compromises' approach which means that developers will be able to use new Windows 8 tablets for everything - the most important for coding.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-4748113428456538793?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/55yH0KXUBbxftUejpr81wkl9cXE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/55yH0KXUBbxftUejpr81wkl9cXE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/55yH0KXUBbxftUejpr81wkl9cXE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/55yH0KXUBbxftUejpr81wkl9cXE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/s5CmMEvudYQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/4748113428456538793/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/09/windows-8.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/4748113428456538793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/4748113428456538793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/s5CmMEvudYQ/windows-8.html" title="Windows 8" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-MPADFZ4T37M/Tm_cPT2dQ7I/AAAAAAAAIWc/oLK_fRCUz-g/s72-c/win8.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/09/windows-8.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8EQX44eyp7ImA9WhdVGUs.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-463934073446733219</id><published>2011-09-07T22:51:00.000+01:00</published><updated>2011-09-25T17:40:00.033+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-25T17:40:00.033+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PRISM" /><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Key concepts in Silverlight in comparison with WPF</title><content type="html">In this article I would like to show you how to use some of the key Silverlight features:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Dependency Properties,&lt;/li&gt;
&lt;li&gt;Data Bindings,&lt;/li&gt;
&lt;li&gt;Commands,&lt;/li&gt;
&lt;li&gt;Implicit styles,&lt;/li&gt;
&lt;li&gt;Explicit styles,&lt;/li&gt;
&lt;li&gt;Visual State Manager,&lt;/li&gt;
&lt;li&gt;Animations,&lt;/li&gt;
&lt;li&gt;Value Converters,&lt;/li&gt;
&lt;li&gt;CollectionViewSource,&lt;/li&gt;
&lt;li&gt;Custom Controls.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-nkL1AluD4Tc/TmVWxDiLGXI/AAAAAAAAIWU/m2KIxOEDnLE/s1600/SolarSystem.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="450" src="http://2.bp.blogspot.com/-nkL1AluD4Tc/TmVWxDiLGXI/AAAAAAAAIWU/m2KIxOEDnLE/s640/SolarSystem.jpg" width="850" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;1. Dependency Properties&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
If you want to understand the reason and the way how DP works please visit this &lt;a href="http://pavzav.blogspot.com/2011/01/dependency-property.html"&gt;link&lt;/a&gt;. I would like to mention differences between WPF and SL DPs. When you create DP in SL you can specify PropertyMetadata but as a result you will lack coercion and validation support which can be handled in FrameworkPropertyMetadata (WPF). These two can be useful especially if you want to create advanced controls. If you cannot imagine how coercion can be useful for you I can give an example - range IP address control.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty RadiusProperty = DependencyProperty.Register(&lt;span class="str"&gt;"Radius"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;double&lt;/span&gt;.NaN));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt; Radius&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;double&lt;/span&gt;)GetValue(RadiusProperty); }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            set { SetValue(RadiusProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;); }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;2. Data Bindings&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
I describe data bindings as maximum functionality and minimum code, very useful for displaying and interacting with data. Bindings are even more useful when you use Model-View-ViewModel (MVVM) pattern because in case like that data bindings&amp;nbsp;create these pipelines/streams of data between presentation layer (V) and logic behind it (VM) and no additional code is needed.&lt;br /&gt;
&lt;br /&gt;
Example below shows how to use data bindings directly in your view (V)&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:CelestialBodyControl&lt;/span&gt; &lt;span class="attr"&gt;BodyName&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Name}"&lt;/span&gt; &lt;span class="attr"&gt;Radius&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Radius}"&lt;/span&gt; &lt;span class="attr"&gt;AverageDistanceFromSun&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding AverageDistanceFromSun}"&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;                                                &lt;span class="attr"&gt;RotationPeriod&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding RotationPeriod}"&lt;/span&gt; &lt;span class="attr"&gt;OrbitalPeriod&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding OrbitalPeriod}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
This example shows how to use a data binding inside a style&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Radius, RelativeSource={RelativeSource TemplatedParent}}"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;3. Commands&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Commands are a way to handle user interface actions but the problem is that they are not widely supported in SL.&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;They are a loosely coupled way to bind the UI to the logic that performs the action. This is the way how you can perform interactions between your View and a ViewModel.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ToggleButton&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Start"&lt;/span&gt; &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding StartCommand}"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="100"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="30"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; ViewModel()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="rem"&gt;//...&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            StartCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; DelegateCommand&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;(HandleStartCommand);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="rem"&gt;//...&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; DelegateCommand&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt; StartCommand&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _startCommand; }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            set&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                _startCommand = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                OnPropertyChanged(&lt;span class="str"&gt;"StartCommand"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; HandleStartCommand(&lt;span class="kwrd"&gt;object&lt;/span&gt; payload)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="rem"&gt;//...&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;4. Styles&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Styles allows users/designers to apply consistent look &amp;amp; feel across multiple controls, some times very different controls. Styles can be defined globally or just locally if you define them inside resources of a control. Key elements of each style are:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Setter element - specifies key (property name) value (property value) pair,&lt;/li&gt;
&lt;li&gt;TargetType attribute - specifies a type of a control,&lt;/li&gt;
&lt;li&gt;x:Key or x:Name attributes - specify the name of a style for implicit styling. This is another difference between WPF and SL because only in SL you are able to use them interchangeably.&lt;/li&gt;
&lt;/ul&gt;
TraditionalListBox and CanvasListBox are the best examples of different approaches in styling because the blue ListBox uses an implicit style and the green one uses an explicit style.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="rem"&gt;&amp;lt;!--Implicit style--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;="local:CelestialBodyControl"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Template"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;="local:CelestialBodyControl"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Stretch"&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Stretch"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ColumnDefinition&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.ColumnDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt; &lt;span class="attr"&gt;Orientation&lt;/span&gt;&lt;span class="kwrd"&gt;="Vertical"&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="PART_Name"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{TemplateBinding BodyName}"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Radius, RelativeSource={RelativeSource TemplatedParent}}"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding AverageDistanceFromSun, RelativeSource={RelativeSource TemplatedParent}}"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding RotationPeriod, RelativeSource={RelativeSource TemplatedParent}}"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding OrbitalPeriod, RelativeSource={RelativeSource TemplatedParent}}"&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="White"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;BorderThickness&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="70"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="70"&lt;/span&gt; &lt;span class="attr"&gt;RenderTransformOrigin&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5,0.5"&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Column&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:ImageConverter&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;="ImageConverter"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border.Background&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ImageBrush&lt;/span&gt; &lt;span class="attr"&gt;ImageSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding BodyName, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ImageConverter}}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border.Background&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="rem"&gt;&amp;lt;!--Explicit style--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;="local:CelestialBodyControl"&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;="CanvasStyle"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;="Template"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;="local:CelestialBodyControl"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt; &lt;span class="attr"&gt;BorderThickness&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="100"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="100"&lt;/span&gt; &lt;span class="attr"&gt;RenderTransformOrigin&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5,0.5"&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="border"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualStateManager.VisualStateGroups&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="SelectionStates"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Unselected"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Selected"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5"&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;="Opacity"&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="border"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualStateManager.VisualStateGroups&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border.Background&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ImageBrush&lt;/span&gt; &lt;span class="attr"&gt;ImageSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding BodyName, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ImageConverter}}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border.Background&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ScaleTransform&lt;/span&gt; &lt;span class="attr"&gt;ScaleX&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Radius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ValueConverter}, ConverterParameter=0.00003}"&lt;/span&gt; &lt;span class="attr"&gt;ScaleY&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Radius, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ValueConverter}, ConverterParameter=0.00003}"&lt;/span&gt;  &lt;span class="attr"&gt;CenterX&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5"&lt;/span&gt; &lt;span class="attr"&gt;CenterY&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RotateTransform&lt;/span&gt; &lt;span class="attr"&gt;CenterX&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5"&lt;/span&gt; &lt;span class="attr"&gt;CenterY&lt;/span&gt;&lt;span class="kwrd"&gt;="0.5"&lt;/span&gt; &lt;span class="attr"&gt;Angle&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding RotationAngle, RelativeSource={RelativeSource TemplatedParent}}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TranslateTransform&lt;/span&gt; &lt;span class="attr"&gt;X&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding AverageDistanceFromSun, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ValueConverter}, ConverterParameter=100}"&lt;/span&gt; &lt;span class="attr"&gt;Y&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding AverageDistanceFromSun, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ValueConverter}, ConverterParameter=100}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RotateTransform&lt;/span&gt;  &lt;span class="attr"&gt;Angle&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding OrbitalAngle, RelativeSource={RelativeSource TemplatedParent}}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TranslateTransform&lt;/span&gt; &lt;span class="attr"&gt;X&lt;/span&gt;&lt;span class="kwrd"&gt;="800"&lt;/span&gt; &lt;span class="attr"&gt;Y&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TransformGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border.RenderTransform&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Border&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ControlTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter.Value&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;5. Visual State Manager&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;VSM manages states and the logic for transitioning between states for controls. Interesting fact is that VSM has been added to WPF 4.0 but SL was actually the first one where VSM has been implemented.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualStateManager.VisualStateGroups&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="CommonStates"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Normal"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="MouseOver"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Disabled"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;=".55"&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;="Opacity"&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="contentPresenter"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="SelectionStates"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Unselected"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Selected"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                                            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DoubleAnimation&lt;/span&gt; &lt;span class="attr"&gt;Duration&lt;/span&gt;&lt;span class="kwrd"&gt;="0:0:0.3"&lt;/span&gt; &lt;span class="attr"&gt;To&lt;/span&gt;&lt;span class="kwrd"&gt;=".3"&lt;/span&gt; &lt;span class="attr"&gt;AutoReverse&lt;/span&gt;&lt;span class="kwrd"&gt;="True"&lt;/span&gt; &lt;span class="attr"&gt;RepeatBehavior&lt;/span&gt;&lt;span class="kwrd"&gt;="Forever"&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetProperty&lt;/span&gt;&lt;span class="kwrd"&gt;="Opacity"&lt;/span&gt; &lt;span class="attr"&gt;Storyboard&lt;/span&gt;.&lt;span class="attr"&gt;TargetName&lt;/span&gt;&lt;span class="kwrd"&gt;="contentPresenter"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                                            &lt;span class="rem"&gt;&amp;lt;!--&amp;lt;ColorAnimation Duration="0" To="#FF0096FF" Storyboard.TargetProperty="(BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="..." /&amp;gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                                        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Storyboard&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="FocusStates"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Focused"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;VisualState&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="Unfocused"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualStateGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;VisualStateManager.VisualStateGroups&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;6.&amp;nbsp;&lt;/span&gt;Animations&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Only DPs can be animated. Types of animations:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;DoubleAnimation,&lt;/li&gt;
&lt;li&gt;ColorAnimation,&lt;/li&gt;
&lt;li&gt;PointAnimation.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;7. Value Converters (IValueConverter interface)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span"&gt;Allow modifying data as it passes through the binding engine. The difference between WPF and SL is that SL does not support multi-value converters (IMultiValueConverter interface).&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ValueConverter : IValueConverter&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; Convert(&lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;, Type targetType, &lt;span class="kwrd"&gt;object&lt;/span&gt; parameter, System.Globalization.CultureInfo culture)&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        {&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;double&lt;/span&gt; multiplier = 1;&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="kwrd"&gt;double&lt;/span&gt; position = &lt;span class="kwrd"&gt;value&lt;/span&gt; != &lt;span class="kwrd"&gt;null&lt;/span&gt; ? (&lt;span class="kwrd"&gt;double&lt;/span&gt;)&lt;span class="kwrd"&gt;value&lt;/span&gt; : 0;&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (parameter != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                &lt;span class="kwrd"&gt;double&lt;/span&gt;.TryParse((&lt;span class="kwrd"&gt;string&lt;/span&gt;)parameter, &lt;span class="kwrd"&gt;out&lt;/span&gt; multiplier);&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; position * multiplier;&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        }&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; ConvertBack(&lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;, Type targetType, &lt;span class="kwrd"&gt;object&lt;/span&gt; parameter, System.Globalization.CultureInfo culture)&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        {&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; NotImplementedException();&lt;/b&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;b&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/b&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;b&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    }&lt;/b&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;8. CollectionViewSource&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
CollectionViewSource is a proxy of a collection view class, can be used for sorting, grouping and filtering data. If you would like to know how to implement filtering in MVVM architecture please visit the following link:&amp;nbsp;&lt;a href="http://pavzav.blogspot.com/2011/07/filtering-in-mvvm-architecture.html"&gt;http://pavzav.blogspot.com/2011/07/filtering-in-mvvm-architecture.html&lt;/a&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CollectionViewSource&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;="SortedCelestialBodies"&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding CelestialBodies}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CollectionViewSource.SortDescriptions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;compMod:SortDescription&lt;/span&gt; &lt;span class="attr"&gt;PropertyName&lt;/span&gt;&lt;span class="kwrd"&gt;="Name"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CollectionViewSource.SortDescriptions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CollectionViewSource&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;&amp;lt;!--Usage of CollectionViewSource--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt; &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Source={StaticResource SortedCelestialBodies}}"&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Right"&lt;/span&gt; &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Bottom"&lt;/span&gt; &lt;span class="attr"&gt;Background&lt;/span&gt;&lt;span class="kwrd"&gt;="Black"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="150"&lt;/span&gt; &lt;span class="attr"&gt;SelectedItem&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding SelectedItem, Mode=TwoWay}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;local:CelestialBodyControl&lt;/span&gt; &lt;span class="attr"&gt;BodyName&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Name}"&lt;/span&gt; &lt;span class="attr"&gt;Radius&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Radius}"&lt;/span&gt; &lt;span class="attr"&gt;AverageDistanceFromSun&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding AverageDistanceFromSun}"&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                                                &lt;span class="attr"&gt;RotationPeriod&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding RotationPeriod}"&lt;/span&gt; &lt;span class="attr"&gt;OrbitalPeriod&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding OrbitalPeriod}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;9. Custom Controls (Skinnable/Faceless Controls)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
The most important feature of Custom Controls is a fact that their UI representation can be easily replaced and this it the reason why developers call them faceless controls.&lt;/div&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CelestialBodyControl : Control&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty BodyNameProperty = DependencyProperty.Register(&lt;span class="str"&gt;"BodyName"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;string&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty RadiusProperty = DependencyProperty.Register(&lt;span class="str"&gt;"Radius"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;double&lt;/span&gt;.NaN));&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty AverageDistanceFromSunProperty = DependencyProperty.Register(&lt;span class="str"&gt;"AverageDistanceFromSun"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;double&lt;/span&gt;.NaN));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty RotationPeriodProperty = DependencyProperty.Register(&lt;span class="str"&gt;"RotationPeriod"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;double&lt;/span&gt;.NaN));&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty OrbitalPeriodProperty = DependencyProperty.Register(&lt;span class="str"&gt;"OrbitalPeriod"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;double&lt;/span&gt;.NaN));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty OrbitalAngleProperty = DependencyProperty.Register(&lt;span class="str"&gt;"OrbitalAngle"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;double&lt;/span&gt;.NaN));&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty RotationAngleProperty = DependencyProperty.Register(&lt;span class="str"&gt;"RotationAngle"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;double&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyMetadata(&lt;span class="kwrd"&gt;double&lt;/span&gt;.NaN));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; CelestialBodyControl()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.DefaultStyleKey = &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CelestialBodyControl);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="rem"&gt;//...&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;     }&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Source code: &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B6HBaEFHs6IhNGI0NDFhYjgtYWEzZC00NTM5LWE5MmItZDg2MWE4OTdlZTJh&amp;amp;hl=en_US"&gt;KeyConceptsInSilverlight.rar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-463934073446733219?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I18akSMN85UiixQiT1SlmRaHhZc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I18akSMN85UiixQiT1SlmRaHhZc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I18akSMN85UiixQiT1SlmRaHhZc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I18akSMN85UiixQiT1SlmRaHhZc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/waAs4HYIcX8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/463934073446733219/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/09/key-concepts-in-silverlight.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/463934073446733219?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/463934073446733219?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/waAs4HYIcX8/key-concepts-in-silverlight.html" title="Key concepts in Silverlight in comparison with WPF" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-nkL1AluD4Tc/TmVWxDiLGXI/AAAAAAAAIWU/m2KIxOEDnLE/s72-c/SolarSystem.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/09/key-concepts-in-silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MCRHs5fyp7ImA9WhdWE08.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-3899886375558875532</id><published>2011-09-06T16:01:00.002+01:00</published><updated>2011-09-06T16:04:25.527+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-06T16:04:25.527+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cmd" /><title>How to list and activate services from command-line console</title><content type="html">My colleague had this unusual problem with his computer (actually it was a virus) and he had no access to the Services console in Administrative Tools but at the same time he had to run a service. As a solution we decided to use a command-line console. Please have a look below to find out how you can do it.&lt;br /&gt;
&lt;br /&gt;
To list all up and running services type:&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;net start&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
To list all inactive services type:&lt;span class="Apple-style-span" style="color: #38761d;"&gt; &lt;b&gt;sc query type= service state= inactive&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
With the second command you can check the name of your inactive service and to make it running type: &lt;b&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;sc start [service name]&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-3899886375558875532?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JT6L78Q-t8VZd2JB2NHFkIsiNmg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JT6L78Q-t8VZd2JB2NHFkIsiNmg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JT6L78Q-t8VZd2JB2NHFkIsiNmg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JT6L78Q-t8VZd2JB2NHFkIsiNmg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/uTWfT2KkSJ8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/3899886375558875532/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/09/how-to-list-and-activate-service-from.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/3899886375558875532?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/3899886375558875532?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/uTWfT2KkSJ8/how-to-list-and-activate-service-from.html" title="How to list and activate services from command-line console" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/09/how-to-list-and-activate-service-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IESHYzfSp7ImA9WhdWE08.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-6315081488622238982</id><published>2011-08-18T13:36:00.006+01:00</published><updated>2011-09-06T16:05:09.885+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-06T16:05:09.885+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Vista" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><category scheme="http://www.blogger.com/atom/ns#" term="Cmd" /><title>AddressAccessDeniedException HTTP could not register URL http://+:...</title><content type="html">&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;System.ServiceModel.AddressAccessDeniedException was unhandled&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;&amp;nbsp; Message=HTTP could not register URL http://+:xxxx/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
This is a typical problem which you can encounter when you migrate/create a service on Vista or Windows 7 machine. The reason why you can see it is because your user/group does not have rights to create a service that listen on the portion of the namespace. To perform reservation on Windows Vista or Windows 7 you have to use netsh.exe application which is available directly from your command line:&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;div style="text-align: left;"&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;netsh http add urlacl http://+:[port]/ user=[Domain\Username or Everyone]&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
Before you even start, remember to run your command line application as an administrator otherwise you will not be able to accomplish the procedure.&amp;nbsp;If your case scenario is more specific/unusual go to &lt;a href="http://go.microsoft.com/fwlink/?LinkId=70353"&gt;Microsoft webpage&lt;/a&gt;&amp;nbsp;where you can find more detailed information. If you want to list existing reservations use the following expression:&amp;nbsp;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;netsh http show urlacl&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-6315081488622238982?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mI2GWO7tAYPm-WSIwXJiyAqtAzM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mI2GWO7tAYPm-WSIwXJiyAqtAzM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mI2GWO7tAYPm-WSIwXJiyAqtAzM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mI2GWO7tAYPm-WSIwXJiyAqtAzM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/B6HmXAnwDU8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/6315081488622238982/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/08/addressaccessdeniedexception-http-could.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/6315081488622238982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/6315081488622238982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/B6HmXAnwDU8/addressaccessdeniedexception-http-could.html" title="AddressAccessDeniedException HTTP could not register URL http://+:..." /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/08/addressaccessdeniedexception-http-could.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4DQH89fip7ImA9WhdRFks.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-7347680461193250508</id><published>2011-08-06T12:18:00.002+01:00</published><updated>2011-08-06T21:36:11.166+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-06T21:36:11.166+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Games" /><title>Battlefield 3</title><content type="html">&lt;div style="text-align: left;"&gt;Excellent, detailed presentation of BF3.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/PXaFw7aC9GE" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-7347680461193250508?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f8XiU8M5Wb4cNA3XdhJ8rrS2D-k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f8XiU8M5Wb4cNA3XdhJ8rrS2D-k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f8XiU8M5Wb4cNA3XdhJ8rrS2D-k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f8XiU8M5Wb4cNA3XdhJ8rrS2D-k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/GVRFuu_7sHY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/7347680461193250508/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/08/battlefield-3.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7347680461193250508?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7347680461193250508?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/GVRFuu_7sHY/battlefield-3.html" title="Battlefield 3" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/PXaFw7aC9GE/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/08/battlefield-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ANRXg4cCp7ImA9WhdSGEo.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-2973910687026715036</id><published>2011-07-28T17:49:00.000+01:00</published><updated>2011-07-28T17:49:54.638+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-28T17:49:54.638+01:00</app:edited><title>Geek Definition/Evolution - Whose of them are you?</title><content type="html">&lt;a href="http://www.flowtown.com/blog/the-evolution-of-the-geek"&gt;&lt;img alt="The Evolution of the Geek" src="http://blogcdn.flowtown.com/blog/wp-content/uploads/2010/10/ft-geek-10-20-1.jpg" title="The Evolution of the Geek" width="850" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flowtown.com/"&gt;Flowtown - Social Media Marketing Application&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-2973910687026715036?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uty5SPEl-Myl_Hrv90xd4Mx1hWI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uty5SPEl-Myl_Hrv90xd4Mx1hWI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uty5SPEl-Myl_Hrv90xd4Mx1hWI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uty5SPEl-Myl_Hrv90xd4Mx1hWI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/0DCEHpJVjQg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/2973910687026715036/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/07/geek-definitionevolution-whose-of-them.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/2973910687026715036?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/2973910687026715036?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/0DCEHpJVjQg/geek-definitionevolution-whose-of-them.html" title="Geek Definition/Evolution - Whose of them are you?" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/07/geek-definitionevolution-whose-of-them.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUERn0yeCp7ImA9WhdSGUg.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-3344701242999908507</id><published>2011-07-26T16:14:00.004+01:00</published><updated>2011-07-29T16:10:07.390+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-29T16:10:07.390+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Filtering in MVVM architecture - Silverlight &amp; WPF</title><content type="html">&lt;div style="text-align: justify;"&gt;Before you start implementing functionality for filtering data in MVVM architecture you have to find out which technologies you are going to use. There are two different ways how you can implement filtering in WPF but only one solution can be ported to Silverlight. The reason behind it is that Silverlight version of &lt;b&gt;CollectionViewSource&lt;/b&gt; class does not support&amp;nbsp;&lt;b&gt;GetDefaultView &lt;/b&gt;method. The following example shows how you can filter data in MVVM architecture by changing the content of &lt;b&gt;FilteringMethod &lt;/b&gt;predicate.&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;class&lt;/span&gt; MainWindowPresentationModel : INotifyPropertyChanged&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; _observableCollection = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;() { &lt;span class="str"&gt;"a"&lt;/span&gt;, &lt;span class="str"&gt;"bb"&lt;/span&gt;, &lt;span class="str"&gt;"ccc"&lt;/span&gt;, &lt;span class="str"&gt;"dddd"&lt;/span&gt;, &lt;span class="str"&gt;"eeeee"&lt;/span&gt;, &lt;span class="str"&gt;"ffffff"&lt;/span&gt;, &lt;span class="str"&gt;"eeeeeeee"&lt;/span&gt;, &lt;span class="str"&gt;"fffffffffffffff"&lt;/span&gt;, &lt;span class="str"&gt;"gggggggggggggggggg"&lt;/span&gt; };&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; _threshold = 100;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; ICollectionView _Items;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; CollectionViewSource _CollectionViewSourceItems;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; MainWindowPresentationModel(Window window)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            FilterCommand = &lt;span class="kwrd"&gt;new&lt;/span&gt; RoutedCommand();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            CommandBinding customCommandBinding = &lt;span class="kwrd"&gt;new&lt;/span&gt; CommandBinding(FilterCommand, HandleFilterCommand);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            window.CommandBindings.Add(customCommandBinding);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            window.DataContext = &lt;span class="kwrd"&gt;this&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            window.Show();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            Items = CollectionViewSource.GetDefaultView(_observableCollection);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            Items.Filter = FilteringMethod;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            Items.Refresh();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            CollectionViewSourceItems = &lt;span class="kwrd"&gt;new&lt;/span&gt; CollectionViewSource();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            CollectionViewSourceItems.Source = _observableCollection;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            CollectionViewSourceItems.View.Filter = FilteringMethod;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            CollectionViewSourceItems.View.Refresh();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; ICommand FilterCommand&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            get;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            set;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;nbsp;&lt;a name='more'&gt;&lt;/a&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; ICollectionView Items&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _Items; }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            set {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                _Items = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                OnPropertyChanged(&lt;span class="str"&gt;"Items"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; CollectionViewSource CollectionViewSourceItems&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _CollectionViewSourceItems; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            set&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                _CollectionViewSourceItems = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                OnPropertyChanged(&lt;span class="str"&gt;"CollectionViewSourceItems"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; HandleFilterCommand(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, ExecutedRoutedEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; result = 0;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;.TryParse(e.Parameter.ToString(), &lt;span class="kwrd"&gt;out&lt;/span&gt; result))&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                _threshold = result;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;            Items.Refresh();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            CollectionViewSourceItems.View.Refresh();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; FilteringMethod(&lt;span class="kwrd"&gt;object&lt;/span&gt; input)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; _threshold == 0 ? &lt;span class="kwrd"&gt;true&lt;/span&gt; : ((&lt;span class="kwrd"&gt;string&lt;/span&gt;)input).Length &amp;lt; _threshold;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnPropertyChanged(&lt;span class="kwrd"&gt;string&lt;/span&gt; propertyName)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (PropertyChanged != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;                var localPropertyChanged = PropertyChanged;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;                localPropertyChanged(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyChangedEventArgs(propertyName));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre;"&gt;&lt;span class="kwrd"&gt;="WpfApplication1.MainWindow"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="attr"&gt;Title&lt;/span&gt;&lt;span class="kwrd"&gt;="MainWindow"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="350"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="525"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="Auto"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;RowDefinition&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="*"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid.RowDefinitions&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Show items shorter than 5 characters"&lt;/span&gt; &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding FilterCommand}"&lt;/span&gt; &lt;span class="attr"&gt;CommandParameter&lt;/span&gt;&lt;span class="kwrd"&gt;="5"&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="30"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Show all items"&lt;/span&gt; &lt;span class="attr"&gt;Command&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding FilterCommand}"&lt;/span&gt; &lt;span class="attr"&gt;CommandParameter&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;  &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="30"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="2"&lt;/span&gt; &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding Items}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ListBox&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;="3"&lt;/span&gt; &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;="{Binding CollectionViewSourceItems.View}"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Grid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Window&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; App : Application&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnStartup(StartupEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnStartup(e);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            MainWindow view = &lt;span class="kwrd"&gt;new&lt;/span&gt; MainWindow();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            MainWindowPresentationModel model = &lt;span class="kwrd"&gt;new&lt;/span&gt; MainWindowPresentationModel(view);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Application&lt;/span&gt; &lt;span class="attr"&gt;x:Class&lt;/span&gt;&lt;span class="kwrd"&gt;="WpfApplication1.App"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;             &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;             &lt;span class="attr"&gt;xmlns:x&lt;/span&gt;&lt;span class="kwrd"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;             &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Application.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;         &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Application.Resources&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Application&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-3344701242999908507?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KPl5JT9kpbW-3psKx8s-1pSPtyg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KPl5JT9kpbW-3psKx8s-1pSPtyg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KPl5JT9kpbW-3psKx8s-1pSPtyg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KPl5JT9kpbW-3psKx8s-1pSPtyg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/OsrIFDPM1Cc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/3344701242999908507/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/07/filtering-in-mvvm-architecture.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/3344701242999908507?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/3344701242999908507?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/OsrIFDPM1Cc/filtering-in-mvvm-architecture.html" title="Filtering in MVVM architecture - Silverlight &amp; WPF" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/07/filtering-in-mvvm-architecture.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ACQX49fyp7ImA9WhdSGUg.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-8319587446912897334</id><published>2011-06-23T21:07:00.003+01:00</published><updated>2011-07-29T16:02:40.067+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-29T16:02:40.067+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WM7" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>How to make dynamically generated tiles in Windows Mobile 7?</title><content type="html">This project was inspired by the way how menu in &lt;a href="http://www.thinkwithportals.com/"&gt;&lt;b&gt;Portal 2&lt;/b&gt;&lt;/a&gt;&amp;nbsp;game works.&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;b&gt;Portal 2&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&amp;nbsp;is a&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/First-person_shooter" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="First-person shooter"&gt;first-person&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Platform_game#Puzzle_platformers" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Platform game"&gt;puzzle-platform&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Video_game" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Video game"&gt;video game&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&amp;nbsp;developed by&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Valve_Corporation" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; color: #0645ad; text-decoration: underline;" title="Valve Corporation"&gt;Valve Corporation&lt;/a&gt;. Really interesting and very well executed. Going back to the subject when I saw Portal 2 menu in action I decided to do something similar in WM7. The whole idea is quite simple:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;define your area of interest e.g. a whole screen or a part&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;make a screenshot&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;populate WrapPanel with rectangles which contain appropriate parts of the previously created screenshot.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;hide your area of interest (&lt;span class="Apple-style-span" style="font-family: monospace; line-height: normal; white-space: pre;"&gt;&lt;b&gt;yourUIElement&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;start animations&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="line-height: 19px;"&gt;perform a transition if needed&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Points 1 and 2&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;            WriteableBitmap bmp = &lt;span class="kwrd"&gt;new&lt;/span&gt; WriteableBitmap((&lt;span class="kwrd"&gt;int&lt;/span&gt;)LayoutRoot.ActualWidth, (&lt;span class="kwrd"&gt;int&lt;/span&gt;)LayoutRoot.ActualHeight);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            bmp.Render(yourUIElement, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            bmp.Invalidate();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            image.Source = bmp;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Point 3 and 5&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; j = 0; j &amp;lt; y; j++)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; x; i++)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;                    Rectangle rect = &lt;span class="kwrd"&gt;new&lt;/span&gt; Rectangle();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                    rect.Width = (image.Source &lt;span class="kwrd"&gt;as&lt;/span&gt; WriteableBitmap).PixelWidth / x;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                    rect.Height = (image.Source &lt;span class="kwrd"&gt;as&lt;/span&gt; WriteableBitmap).PixelHeight / y;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                    ImageBrush brush = &lt;span class="kwrd"&gt;new&lt;/span&gt; ImageBrush();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                    brush.AlignmentX = AlignmentX.Left;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                    brush.AlignmentY = AlignmentY.Top;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    brush.Transform = &lt;span class="kwrd"&gt;new&lt;/span&gt; TranslateTransform() { X = i * -(image.Source &lt;span class="kwrd"&gt;as&lt;/span&gt; WriteableBitmap).PixelWidth / x, Y = j * -(image.Source &lt;span class="kwrd"&gt;as&lt;/span&gt; WriteableBitmap).PixelHeight / y };&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                    brush.Stretch = Stretch.None;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                    brush.ImageSource = image.Source;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                    rect.Fill = brush;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                    wrapPanel.Children.Add(rect);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                    rect.Projection = &lt;span class="kwrd"&gt;new&lt;/span&gt; PlaneProjection() { RotationX = 0, RotationY = Forward ? 0 : -90, RotationZ = 0 };&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                    DoubleAnimation animation = &lt;span class="kwrd"&gt;new&lt;/span&gt; DoubleAnimation();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                    animation.From = Forward ? 0 : -90;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                    animation.To = Forward ? -90 : 0;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                    animation.Duration = TimeSpan.FromMilliseconds(100);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                    Storyboard story = &lt;span class="kwrd"&gt;new&lt;/span&gt; Storyboard();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                    story.BeginTime = TimeSpan.FromMilliseconds(((i + j)) * 100);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                    Storyboard.SetTarget(animation, rect.Projection);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                    Storyboard.SetTargetProperty(animation, &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyPath(PlaneProjection.RotationYProperty));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                    story.Begin();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
Point 6&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;     &amp;lt;toolkit:TransitionService.NavigationInTransition&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &amp;lt;toolkit:NavigationInTransition&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &amp;lt;toolkit:NavigationInTransition.Backward&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;                &amp;lt;local:TilesTransition Forward=&lt;span class="str"&gt;"False"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &amp;lt;/toolkit:NavigationInTransition.Backward&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &amp;lt;/toolkit:NavigationInTransition&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &amp;lt;/toolkit:TransitionService.NavigationInTransition&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &amp;lt;toolkit:TransitionService.NavigationOutTransition&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &amp;lt;toolkit:NavigationOutTransition&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            &amp;lt;toolkit:NavigationOutTransition.Forward&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                &amp;lt;local:TilesTransition Forward=&lt;span class="str"&gt;"True"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &amp;lt;/toolkit:NavigationOutTransition.Forward&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &amp;lt;/toolkit:NavigationOutTransition&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;/toolkit:TransitionService.NavigationOutTransition&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/G1EgF9ojQOE" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;Useful links:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.windowsphonegeek.com/articles/wp7-transitions-in-depth--key-concepts-and-api"&gt;http://www.windowsphonegeek.com/articles/wp7-transitions-in-depth--key-concepts-and-api&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.windowsphonegeek.com/articles/wp7-transitions-in-depth--custom-transitions"&gt;http://www.windowsphonegeek.com/articles/wp7-transitions-in-depth--custom-transitions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-8319587446912897334?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_cUhVv4xOTfdWKk9CQBfG-E7zMM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_cUhVv4xOTfdWKk9CQBfG-E7zMM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_cUhVv4xOTfdWKk9CQBfG-E7zMM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_cUhVv4xOTfdWKk9CQBfG-E7zMM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/JvhQqzWe6fU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/8319587446912897334/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/06/how-to-make-dynamically-generated-tiles.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/8319587446912897334?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/8319587446912897334?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/JvhQqzWe6fU/how-to-make-dynamically-generated-tiles.html" title="How to make dynamically generated tiles in Windows Mobile 7?" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/G1EgF9ojQOE/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/06/how-to-make-dynamically-generated-tiles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDR3g-fyp7ImA9WhZQEkw.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1313993394103129045</id><published>2011-04-13T22:32:00.002+01:00</published><updated>2011-04-19T12:11:16.657+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-19T12:11:16.657+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>Kinect for Windows SDK  is getting closer and closer - MIX11</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="288" id="viddler" width="512"&gt;&lt;param name="movie" value="http://www.viddler.com/simple/783b7258/" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="flashvars" value="fake=1"/&gt;&lt;embed src="http://www.viddler.com/simple/783b7258/" width="512" height="288" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" flashvars="fake=1" name="viddler" &gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-1313993394103129045?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dskiChL5ybH024vZyEc5IEL_w8I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dskiChL5ybH024vZyEc5IEL_w8I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dskiChL5ybH024vZyEc5IEL_w8I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dskiChL5ybH024vZyEc5IEL_w8I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/VrWx6G41Huo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1313993394103129045/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/04/kinect-for-windows-sdk-is-getting.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1313993394103129045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1313993394103129045?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/VrWx6G41Huo/kinect-for-windows-sdk-is-getting.html" title="Kinect for Windows SDK  is getting closer and closer - MIX11" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/04/kinect-for-windows-sdk-is-getting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIGQHw_eCp7ImA9Wx9bE0U.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1913684232132076431</id><published>2011-02-22T12:28:00.003Z</published><updated>2011-02-22T13:15:21.240Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T13:15:21.240Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>Kinect for Windows will be available this Spring - version for enthusiasts and academic researchers</title><content type="html">I am really glad that Microsoft is going to release Windows version of Kinect this Spring. I cannot wait to put my hands on this amazing piece of hardware.&lt;br /&gt;
&lt;br /&gt;
Another pretty amazing Kinect hack&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;iframe frameborder="0" height="288" src="http://player.vimeo.com/video/18642768?portrait=0" width="512"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;Useful links:&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: left;"&gt;&lt;a href="http://research.microsoft.com/en-us/news/features/kinectforwindowssdk-022111.aspx"&gt;http://research.microsoft.com/en-us/news/features/kinectforwindowssdk-022111.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-1913684232132076431?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8xLSCtnJdFqV2n2POsksy71FFEc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8xLSCtnJdFqV2n2POsksy71FFEc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8xLSCtnJdFqV2n2POsksy71FFEc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8xLSCtnJdFqV2n2POsksy71FFEc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/jxZ6k2-KPJw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1913684232132076431/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/02/kinect-for-windows-will-be-available.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1913684232132076431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1913684232132076431?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/jxZ6k2-KPJw/kinect-for-windows-will-be-available.html" title="Kinect for Windows will be available this Spring - version for enthusiasts and academic researchers" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/02/kinect-for-windows-will-be-available.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAAQn08cSp7ImA9WhZbGEs.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-7618678762734116611</id><published>2011-02-13T15:27:00.003Z</published><updated>2011-06-23T23:05:43.379+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T23:05:43.379+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WM7" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>How to make a fully animated ListBox in Windows Mobile 7</title><content type="html">&lt;div style="text-align: left;"&gt;&lt;div style="text-align: justify;"&gt;If you want to animate all ListBox items in a way similar to the WM7 embedded functionality please&amp;nbsp;have a look at the following article.&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Requirements:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;only items visible on the screen take part in an animation,&lt;/li&gt;
&lt;li&gt;an animation kicks off when one of the the ListBox items is selected,&lt;/li&gt;
&lt;li&gt;all items are animated apart from the one which is selected,&lt;/li&gt;
&lt;li&gt;items are animated one by one from the bottom to the top of the screen,&lt;/li&gt;
&lt;li&gt;when the animation is finished the application navigates to the another page.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Solutions:&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li style="text-align: justify;"&gt;If we want to detect visible ListBox items you need to get access to the ScrollViewer which is a part of a ListBox visual tree. To iterate through the visual tree we will be using the following method:&lt;/li&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; T FindDependencyObject&amp;lt;T&amp;gt;(DependencyObject dependencyObject)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            &lt;span class="kwrd"&gt;where&lt;/span&gt; T : DependencyObject&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            DependencyObject d = dependencyObject;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (!(d &lt;span class="kwrd"&gt;is&lt;/span&gt; T) &amp;amp;&amp;amp; VisualTreeHelper.GetChildrenCount(d) &amp;gt; 0)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                d = VisualTreeHelper.GetChild(d, 0);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; d &lt;span class="kwrd"&gt;as&lt;/span&gt; T;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ScrollViewer &lt;b&gt;VerticalOffset &lt;/b&gt;and &lt;b&gt;ViewportHeight &lt;/b&gt;properties tell us the index of the first visible item and how many items are visible altogether. 
&lt;li style="text-align: justify;"&gt;Animations will be started when a ListBox triggers &lt;b&gt;SelectionChanged &lt;/b&gt;event.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;All functionality responsible for running animations on per ListBox item basis will be nested in &lt;b&gt;SelectionChanged &lt;/b&gt;event handler. &lt;/li&gt;
&lt;li style="text-align: justify;"&gt;Items will be animated one by one using&amp;nbsp;&lt;b&gt;Storyboards&amp;nbsp;&lt;/b&gt;nested in DataTemplate resources. An animation of each item will be delayed with Storyboard&amp;nbsp;&lt;b&gt;BeginTime &lt;/b&gt;property which has to be populated in code based on an item position.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;The last animated item Completed event handler will be used to trigger &lt;b&gt;NavigationService.Navigate(...) &lt;/b&gt;method.&lt;/li&gt;
&lt;/div&gt;&lt;/ol&gt;&lt;/div&gt;&lt;b&gt;Found problems:&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;When you run animations/storyboards in code you have to be aware of few pitfalls. It is not allowed to start an animations which has been started it means that you have to be aware of the animation state and stop it if necessary. In this particular case a user is able to change a selected item in the middle of the running animation &amp;nbsp;and this is the moment when we have to clean it up and start the whole process again.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;b&gt;Results:&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="true" frameborder="0" height="288" src="http://www.youtube.com/embed/h3VIRwp-4FU" title="YouTube video player" width="512"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Useful links:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="https://www.silverlight.net/learn/quickstarts/animations/#advanced_animations"&gt;https://www.silverlight.net/learn/quickstarts/animations/#advanced_animations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Source code: &lt;a href="https://sites.google.com/site/pavzav/ListBoxAnimation.zip?attredirects=0&amp;amp;d=1"&gt;ListBoxAnimation.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-7618678762734116611?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vdUhzQLmOGKyF6EGBieGSDRF7GA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdUhzQLmOGKyF6EGBieGSDRF7GA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vdUhzQLmOGKyF6EGBieGSDRF7GA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdUhzQLmOGKyF6EGBieGSDRF7GA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/Ds-R2ToP0X4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/7618678762734116611/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/02/how-to-make-fully-animated-listbox-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7618678762734116611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7618678762734116611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/Ds-R2ToP0X4/how-to-make-fully-animated-listbox-in.html" title="How to make a fully animated ListBox in Windows Mobile 7" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/h3VIRwp-4FU/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/02/how-to-make-fully-animated-listbox-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkABQ38-fCp7ImA9Wx9UE0o.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-7201231956348237473</id><published>2011-02-03T11:53:00.002Z</published><updated>2011-02-10T21:52:32.154Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-10T21:52:32.154Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>Microsoft's Surface V.2 0 - It's amazing</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;object data="data:application/x-silverlight-2," height="288" type="application/x-silverlight-2" width="512"&gt;&lt;param name="minRuntimeVersion" value="4.0.50401.0"/&gt;&lt;param name="source" value="http://channel9.msdn.com/scripts/Channel9.xap?v=1.3"/&gt;&lt;param name="initParams" value="mediaurl=http://files.ch9.ms/ch9/8173/0250a6ae-d1fc-4c53-a07a-9e6500048173/Surface2_ch9.wmv,thumbnail=http://files.ch9.ms/ch9/8173/0250a6ae-d1fc-4c53-a07a-9e6500048173/Surface2_512_ch9.jpg,deliverymethod=progressivedownload,autoplay=false"/&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-7201231956348237473?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AVJPyv32eIC5mV3s9yuMpJ2EZzI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AVJPyv32eIC5mV3s9yuMpJ2EZzI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AVJPyv32eIC5mV3s9yuMpJ2EZzI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AVJPyv32eIC5mV3s9yuMpJ2EZzI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/rfcPekaQNwk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/7201231956348237473/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/02/microsofts-surface-computer-v2.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7201231956348237473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/7201231956348237473?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/rfcPekaQNwk/microsofts-surface-computer-v2.html" title="Microsoft's Surface V.2 0 - It's amazing" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/02/microsofts-surface-computer-v2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08NQ3g9fSp7ImA9WhdSGUg.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1103632796050207827</id><published>2011-01-30T20:23:00.005Z</published><updated>2011-07-29T16:04:52.665+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-29T16:04:52.665+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Dependency Property</title><content type="html">&lt;div style="text-align: justify;"&gt;&lt;b&gt;Definition:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Dependency property is a new type of property which can be used with &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.dependencyobject.aspx"&gt;dependency objects&lt;/a&gt;&lt;/b&gt;, to enable styling, data binding or animation. To define your own dependency property you have to register your new property using &lt;b&gt;DependencyProperty.Register(...)&lt;/b&gt; method and optionally you can create&amp;nbsp;&lt;b&gt;FrameworkPropertyMetadata &lt;/b&gt;object where you can specify property characteristics.&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Example:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MinMaxControl : Control&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty MinProperty = &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            DependencyProperty.Register(&lt;span class="str"&gt;"Min"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(MinMaxControl),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                HandleMinValueChanged, CoerceMinValue), ValidateMinValue);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;readonly&lt;/span&gt; DependencyProperty MaxProperty = &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            DependencyProperty.Register(&lt;span class="str"&gt;"Max"&lt;/span&gt;, &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;), &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(MinMaxControl),&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; FrameworkPropertyMetadata(0, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                HandleMaxValueChanged, CoerceMaxValue), ValidateMaxValue);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; MinMaxControl()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            DefaultStyleKeyProperty.OverrideMetadata(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(MinMaxControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; FrameworkPropertyMetadata(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(MinMaxControl)));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Min&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;)GetValue(MinMaxControl.MinProperty); }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            set { SetValue(MinMaxControl.MinProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;); }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Max&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;)GetValue(MinMaxControl.MaxProperty); }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            set { SetValue(MinMaxControl.MaxProperty, &lt;span class="kwrd"&gt;value&lt;/span&gt;); }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;nbsp;&lt;a name='more'&gt;&lt;/a&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; HandleMinValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; HandleMaxValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; CoerceMinValue(DependencyObject d, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;            var control = d &lt;span class="kwrd"&gt;as&lt;/span&gt; MinMaxControl;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (control != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)&lt;span class="kwrd"&gt;value&lt;/span&gt; &amp;gt; control.Max)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; control.Max;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; CoerceMaxValue(DependencyObject d, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;            var control = d &lt;span class="kwrd"&gt;as&lt;/span&gt; MinMaxControl;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (control != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)&lt;span class="kwrd"&gt;value&lt;/span&gt; &amp;lt; control.Min)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt; control.Min;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; ValidateMinValue(&lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)&lt;span class="kwrd"&gt;value&lt;/span&gt; &amp;lt; 0)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; ValidateMaxValue(&lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; ((&lt;span class="kwrd"&gt;int&lt;/span&gt;)&lt;span class="kwrd"&gt;value&lt;/span&gt; &amp;lt; 0)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;When you specify a &lt;b&gt;Dependency Property&lt;/b&gt; you have to include:&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;property name,&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;property type,&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;property owner type,&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;optionally, a &lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.aspx"&gt;FrameworkPropertyMetadata &lt;/a&gt;&lt;/b&gt;object,&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;optionally, a validation callback&lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;When you specify a property you have to be aware that it may be set incorrectly. Dependency property has set of tools which you can use to protect yourself against incorrect values: &lt;b&gt;ValidateValueCallback &lt;/b&gt;and &lt;b&gt;CoerceValueCallback&lt;/b&gt;.&amp;nbsp;Previously mentioned callbacks are executed in a particular order as follows:&lt;/div&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;&lt;b&gt;ValidateValueCallback&amp;nbsp;&lt;/b&gt;- does not have any knowledge about other dependency properties so the input value can be validated against some predefined conditions only,&amp;nbsp;&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;b&gt;CoerceValueCallback&amp;nbsp;&lt;/b&gt;- has access to a control so the value can be modified based on other properties,&amp;nbsp;&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;b&gt;PropertyValueChangedCallback &lt;/b&gt;- the last step of the whole process, can force coercion on other dependency properties if necessary.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;If you want/have to change a dependency property metadata and you do not have a direct access to the property you can achieve it using &lt;b&gt;OverrideMetadata &lt;/b&gt;method:&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; MinProperty.OverrideMetadata(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(ModifiedMinMaxControl), &lt;span class="kwrd"&gt;new&lt;/span&gt; FrameworkPropertyMetadata(123, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Useful links:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.windows.frameworkpropertymetadata.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Source code:&lt;a href="http://www.blogger.com/goog_539560004"&gt; &lt;/a&gt;&lt;/b&gt;&lt;a href="https://sites.google.com/site/pavzav/DepenencyPropertyCoercionValidation.zip?attredirects=0&amp;amp;d=1"&gt;DependencyProperyCoercionValidation.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-1103632796050207827?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8Km1b2A0KPu5KvVj2OuHfJNAWh4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Km1b2A0KPu5KvVj2OuHfJNAWh4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8Km1b2A0KPu5KvVj2OuHfJNAWh4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Km1b2A0KPu5KvVj2OuHfJNAWh4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/9uFij5zM74g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1103632796050207827/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/01/dependency-property.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1103632796050207827?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1103632796050207827?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/9uFij5zM74g/dependency-property.html" title="Dependency Property" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/01/dependency-property.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUASHo5eCp7ImA9Wx9VE0g.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-5752804647365995549</id><published>2011-01-30T02:06:00.001Z</published><updated>2011-01-30T02:07:29.420Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-30T02:07:29.420Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>How to calculate coordinates of a control in WPF</title><content type="html">&lt;div style="text-align: justify;"&gt;If you have a control nested in another control and you have to calculate their coordinates, you can achieve it using&amp;nbsp;&lt;b&gt;TranslatePoint(..,..)&lt;/b&gt; method e.g. [your control].TranslatePoint(new Point(0, 0), [parent control]);&amp;nbsp;If you need to retrieve a control coordinates to make it visible on the screen you can consider &lt;b&gt;BringIntoView()&lt;/b&gt; method. The only problem with previously mentioned method is lack of consistency but on the other hand you do not have to perform any additional calculations.&lt;br /&gt;
&lt;br /&gt;
Please have a look at the following example if you want to see &lt;b&gt;TranslatePoint &lt;/b&gt;and &lt;b&gt;BringIntoView &lt;/b&gt;methods&amp;nbsp;in action:&amp;nbsp;&lt;a href="https://sites.google.com/site/pavzav/Coordinates.zip?attredirects=0&amp;amp;d=1"&gt;Coordinates.zip&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-5752804647365995549?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9E-9JW3r7J27_ReRQFFvP3xpd6I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9E-9JW3r7J27_ReRQFFvP3xpd6I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9E-9JW3r7J27_ReRQFFvP3xpd6I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9E-9JW3r7J27_ReRQFFvP3xpd6I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/cGUNCvkQPeg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/5752804647365995549/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/01/how-to-calculate-coordinates-of-control.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5752804647365995549?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5752804647365995549?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/cGUNCvkQPeg/how-to-calculate-coordinates-of-control.html" title="How to calculate coordinates of a control in WPF" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/01/how-to-calculate-coordinates-of-control.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUHRHYzcCp7ImA9Wx9UFUg.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-5224594249703498383</id><published>2011-01-10T20:33:00.003Z</published><updated>2011-02-13T00:17:15.888Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-13T00:17:15.888Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>Uno - merge between motorcycle and segway</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Link to the company:&amp;nbsp;&lt;a href="http://bpg-motors.com/"&gt;http://bpg-motors.com/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;object height="224" width="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/x2DgwY5QQBk&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/x2DgwY5QQBk&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always"height="288" width="512"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-5224594249703498383?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1_8pReA0651GkVDcLRkvgcbkrfg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1_8pReA0651GkVDcLRkvgcbkrfg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1_8pReA0651GkVDcLRkvgcbkrfg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1_8pReA0651GkVDcLRkvgcbkrfg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/bKEQ0_NxPGs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/5224594249703498383/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/01/uno-motorcycle.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5224594249703498383?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5224594249703498383?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/bKEQ0_NxPGs/uno-motorcycle.html" title="Uno - merge between motorcycle and segway" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/01/uno-motorcycle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcESXwyfip7ImA9Wx9XFU4.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-6978354253908705649</id><published>2011-01-09T00:44:00.003Z</published><updated>2011-01-09T00:46:48.296Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-09T00:46:48.296Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>2011 the year of many many tablets - at last</title><content type="html">2010 was the year of &lt;b&gt;iPad &lt;/b&gt;the current one is the year of the greater choices: &lt;a href="http://www.engadget.com/features/tablets-at-ces-2011/"&gt;Tablets at CES 2011: Honeycomb, Windows 7, and all the rest..&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-6978354253908705649?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xkEZe4Fc4F5g8fjOoXE4HJaSW-s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xkEZe4Fc4F5g8fjOoXE4HJaSW-s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xkEZe4Fc4F5g8fjOoXE4HJaSW-s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xkEZe4Fc4F5g8fjOoXE4HJaSW-s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/QQTvgIn0VIM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/6978354253908705649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/01/tablets-at-ces-2011-honeycomb-windows-7.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/6978354253908705649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/6978354253908705649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/QQTvgIn0VIM/tablets-at-ces-2011-honeycomb-windows-7.html" title="2011 the year of many many tablets - at last" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/01/tablets-at-ces-2011-honeycomb-windows-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYCRHYzfSp7ImA9Wx9XFEQ.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1561302520313448447</id><published>2011-01-08T14:49:00.000Z</published><updated>2011-01-08T14:49:25.885Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-08T14:49:25.885Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><title>How to restyle WPF controls</title><content type="html">&lt;div style="text-align: justify;"&gt;If you have to restyle some controls and you do not have a designer on-board there are some tools you can use or places you can check to find/gather some answers and inspirations. If you have &lt;b&gt;&lt;a href="http://www.microsoft.com/expression/products/blend_overview.aspx"&gt;Expression Blend&lt;/a&gt;&lt;/b&gt;&amp;nbsp;you do not have to search for additional tools or help. Whatever you need to do it can be achieved with this tool. There are still some other solutions. You can use&amp;nbsp;Microsoft's style examples which you can grab from&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms745683.aspx"&gt;&lt;b&gt;Styling &amp;amp; Templating&lt;/b&gt;&lt;/a&gt;&amp;nbsp;webpage or directly from this link&amp;nbsp;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=160041"&gt;&lt;b&gt;ControlTemplateExamples.zip&lt;/b&gt;&lt;/a&gt;.&amp;nbsp;If you are not satisfied with this approach you can go for&amp;nbsp;&lt;b&gt;&lt;a href="http://www.kaxaml.com/"&gt;Kaxaml&lt;/a&gt;&amp;nbsp;&lt;/b&gt;which contains style snippets and can be used as a start point of your restyling process.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Expression Blend&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TSh3h8buFVI/AAAAAAAAHP4/8e9isSOu6E8/s1600/ExpressionBlend.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TSh3h8buFVI/AAAAAAAAHP4/8e9isSOu6E8/s640/ExpressionBlend.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Microsoft's examples&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Xo8Fp2mnDdk/TSh3yJ3JW1I/AAAAAAAAHP8/w9qYY1PM2C4/s1600/Microsoft+Styling+001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://3.bp.blogspot.com/_Xo8Fp2mnDdk/TSh3yJ3JW1I/AAAAAAAAHP8/w9qYY1PM2C4/s640/Microsoft+Styling+001.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Xo8Fp2mnDdk/TSh30Mq0nzI/AAAAAAAAHQA/gLRALACKcwI/s1600/Microsoft+Styling+002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://3.bp.blogspot.com/_Xo8Fp2mnDdk/TSh30Mq0nzI/AAAAAAAAHQA/gLRALACKcwI/s640/Microsoft+Styling+002.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Kaxaml&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TSh39jrmkbI/AAAAAAAAHQE/BA1cv3zFDKI/s1600/Kaxaml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TSh39jrmkbI/AAAAAAAAHQE/BA1cv3zFDKI/s640/Kaxaml.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-1561302520313448447?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ze9w2F2s2bt2C5gnzAnA1yAT8Jk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ze9w2F2s2bt2C5gnzAnA1yAT8Jk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ze9w2F2s2bt2C5gnzAnA1yAT8Jk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ze9w2F2s2bt2C5gnzAnA1yAT8Jk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/xNuGBkOnexY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1561302520313448447/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2011/01/how-to-restyle-wpf-controls.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1561302520313448447?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1561302520313448447?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/xNuGBkOnexY/how-to-restyle-wpf-controls.html" title="How to restyle WPF controls" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TSh3h8buFVI/AAAAAAAAHP4/8e9isSOu6E8/s72-c/ExpressionBlend.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2011/01/how-to-restyle-wpf-controls.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkINSH8ycSp7ImA9Wx9QFk4.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1623355262612476460</id><published>2010-12-29T14:46:00.001Z</published><updated>2010-12-29T14:56:39.199Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-29T14:56:39.199Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>How Poles created the new Enigma</title><content type="html">Interesting article to read&amp;nbsp;&lt;a href="http://en.poland.gov.pl/How,Poles,created,the,new,Enigma,Events,7072x782.html"&gt;"How Poles created the new Enigma"&lt;/a&gt;&amp;nbsp;especially that this cryptographic system was created in my alma mater.&lt;br /&gt;
If you are interested in Engima please have a look at this link&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Enigma_machine"&gt;Enigma machine&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-1623355262612476460?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ogpMatsLk980taGTkuy889L41UI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ogpMatsLk980taGTkuy889L41UI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ogpMatsLk980taGTkuy889L41UI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ogpMatsLk980taGTkuy889L41UI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/UJb1ihtpsCA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1623355262612476460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2010/12/how-poles-created-new-enigma.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1623355262612476460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1623355262612476460?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/UJb1ihtpsCA/how-poles-created-new-enigma.html" title="How Poles created the new Enigma" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2010/12/how-poles-created-new-enigma.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkAHR3s8fCp7ImA9Wx9RGEs.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-138288103729121338</id><published>2010-12-20T18:10:00.001Z</published><updated>2010-12-20T18:12:16.574Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-20T18:12:16.574Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>How to place items on a Canvas using ItemsControl and PrepareContainerForItemOverride method</title><content type="html">&lt;div style="text-align: justify;"&gt;If you have to place some items on a canvas and the whole process has to be performed automatically using binding and ItemsControl, so you have to be aware that ItemsControl wraps each item with ContentPresenter before adding it to the canvas. It means that defining bindings between Canvas.Left/Top attached properties and your bound objects will not reflect their position on the canvas because your binding should be defined one level higher in ItemsControl visual tree.There are at least two ways how you can solve this problem:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;harder one - to find a parent element (using VisualTreeHepler&amp;nbsp;because there is no direct access to the ContentPresenter) of your visual data representation and bind it to the coordinates. The main disadvantage of this solution is that you have to modify your control because of the need to find a parent container. It makes an additional dependency and narrows the way how your control can be used in the future.&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;simpler one - to create a class which derives from ItemsControl class and override PrepareContainerForItemOverride method where you &amp;nbsp;can create necessary bindings to pass information about coordinates.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; PrepareContainerForItemOverride(DependencyObject element, &lt;span class="kwrd"&gt;object&lt;/span&gt; item)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            FrameworkElement contentitem = element &lt;span class="kwrd"&gt;as&lt;/span&gt; FrameworkElement;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            Binding leftBinding = &lt;span class="kwrd"&gt;new&lt;/span&gt; Binding(&lt;span class="str"&gt;"X"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            Binding topBinding = &lt;span class="kwrd"&gt;new&lt;/span&gt; Binding(&lt;span class="str"&gt;"Y"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            contentitem.SetBinding(Canvas.LeftProperty, leftBinding);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            contentitem.SetBinding(Canvas.TopProperty, topBinding);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.PrepareContainerForItemOverride(element, item);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;If you look at input parameters of PrepareContainerForItemOverride method you will find a DependencyObject &amp;nbsp;parameter which represents a wrapper (ContentPresenter) and an object parameter which represents bound data, so you have direct access to the data and you can bind whichever parameter you want (in this case coordinates).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you would like to see this solution in action you can download it from source code section in this article:&amp;nbsp;&lt;a href="http://pavzav.blogspot.com/2010/12/andrews-monotone-chain-convex-hull.html"&gt;Convex Hull Algorith&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-138288103729121338?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iybjEhe-7KAfnFyvPTa9MEiD6c0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iybjEhe-7KAfnFyvPTa9MEiD6c0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iybjEhe-7KAfnFyvPTa9MEiD6c0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iybjEhe-7KAfnFyvPTa9MEiD6c0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/fGd5OzQ-oTk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/138288103729121338/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2010/12/placing-items-on-canvas-using.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/138288103729121338?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/138288103729121338?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/fGd5OzQ-oTk/placing-items-on-canvas-using.html" title="How to place items on a Canvas using ItemsControl and PrepareContainerForItemOverride method" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2010/12/placing-items-on-canvas-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUCSXc9eSp7ImA9Wx9UFUg.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1783293149283988399</id><published>2010-12-19T01:09:00.008Z</published><updated>2011-02-13T00:17:48.961Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-13T00:17:48.961Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Andrew's Monotone Chain Convex Hull algorithm</title><content type="html">&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;This algorithm constructs convex hull of a set of 2D points.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Algorithm:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Sorts points based on their X coordinate,&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Selects two points which contain minimum and maximum of X coordinate (P1, P2) from all points,&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Divides the set of points into two sub-sets (upper and lower hull) based on the line between point P1 and point P2,&lt;/span&gt;&lt;/li&gt;
&lt;li style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Processes points on per hull basis to detect points which have to be used to create a convex polygon.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TQVlsz-tMJI/AAAAAAAAGlE/KFVfyLyD4Yc/s1600/Hull.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;img border="0" height="347" src="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TQVlsz-tMJI/AAAAAAAAGlE/KFVfyLyD4Yc/s400/Hull.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: medium;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Example of usage:&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/V-Lc2oDub58?fs=1&amp;amp;hl=en_US&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/V-Lc2oDub58?fs=1&amp;amp;hl=en_US&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="512" height="288"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Source code:&amp;nbsp;&lt;a href="https://sites.google.com/site/pavzav/ConvexHullAlgorithm.zip?attredirects=0&amp;amp;d=1"&gt;ConvexHullAlgorithm.zip&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Useful links:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://fleischer.selfip.com/Courses/Algorithms/Alg_cs_07w/Webprojects/Zhaobo_hull/index.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://fleischer.selfip.com/Courses/Algorithms/Alg_cs_07w/Webprojects/Zhaobo_hull/index.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.algorithmist.com/index.php/Monotone_Chain_Convex_Hull"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://www.algorithmist.com/index.php/Monotone_Chain_Convex_Hull&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/416560600691994772-1783293149283988399?l=pavzav.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EqUvpxuZ3oo1O1fmCLBBMbHyb9c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EqUvpxuZ3oo1O1fmCLBBMbHyb9c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EqUvpxuZ3oo1O1fmCLBBMbHyb9c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EqUvpxuZ3oo1O1fmCLBBMbHyb9c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/1L5vQ3yVGLE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1783293149283988399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2010/12/andrews-monotone-chain-convex-hull.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1783293149283988399?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1783293149283988399?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/1L5vQ3yVGLE/andrews-monotone-chain-convex-hull.html" title="Andrew's Monotone Chain Convex Hull algorithm" /><author><name>PaVZaV</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Xo8Fp2mnDdk/TQVlsz-tMJI/AAAAAAAAGlE/KFVfyLyD4Yc/s72-c/Hull.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2010/12/andrews-monotone-chain-convex-hull.html</feedburner:origLink></entry></feed>

