<?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:blogger="http://schemas.google.com/blogger/2008" 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;D0UARHk_eyp7ImA9WhBaEU0.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772</id><updated>2013-05-21T04:00:45.743+01:00</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="WCF" /><category term="Technology" /><category term="HTML" /><category term="IT" /><category term="Unity" /><category term="Photography" /><category term="JavaScript" /><category term="WPF" /><category term="Silverlight" /><category term="Windows 7" /><title>PaVZaV's blog</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>45</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;CU4EQHg7eip7ImA9WhBREE0.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-8840144153864031625</id><published>2013-02-27T22:23:00.001Z</published><updated>2013-02-27T22:25:01.602Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-27T22:25:01.602Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>Is it really our future?</title><content type="html">&lt;div style="text-align: center;"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/nKIu9yen5nc" width="560"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/3f68AOJiHVI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/8840144153864031625/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2013/02/is-it-really-our-future.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/8840144153864031625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/8840144153864031625?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/3f68AOJiHVI/is-it-really-our-future.html" title="Is it really our future?" /><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/nKIu9yen5nc/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2013/02/is-it-really-our-future.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4FRHY7eip7ImA9WhBREE0.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1558172250680479350</id><published>2013-01-13T00:06:00.000Z</published><updated>2013-02-27T22:25:15.802Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-27T22:25:15.802Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>Microsoft Technologies</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;img src="http://blogs.technet.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-80-73-Blogpost/2626.MSFT-Tech.jpg" width="540" /&gt; &lt;/div&gt;
Microsoft Technologies - An infographic by the team from &lt;a href="http://www.blogger.com/www.microsoft.com/next"&gt;Next at Microsoft&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/101rwuR3PKk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1558172250680479350/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2013/01/microsoft-technologies.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1558172250680479350?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1558172250680479350?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/101rwuR3PKk/microsoft-technologies.html" title="Microsoft Technologies" /><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/2013/01/microsoft-technologies.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4HRnkyfCp7ImA9WhVVFE8.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-1306813359520250318</id><published>2012-05-07T22:42:00.000+01:00</published><updated>2012-05-07T22:42:17.794+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-07T22:42:17.794+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PRISM" /><category scheme="http://www.blogger.com/atom/ns#" term="Unity" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Interception and ServiceLocator in Unity</title><content type="html">&lt;div style="text-align: justify;"&gt;
This time I would like to familiarize you with two interesting concepts of Unity (IoC Container) which you can find very useful.&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;Interceptors &lt;/b&gt;allow programmers to run some functionality before or after a selected piece of code. This approach is called Aspect-Oriented Programming (AOP) and its main goal is to increase modularity&amp;nbsp;through separation of cross-cutting concerns e.g. logging messages before and after a code execution. The following example shows how easy you can apply logging in a method using a&amp;nbsp;&lt;b&gt;[MethodHandler()]&lt;/b&gt;&amp;nbsp;attribute.&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;
&lt;b&gt;ServiceLocator &lt;/b&gt;is an excellent concept of the Unity but I do not like the fact that it can be easily abused and overdosed. An example below shows two different approaches for creating an instance of a Logger class. &amp;nbsp;First one is using constructor injection and the second one is using &lt;b&gt;ServiceLocator &lt;/b&gt;(have a look at the constructors). The only one case scenario when &lt;b&gt;ServiceLocator &lt;/b&gt;seems to be very useful is a situation when we have a class created outside of the Unity and this class needs access to the other types registered in a container. An example below shows how to make &lt;b&gt;ServiceLocator &lt;/b&gt;aware of the Unity.&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;class&lt;/span&gt; Program&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;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&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;                IUnityContainer unity = &lt;span class="kwrd"&gt;new&lt;/span&gt; UnityContainer();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                UnityServiceLocator locator = &lt;span class="kwrd"&gt;new&lt;/span&gt; UnityServiceLocator(unity);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                ServiceLocator.SetLocatorProvider(() =&amp;gt; locator);&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;                unity.AddNewExtension&amp;lt;Interception&amp;gt;();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                unity.RegisterType&amp;lt;ILogger, Logger&amp;gt;();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                unity.RegisterType&amp;lt;ITest, Test&amp;gt;().Configure&amp;lt;Interception&amp;gt;().SetDefaultInterceptorFor&amp;lt;ITest&amp;gt;(&lt;span class="kwrd"&gt;new&lt;/span&gt; InterfaceInterceptor());&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;                unity.Resolve&amp;lt;ITest&amp;gt;().Execute();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                Console.ReadKey();&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;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Test : ITest&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="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute()&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;                Console.WriteLine(&lt;span class="str"&gt;"Execute Method Body"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            }&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;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ITest&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;            [MethodHandler()]&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute();&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;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CallHandler : ICallHandler&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            &lt;span class="kwrd"&gt;private&lt;/span&gt; IUnityContainer _container;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            &lt;span class="kwrd"&gt;private&lt;/span&gt; ILogger _logger;&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;span class="kwrd"&gt;public&lt;/span&gt; CallHandler(IUnityContainer container, ILogger logger)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                _logger = logger;&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;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; CallHandler()&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;                _logger = ServiceLocator.Current.GetInstance&amp;lt;ILogger&amp;gt;();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)&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;                _logger.LogPreMessage(input.MethodBase.Name);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;                IMethodReturn methodReturn = getNext()(input, getNext);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;                _logger.LogPostMessage(input.MethodBase.Name);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; methodReturn;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Order&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &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;get&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                &lt;span class="kwrd"&gt;set&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;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MethodHandlerAttribute : HandlerAttribute&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; MethodHandlerAttribute()&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;/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;public&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; ICallHandler CreateHandler(IUnityContainer container)&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;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; CallHandler(container);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &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;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;        &lt;span class="kwrd"&gt;interface&lt;/span&gt; ILogger&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;span class="kwrd"&gt;void&lt;/span&gt; LogPreMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; msg);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;            &lt;span class="kwrd"&gt;void&lt;/span&gt; LogPostMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; msg);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;        &lt;span class="kwrd"&gt;class&lt;/span&gt; Logger : ILogger&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; LogPreMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; msg)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;                Console.WriteLine(&lt;span class="str"&gt;"Pre -&amp;gt; "&lt;/span&gt; + msg);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; LogPostMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; msg)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;                Console.WriteLine(&lt;span class="str"&gt;"Post -&amp;gt; "&lt;/span&gt; + msg);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Useful links:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;http://en.wikipedia.org/wiki/Aspect-oriented_programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff647107.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff647107.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff921142(v=pandp.20).aspx"&gt;http://msdn.microsoft.com/en-us/library/ff921142(v=pandp.20).aspx&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/hawLxFwINWA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/1306813359520250318/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2012/05/interception-and-servicelocator-in.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1306813359520250318?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/1306813359520250318?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/hawLxFwINWA/interception-and-servicelocator-in.html" title="Interception and ServiceLocator in Unity" /><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>1</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2012/05/interception-and-servicelocator-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ACRX8-eCp7ImA9WhVWF04.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-426204483265411100</id><published>2012-04-29T23:30:00.000+01:00</published><updated>2012-04-29T23:49:24.150+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-29T23:49:24.150+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>Live Tiles</title><content type="html">&lt;div style="text-align: justify;"&gt;
One of the most expected features of Mango release were &lt;b&gt;live tiles&lt;/b&gt; allowing developers to present data on the Home screen. I was quite exited about this feature especially that I wanted to give users opportunity to learn new words or whole sentences. You can see it in action on&amp;nbsp;&lt;a href="http://pavzav.blogspot.co.uk/p/multi-translator.html"&gt;Multi-Translator Webpage&lt;/a&gt;&amp;nbsp;or you can install it from&amp;nbsp;&lt;a href="http://www.windowsphone.com/en-GB/apps/386c92a9-ec33-4f92-9499-172bd6e4131b"&gt;Marketplace&lt;/a&gt;.There are actually few ways to present data in &lt;b&gt;live tiles&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
FindAndDeleteTile method&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;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FindAndDeleteTile(&lt;span class="kwrd"&gt;string&lt;/span&gt; tileName)&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;            ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault(x =&amp;gt; x.NavigationUri.ToString().Contains(&lt;span class="str"&gt;"DefaultTitle="&lt;/span&gt;+tileName));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (tile != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                tile.Delete();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
TileHelper class&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;class&lt;/span&gt; TileHelper&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;void&lt;/span&gt; CreateTile(&lt;span class="kwrd"&gt;string&lt;/span&gt; content, &lt;span class="kwrd"&gt;string&lt;/span&gt; fileName, &lt;span class="kwrd"&gt;string&lt;/span&gt; originalFileName)&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;            TextBlock text = &lt;span class="kwrd"&gt;new&lt;/span&gt; TextBlock()&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;                Width = 173,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                Height = 173,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                TextWrapping = TextWrapping.Wrap,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                Foreground = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.White),&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                Padding = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thickness(5, 5, 5, 60),&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                FontSize = 18,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                Clip = &lt;span class="kwrd"&gt;new&lt;/span&gt; RectangleGeometry { Rect = &lt;span class="kwrd"&gt;new&lt;/span&gt; Rect(0, 0, 173, 135) }&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;            text.Text = content;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            Canvas canvas = &lt;span class="kwrd"&gt;new&lt;/span&gt; Canvas() { Width = 173, Height = 173, Background = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Blue) };&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            canvas.Children.Add(text);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            StreamResourceInfo sri = Application.GetResourceStream(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(originalFileName, UriKind.Relative));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            BitmapImage src = &lt;span class="kwrd"&gt;new&lt;/span&gt; BitmapImage();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            src.SetSource(sri.Stream);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            WriteableBitmap background = &lt;span class="kwrd"&gt;new&lt;/span&gt; WriteableBitmap(src);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            WriteableBitmap bmp = &lt;span class="kwrd"&gt;new&lt;/span&gt; WriteableBitmap((&lt;span class="kwrd"&gt;int&lt;/span&gt;)canvas.Width, (&lt;span class="kwrd"&gt;int&lt;/span&gt;)canvas.Height);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            bmp.Render(canvas, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            bmp.Invalidate();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; x = 0; x &amp;lt; canvas.Width; x++)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; y = 0; y &amp;lt; canvas.Height; y++)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                    &lt;span class="rem"&gt;//Detect the colour different from your canvas background (in this case Blue) &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                    &lt;span class="rem"&gt;//and replace the background.jpg pixel with the one from your canvas    &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;if&lt;/span&gt; (bmp.Pixels[y * (&lt;span class="kwrd"&gt;int&lt;/span&gt;)canvas.Width + x] != BitConverter.ToInt32(&lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] { 255, 0, 0, 255 }, 0))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;                        background.Pixels[y * (&lt;span class="kwrd"&gt;int&lt;/span&gt;)canvas.Width + x] = bmp.Pixels[y * (&lt;span class="kwrd"&gt;int&lt;/span&gt;)canvas.Width + x];&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;var&lt;/span&gt; iss = IsolatedStorageFile.GetUserStoreForApplication();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; stm = iss.CreateFile(fileName))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;                background.SaveJpeg(stm, 173, 173, 0, 100);&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;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; CreateRenderedTile(FrameworkElement frameworkElement, &lt;span class="kwrd"&gt;string&lt;/span&gt; fileName)&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;            WriteableBitmap bmp = &lt;span class="kwrd"&gt;new&lt;/span&gt; WriteableBitmap((&lt;span class="kwrd"&gt;int&lt;/span&gt;)frameworkElement.Width, (&lt;span class="kwrd"&gt;int&lt;/span&gt;)frameworkElement.Height);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            bmp.Render(frameworkElement, &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;            bmp.Invalidate();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; iss = IsolatedStorageFile.GetUserStoreForApplication();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (&lt;span class="kwrd"&gt;var&lt;/span&gt; stm = iss.CreateFile(fileName))&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                bmp.SaveJpeg(stm, 173, 173, 0, 100);&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;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Default approach - using API 



&lt;/b&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;var&lt;/span&gt; filename = &lt;span class="str"&gt;"/Shared/ShellContent/renderedF.jpg"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; filenameBack = &lt;span class="str"&gt;"/Shared/ShellContent/renderedB.jpg"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        TileHelper.CreateRenderedTile(frontBorder, filename);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        TileHelper.CreateRenderedTile(backBorder, filenameBack);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        FindAndDeleteTile(&lt;span class="str"&gt;"Rendered"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        StandardTileData NewTileData = &lt;span class="kwrd"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            BackgroundImage = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"isostore:"&lt;/span&gt; + filename, UriKind.Absolute),&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            Title = &lt;span class="str"&gt;"rendered - front"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            BackTitle = &lt;span class="str"&gt;"rendered - back"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            BackBackgroundImage = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"isostore:"&lt;/span&gt; + filenameBack, UriKind.Absolute)&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;        ShellTile.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"/MainPage.xaml?DefaultTitle=Rendered"&lt;/span&gt;, UriKind.Relative), NewTileData);&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Custom approaches:&lt;/b&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Rendered &lt;/b&gt;- Saving the content of controls visible on the screen into a file and using it as a tile background




&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; filename = &lt;span class="str"&gt;"/Shared/ShellContent/renderedF.jpg"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; filenameBack = &lt;span class="str"&gt;"/Shared/ShellContent/renderedB.jpg"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        TileHelper.CreateRenderedTile(frontBorder, filename);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        TileHelper.CreateRenderedTile(backBorder, filenameBack);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        FindAndDeleteTile(&lt;span class="str"&gt;"Rendered"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        StandardTileData NewTileData = &lt;span class="kwrd"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            BackgroundImage = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"isostore:"&lt;/span&gt; + filename, UriKind.Absolute),&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            Title = &lt;span class="str"&gt;"rendered - front"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            BackTitle = &lt;span class="str"&gt;"rendered - back"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            BackBackgroundImage = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"isostore:"&lt;/span&gt; + filenameBack, UriKind.Absolute)&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;        ShellTile.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"/MainPage.xaml?DefaultTitle=Rendered"&lt;/span&gt;, UriKind.Relative), NewTileData);&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;In memory&lt;/b&gt; - Saving a content of controls generated in memory into a file and using it as a tile background 




&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; filename = &lt;span class="str"&gt;"/Shared/ShellContent/inMemoryF.jpg"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; filenameBack = &lt;span class="str"&gt;"/Shared/ShellContent/inMemoryB.jpg"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        TileHelper.CreateTile(front.Text, filename, &lt;span class="str"&gt;"Images/background.jpg"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        TileHelper.CreateTile(back.Text, filenameBack, &lt;span class="str"&gt;"Images/backgroundBack.jpg"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        FindAndDeleteTile(&lt;span class="str"&gt;"InMemory"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        StandardTileData NewTileData = &lt;span class="kwrd"&gt;new&lt;/span&gt; StandardTileData&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            BackgroundImage = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"isostore:"&lt;/span&gt; + filename, UriKind.Absolute),&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            Title = &lt;span class="str"&gt;"in memory - front"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            BackTitle = &lt;span class="str"&gt;"in memory - back"&lt;/span&gt;,&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            BackBackgroundImage = &lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"isostore:"&lt;/span&gt; + filenameBack, UriKind.Absolute)&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;        ShellTile.Create(&lt;span class="kwrd"&gt;new&lt;/span&gt; Uri(&lt;span class="str"&gt;"/MainPage.xaml?DefaultTitle=InMemory"&lt;/span&gt;, UriKind.Relative), NewTileData);&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;div&gt;
Useful links:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh202979(v=VS.92).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh202979(v=VS.92).aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff769548%28v=VS.92%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff769548%28v=VS.92%29.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff431744(v=VS.92).aspx"&gt;http://msdn.microsoft.com/en-us/library/ff431744(v=VS.92).aspx&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Source code:&amp;nbsp;&lt;a href="https://docs.google.com/open?id=0B6HBaEFHs6IhLVk5MFhNYnhKYXM"&gt;LiveTiles.&lt;/a&gt;rar&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/X5BhV_zP3S4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/426204483265411100/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2012/04/live-tiles.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/426204483265411100?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/426204483265411100?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/X5BhV_zP3S4/live-tiles.html" title="Live Tiles" /><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/2012/04/live-tiles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYMSXg5fCp7ImA9WhVRFEg.&quot;"><id>tag:blogger.com,1999:blog-416560600691994772.post-5360451483415228156</id><published>2012-03-22T21:53:00.001Z</published><updated>2012-03-22T21:53:08.624Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-22T21:53:08.624Z</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</title><content type="html">Multi-Translator version 2.1 has been released&amp;nbsp;&lt;a href="http://www.windowsphone.com/en-GB/apps/386c92a9-ec33-4f92-9499-172bd6e4131b"&gt;http://www.windowsphone.com/en-GB/apps/386c92a9-ec33-4f92-9499-172bd6e4131b&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/Tecprogampho/~4/C7nlqfn4U6s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pavzav.blogspot.com/feeds/5360451483415228156/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://pavzav.blogspot.com/2012/03/multi-translator.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5360451483415228156?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/416560600691994772/posts/default/5360451483415228156?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Tecprogampho/~3/C7nlqfn4U6s/multi-translator.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><thr:total>0</thr:total><feedburner:origLink>http://pavzav.blogspot.com/2012/03/multi-translator.html</feedburner:origLink></entry><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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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></feed>
