<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4225176766855896137</id><updated>2012-01-06T15:03:29.050+05:30</updated><category term='Expression Blend'/><category term='Tips'/><category term='Applications'/><category term='Non-Technical'/><category term='Resources'/><category term='Vector'/><category term='Animation'/><category term='Tutorials'/><category term='News'/><category term='Books'/><title type='text'>A Beautiful Day</title><subtitle type='html'>Draco dormiens nunquam titillandus</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-2546493948890539236</id><published>2010-09-09T09:34:00.019+05:30</published><updated>2010-09-13T09:35:53.280+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Bet You Didn't Know</title><content type='html'>Well ... Of course you know some of them ... Here are they ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;1. When you install Silverlight toolkit, a sample page gets into your machine:&lt;/span&gt; You can open the page and have a quick look at the controls. Default location is ...&lt;br /&gt;&lt;a href="c:%5CProgram%20Files%5CMicrosoft%20SDKs%5CSilverlight%5Cv4.0%5CToolkit%5CApr10%5CSamples%5Cdefault.htm"&gt;C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Samples\default.htm&lt;/a&gt;&lt;br /&gt;You also get the toolkit document in&lt;br /&gt;&lt;a href="c:%5CProgram%20Files%5CMicrosoft%20SDKs%5CSilverlight%5Cv4.0%5CToolkit%5CApr10"&gt;C:\Program Files\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;2. My domain hosting company doesn't support .xap MIME type:&lt;/span&gt; The solution is to change your .xap extension to .zip and it will work. Don't forget to change this in the Object tag source param also. One tiny problem with this approach is that your Splash screen (That you built using plain old XAML and JavaScript) won't work.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;3. MouseLeftButtonDown event is not fired when there is no background specified:&lt;/span&gt; When you write an mouse event in a Panel you need to specify some background. So if you want to make the background transparent add Background="Transparent" instead of leaving it blank. This is true for other FrameworkElements too (Like Fill in Rectangle)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;4. You can specify your custom xml namespaces with default url: &lt;/span&gt;You need to add &lt;span&gt;&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;XmlnsDefinitionAttribute&lt;/span&gt; in AssemblyInfo.cs file and give an unique url as xml namespace. For example &lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;[assembly:XmlnsDefinition("http://mrgni.com","TestLibrary")]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;5. You can go full-screen automatically:&lt;/span&gt; Well only for Out of Browser applications with elevated trusts. And guess what? All keyboard controls work there.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;6. There is no cross domain restriction when your application runs in elevated trust:&lt;/span&gt; Well isn't it nice? For elevated trust you can work with COM components. Specially helpful for working with Microsoft Office documents. But whatever you do &lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;You can not go Administrator mode in elevated trust mode.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-2546493948890539236?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/2546493948890539236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=2546493948890539236' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2546493948890539236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2546493948890539236'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2010/09/bet-you-didnt-know.html' title='Bet You Didn&apos;t Know'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-6093754197796712044</id><published>2010-06-28T10:40:00.011+05:30</published><updated>2010-07-05T09:53:02.277+05:30</updated><title type='text'>Zakumi Fan Club Is Live</title><content type='html'>My first hobby website goes online. You can see it live in &lt;a href="http://mrgni.com/"&gt;http://mrgni.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;[ UPDATE: ZFC is selected in &lt;a href="http://www.silverlight.net/showcase/"&gt;Silverlight showcase&lt;/a&gt;. ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is made with &lt;a href="http://www.microsoft.com/silverlight/"&gt;Silverlight 4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can get the full source code [ Except the database connection string. ] in &lt;a href="http://zakumifanclub.codeplex.com/"&gt;codeplex&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Features...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. There are 4 main tabs in the site. &lt;span style="font-weight: bold;"&gt;Teams N Results, &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;About ZFC, &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Gallery &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;News&lt;/span&gt;.&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;Teams N Results&lt;/span&gt; shows the information/standing of teams, groups, schedule and next match in local time.&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;About ZFC&lt;/span&gt; is stuffed with FAQ and information about the site and Zakumi.&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;Gallery&lt;/span&gt; shows photos related to current world cup. It also has an option to like this application and share this in Facebook if you connect with Facebook.&lt;br /&gt;5. &lt;span style="font-weight: bold;"&gt;News &lt;/span&gt;tab displays what people are saying related to FIFA in Facebook and twitter. It also gives you the facility to search in those sites. If you login with Facebook you get an option to see what your friends are saying about the current World cup. It also shows news from FIFA website feed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Development story ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;Design &lt;/span&gt;...&lt;br /&gt;I have started this project long time back. The initial problem I faced is to finalize the design ... It was like ...&lt;br /&gt;1. You create a new design&lt;br /&gt;2. Make it live [ Make the user interface in xaml ]&lt;br /&gt;3. Show it to your friends.&lt;br /&gt;4. Scrap it.&lt;br /&gt;5. Go to step 1.&lt;br /&gt;&lt;br /&gt;Here are the things I listed down before starting the project&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    [ And here is what it has become when I finalized the design ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. The background will be light and text dark.&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    [Opposite. Though I tried to maintain the contrast. ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. It should fit in any browser resolution. [ Lower limit 1024 x 768 ]&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    [It was so difficult that finally I made it 998px wide. Though it should not look bad at higher resolutions ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. All texts and fonts should be highly readable.&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   [ Most of the time yes. In a few cases no. ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. There must be a logo.&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; [There is. This is what you can create within an hour or so. It looks pretty horrible. ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here was the design I came up with, at my second try ...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/TCgyKIiB3rI/AAAAAAAAAQE/Sy9p8x16qWA/s1600/site_0_0.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 214px;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/TCgyKIiB3rI/AAAAAAAAAQE/Sy9p8x16qWA/s400/site_0_0.png" alt="" id="BLOGGER_PHOTO_ID_5487691295621242546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here how it looks after its finished ...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K9AMUL1hnjM/TCg0FjHsFLI/AAAAAAAAAQM/h_GoR62LflY/s1600/mrgni.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 218px;" src="http://1.bp.blogspot.com/_K9AMUL1hnjM/TCg0FjHsFLI/AAAAAAAAAQM/h_GoR62LflY/s400/mrgni.png" alt="" id="BLOGGER_PHOTO_ID_5487693415882429618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Both of them are direct screen shots of live site ... not the photoshop mock design.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Development&lt;/span&gt; ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Source control:&lt;/span&gt; Used TFS 2010 with codeplex as source control. And believe me it helped me a lot more than what I initially expected.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Connect with Facebook: &lt;/span&gt;I am using &lt;a href="http://facebooktoolkit.codeplex.com/"&gt;Facebook Developer Toolkit&lt;/a&gt; for it. The problem is it uses the old Graph API and has some small bugs in it. Also it is a heavy weight library that is not required for my website.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Animations: &lt;/span&gt;The site is pretty dull. There are only a few very simple animations. It is mainly because of lack of planning and time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Web services and Database: &lt;/span&gt;I am using WCF services and MS-SQL server for DB. ADO.NET entity models as ORM. It went smoothly but there are some improvements can be done.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[ The website is not updated with the latest results and 2nd round matches yet ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Tanmoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-6093754197796712044?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/6093754197796712044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=6093754197796712044' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6093754197796712044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6093754197796712044'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2010/06/zakumi-fan-club-is-live.html' title='Zakumi Fan Club Is Live'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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://4.bp.blogspot.com/_K9AMUL1hnjM/TCgyKIiB3rI/AAAAAAAAAQE/Sy9p8x16qWA/s72-c/site_0_0.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-3227494173196242039</id><published>2010-02-08T11:41:00.006+05:30</published><updated>2010-02-08T12:20:43.790+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vector'/><category scheme='http://www.blogger.com/atom/ns#' term='Expression Blend'/><title type='text'>Zakumi in XAML</title><content type='html'>I have made a vector (Xaml) image of the world cup 2010 Mascot Zakumi. Feel free to use/modify it if you want.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K9AMUL1hnjM/S2-yeCeES6I/AAAAAAAAAOw/1PIhwyO2Tls/s1600-h/zakumi.PNG"&gt;&lt;img style="cursor: pointer; width: 217px; height: 241px;" src="http://2.bp.blogspot.com/_K9AMUL1hnjM/S2-yeCeES6I/AAAAAAAAAOw/1PIhwyO2Tls/s400/zakumi.PNG" alt="" id="BLOGGER_PHOTO_ID_5435759504388279202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can download it from &lt;a href="http://ddwxbw.bay.livefilestore.com/y1p4n09sVKkXVbr0Vu7xFkLmLpsgYLYLfOrzGZn0DBBQSN6I-CyVAXeIGzSydyisCfzGxlz3n5mduU0su7gJJ4NSmeT6039usnh/Zakumi.zip?download"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-3227494173196242039?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/3227494173196242039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=3227494173196242039' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/3227494173196242039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/3227494173196242039'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2010/02/zakumi-in-xaml.html' title='Zakumi in XAML'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/S2-yeCeES6I/AAAAAAAAAOw/1PIhwyO2Tls/s72-c/zakumi.PNG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-1849605364772952923</id><published>2009-11-03T23:17:00.012+05:30</published><updated>2010-09-19T20:01:29.517+05:30</updated><title type='text'>Shifting To Opera Again</title><content type='html'>I was an "Opera Fan" on my last college years but submitted to Firefox since then. In last couple of days I downloaded latest version of Opera (10.1) and started using it again. And guess what. I simply amazed. I will be using it as default on my laptop. There are some features that really makes it useful. Yes besides "Kool".&lt;br /&gt;&lt;br /&gt;1. Fastest back button: [ Back button works immediately. Probably it caches the pages in memory but who cares...] This specially helps me playing browser based massive multilayer games ( You know one second delay might means a lot in your bad times )&lt;br /&gt;&lt;br /&gt;2. Speed Dial: Ok ok. Other browsers do support it. Still there are some features like making it highly customizable keeps Opera apart.&lt;br /&gt;&lt;br /&gt;3. Notes: You can keep  notes in your browser. and you don't need an extra plug-in for it.&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;&lt;br /&gt;4. Opera turbo: &lt;/strong&gt;&lt;/span&gt;Admit - We all have slow Internet connections here in India. Don't we? Turbo makes highly compressed page and a little bit reduced image quality to fight that to 80%.&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;5. Opera links:&lt;/span&gt;&lt;/strong&gt; Keeps your bookmark with you... wherever you are. [Except inside &lt;a href="http://en.wikipedia.org/wiki/Mariana_Trench"&gt;mariana trench&lt;/a&gt; probably ]&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;6. Ctrl + Z works:&lt;/strong&gt;&lt;/span&gt; It reincarnate the closed tab. It is there with other browsers but not with fav ctrl + z.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;7. Go to web address:&lt;/span&gt;&lt;/strong&gt; Have a link in a page but not hyper-linked? Just right click ( or double click ) and select "Go to web address".&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;8. opera:config:&lt;/strong&gt;&lt;/span&gt; Present in Firefox [about:config] but not in so organized and friendly manner.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;9. Most perfect in following web standards:&lt;/span&gt;&lt;/strong&gt; Only living browser with score 100/100 in &lt;a href="http://acid3.acidtests.org/"&gt;ACID 3 test.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="cursor: pointer; width: 400px; height: 317px;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SvB2NvJWIiI/AAAAAAAAAOg/dr8aeUB9uGI/s400/acid.jpg" alt="" id="BLOGGER_PHOTO_ID_5399945931583267362" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;1o. Easter eggs n more:&lt;/span&gt;&lt;/strong&gt; Till now I found . &lt;/p&gt;&lt;p&gt;a.  Type /. in the address bar. It will take you to slashdot.org.&lt;/p&gt;&lt;p&gt;b. opera:drives will show the drives with directory ad all.&lt;/p&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-1849605364772952923?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/1849605364772952923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=1849605364772952923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1849605364772952923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1849605364772952923'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/11/shifting-to-opera-again.html' title='Shifting To Opera Again'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/SvB2NvJWIiI/AAAAAAAAAOg/dr8aeUB9uGI/s72-c/acid.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-7344810532292791800</id><published>2009-07-18T20:32:00.000+05:30</published><updated>2009-07-18T20:52:15.331+05:30</updated><title type='text'>One Year of "A Beautiful Day"</title><content type='html'>&lt;div&gt;My journey with Silverlight started about 1 year before I started this blog. My first "Professional Program" was in Silverlight and after that I went deep into other parts of web development forgetting Silverlight for a while. With Silverlight 2 beta, I again started looking at Silverlight and I started "Loving it".&lt;br /&gt;&lt;br /&gt;In the Journey I have meet many people smarter than I and tried to learn from them. I meet many people who has become my good friends. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;What I always lacking was "Design mind set". When I meet Ramya I found she got the exact part that I am missing to make a good application. You already have seen her making a simple but elegant animation example.&lt;br /&gt;&lt;br /&gt;Here are some statistics of the blog through one year... (I use Google analytics for this blog)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SmHlbm9xHtI/AAAAAAAAANM/qYyqkLqrwZQ/s1600-h/totalvisits.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 85px;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SmHlbm9xHtI/AAAAAAAAANM/qYyqkLqrwZQ/s400/totalvisits.png" alt="" id="BLOGGER_PHOTO_ID_5359817294026448594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K9AMUL1hnjM/SmHlRXEUeDI/AAAAAAAAANE/ZWy12e2ktbE/s1600-h/totalsiteusage.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 112px;" src="http://1.bp.blogspot.com/_K9AMUL1hnjM/SmHlRXEUeDI/AAAAAAAAANE/ZWy12e2ktbE/s400/totalsiteusage.png" alt="" id="BLOGGER_PHOTO_ID_5359817117960271922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K9AMUL1hnjM/SmHlny0Hc1I/AAAAAAAAANU/1grPch79mAs/s1600-h/traficsources.png"&gt;&lt;img style="cursor: pointer; width: 340px; height: 236px;" src="http://2.bp.blogspot.com/_K9AMUL1hnjM/SmHlny0Hc1I/AAAAAAAAANU/1grPch79mAs/s400/traficsources.png" alt="" id="BLOGGER_PHOTO_ID_5359817503365624658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SmHl0v96lvI/AAAAAAAAANc/vEJaWisbmFI/s1600-h/contentpopularity.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 259px;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SmHl0v96lvI/AAAAAAAAANc/vEJaWisbmFI/s400/contentpopularity.jpg" alt="" id="BLOGGER_PHOTO_ID_5359817725939717874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks all for encouraging to continue this blog and I hope we will enjoy the future journey with Silerlight even more...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-7344810532292791800?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/7344810532292791800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=7344810532292791800' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/7344810532292791800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/7344810532292791800'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/07/one-year-of-beautiful-day.html' title='One Year of &quot;A Beautiful Day&quot;'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/SmHlbm9xHtI/AAAAAAAAANM/qYyqkLqrwZQ/s72-c/totalvisits.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-6717718289302212062</id><published>2009-07-14T09:08:00.007+05:30</published><updated>2009-07-14T09:33:28.447+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Non-Technical'/><title type='text'>How Hard Is It To Get Somebody Install Silverlight</title><content type='html'>Let me share a small conversation to my friend Melissa that just Happened. She is 100% non technical (Never heard of Silverlight) and just bought a new PC. Here is how I convince her to install Silverlight to her PC......&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; hey&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; did u install silverlight in ur computer&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; ?&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; no&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; then do it.&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says: &lt;/span&gt;i m giving u the link&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; &lt;a href="http://www.microsoft.com/silverlight/"&gt;http://www.microsoft.com/silverlight/&lt;/a&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says: &lt;/span&gt;it will ask u to install it&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; I'm not downloading it&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; y not. its from Microsoft so u can be sure its safe&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says: &lt;/span&gt;I don't need it&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; u need it&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; Why do I need it&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; there are lots of site using silverlight&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; So&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; so if u install it u can see those sites, play games&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; listen to music ,watch videos and all&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; I can do all of that without it&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; but its something I am working on&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; Yeah&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; Then its not that good to have lol&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; yes it is&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; No it's not lol&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; why dont u do it....&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; Why should I do it&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; cause it only take 1 min to be done&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; I just don't want ten million of things downloaded on this computer&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; and it doesnt slow down ur comp&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; its not that&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;tanmoy says:&lt;/span&gt; its very small thing. around 4 MB only&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; k&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;melissa says:&lt;/span&gt; lol&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;melissa says:&lt;/span&gt; Fine ill do it&lt;br /&gt;&lt;br /&gt;Finally.....&lt;br /&gt;So now I do understand why people says might be as much as 40% of uses go away from a site that needs Silverlight without installing it.&lt;br /&gt;&lt;br /&gt;BTW according to &lt;a href="http://riastats.com/#"&gt;RIA Statistics &lt;/a&gt;Silverlight has gained around 30% of user base already. Impressive ha !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-6717718289302212062?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/6717718289302212062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=6717718289302212062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6717718289302212062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6717718289302212062'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/07/how-hard-is-it-to-get-someobody-install.html' title='How Hard Is It To Get Somebody Install Silverlight'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-1525720983829903953</id><published>2009-07-13T10:15:00.002+05:30</published><updated>2010-09-19T20:00:17.535+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><category scheme='http://www.blogger.com/atom/ns#' term='Animation'/><category scheme='http://www.blogger.com/atom/ns#' term='Expression Blend'/><title type='text'>Understanding Animation</title><content type='html'>From childhood we all are fascinated by one thing- movement of static objects or Animation. I feel the best part in Silverlight is its ability to animate things and fascinate its users. Animation always doesn't mean make a man run or breaking a table. Simple page transitions in a site or changes in the button when you hover over it , also comes under animation. So lets see how beautiful this animation can be. First we will animate a simple ball (an ellipse in technical terms!) using blend and then in the next part we will do the same animation from the code behind. So lets begin with it.&lt;br /&gt;&lt;br /&gt;First rule in animation which I follow is to picturize it in your mind. So here is the picturization:&lt;br /&gt;Lets think of a ball moving and falling in to a basket.&lt;br /&gt;&lt;br /&gt;Here is the application in action&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;iframe style="width: 400px; height: 300px; text-align: center;" src="http://mrgni.com/Blog_applications/RollingBall.html" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;For the representation of the ball we would need something that looks like a ball. The closest would be an ellipse.&lt;/li&gt;&lt;img id="BLOGGER_PHOTO_ID_5357143088479829922" style="border: 4px solid black; display: block; margin: 0px auto 10px; width: 320px; height: 190px; text-align: center;" alt="" src="http://3.bp.blogspot.com/_ziBBxKhWqww/SlhlQW_Hf6I/AAAAAAAAASU/bMhF-17a7zk/s320/1.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Now, think of the movement of the ball. The ball should bounce and roll over.So we would have to create a ground for it and keep this in mind. for the ground we can think of rectangle with a skew. &lt;img id="BLOGGER_PHOTO_ID_5357144456654306946" style="border: 4px solid black; display: block; margin: 0px auto 10px; width: 320px; height: 242px; text-align: center;" alt="" src="http://3.bp.blogspot.com/_ziBBxKhWqww/Slhmf_1VPoI/AAAAAAAAASk/VZ7Co8snz0M/s320/6.JPG" border="0" /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Next, we would have to think about the basket where we would be putting the ball. That can be again 2 ellipses with a skew(i mean a twisted ellipse). To give it an actual basket's feel we will take three such ellipses.&lt;img id="BLOGGER_PHOTO_ID_5357144811647728290" style="border: 4px solid black; display: block; margin: 0px auto 10px; width: 320px; height: 242px; text-align: center;" alt="" src="http://3.bp.blogspot.com/_ziBBxKhWqww/Slhm0qSW-qI/AAAAAAAAASs/Eo8zudgpInk/s320/3.JPG" border="0" /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;We would add few paths to make it look like a net.&lt;img id="BLOGGER_PHOTO_ID_5357145123750929314" style="border: 4px solid black; display: block; margin: 0px auto 10px; width: 320px; height: 242px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_ziBBxKhWqww/SlhnG09j46I/AAAAAAAAAS0/n-BbQsIppAs/s320/4.JPG" border="0" /&gt;We have completed our picturization and now that it really looks like a basket ball court, let's begin with the animation!&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;We can create storyboard and give timelines to it, so as to achive the movement of the ball.Here I have given the ball only two types of transformation i.e rotate transform and translate transform.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Rotate transfrom would give the ball its rolling over kind of effect, whereas, translate transform(TranslateTransform.Y, TranslateTransform.X) would give it the up and down motion or translation in x and y directions.&lt;img id="BLOGGER_PHOTO_ID_5357145958345011570" style="border: 4px solid black; display: block; margin: 0px auto 10px; width: 320px; height: 242px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_ziBBxKhWqww/Slhn3aES8XI/AAAAAAAAAS8/8YUZ_bjiNsE/s320/5.JPG" border="0" /&gt;To adjust the timeline, you just have the drag the white point! It is so easy!! Let us see the final animation!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="spec"&gt;&lt;br /&gt;Here is the &lt;a href="http://mrgni.com/ramya/RollingBall.zip"&gt;complete source code&lt;/a&gt; for it.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;In the next post you will see this animation done entirely in code.So keep watching this space!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-1525720983829903953?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/1525720983829903953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=1525720983829903953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1525720983829903953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1525720983829903953'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/06/understanding-animation.html' title='Understanding Animation'/><author><name>Ramya</name><uri>http://www.blogger.com/profile/05447140714251047001</uri><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/_ziBBxKhWqww/SlhlQW_Hf6I/AAAAAAAAASU/bMhF-17a7zk/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-2760998040025492889</id><published>2009-07-01T09:20:00.002+05:30</published><updated>2009-07-01T09:31:38.621+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><title type='text'>Some of the books in my collection</title><content type='html'>Most of the things I know are from internet blogs and community and from practical experience of me or other people.&lt;br /&gt;&lt;br /&gt;Still I like reading books and for in depth knowledge it is something you can not skip. Here I am sharing some of the books I have (I am reading them too) and some of the books I wants to buy soon.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,0,0)"&gt;I have already&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://www.cc2e.com/"&gt;Code Complete 2nd Edition.&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.amazon.com/gp/product/1590593898?ie=UTF8&amp;amp;tag=joelonsoftware&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1590593898"&gt;Joel on Software.&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.amazon.com/More-Joel-Software-Occasionally-Developers/dp/1430209879"&gt;More Joel on Software.&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://linqinaction.net/"&gt;LINQ in action&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://www.manning.com/campbell/"&gt;Silverlight 2 in action.&lt;/a&gt;&lt;br /&gt;6. &lt;a href="http://www.amazon.com/3-0-Nutshell-Desktop-Reference-OReilly/dp/0596527578"&gt;C# 3.0 in a Nutshell.&lt;/a&gt;&lt;br /&gt;7. &lt;a href="http://www.manning.com/skeet/"&gt;C# in depth.&lt;/a&gt;&lt;br /&gt;8. &lt;a href="http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632"&gt;CLR via C#&lt;/a&gt;&lt;br /&gt;9. &lt;a href="http://oreilly.com/catalog/9780596517748/"&gt;JavaScript the good parts.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(255,0,0)"&gt;I want to buy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://oreilly.com/catalog/9780596528126/?CMP=AFC-ak_book&amp;amp;ATT=Mastering+Regular+Expressions%2c+Third+Edition%2c"&gt;Mastering Regular Expression.&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.pragprog.com/the-pragmatic-programmer"&gt;The Pragmatic Programmer.&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.manning.com/bibeault/"&gt;JQuery in Action.&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://oreilly.com/catalog/9780596523091/"&gt;Data Driven Services with Silverlight 2.&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0321344758/ref=nosim/advancedcommonse"&gt;Dont make me think.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have already read some parts of &lt;span style="FONT-WEIGHT: bold"&gt;Code Complete&lt;/span&gt;, &lt;span style="FONT-WEIGHT: bold"&gt;Mastering Regular Expression&lt;/span&gt; from library and I can tell you these two books are great.&lt;br /&gt;&lt;br /&gt;As you might seen I only have one book on Silverlight. I could not start this book yet. I will let you know more about the books when I finish them.&lt;br /&gt;&lt;br /&gt;Please share your favorite books too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-2760998040025492889?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/2760998040025492889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=2760998040025492889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2760998040025492889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2760998040025492889'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/07/some-of-books-in-my-collection.html' title='Some of the books in my collection'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-7625140584805490948</id><published>2009-06-24T20:28:00.007+05:30</published><updated>2010-09-19T22:08:37.848+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Silverlight and LINQ</title><content type='html'>I got a thread in Silverlight forum that &lt;a href="http://silverlight.net/forums/p/104059/237334.aspx"&gt;asks how to select a row in a DataGrid&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Now here is the ans using a simple LINQ query.&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;MyClass item = MyDataGrid.ItemsSource.Cast().Where((_, pos) =&amp;gt; pos == row_number).SingleOrDefault();&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Now we have the data grid named &lt;span style="font-weight: bold;"&gt;MyDataGrid&lt;/span&gt; and we have already populated it with a collection of &lt;span style="font-weight: bold;"&gt;MyClass&lt;/span&gt;. We are using extension methods of C# 3.0 to help us select a row where row number is known.&lt;br /&gt;&lt;br /&gt;In the lambda expression &lt;div class="code"&gt;&lt;br /&gt;(_, pos) =&amp;gt; pos == row_number&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;we do not care about the first parameter so I have replaced it with '_'. (Remember '_' is a valid C# identifier).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LINQ&lt;/span&gt; has a great power to make your code compact and less error prone. Still I see many people using lengthy (Wrong?) way of doing simple things like selecting from a list where the list value satisfy a certain condition. Many people still things LINQ as an Syntactic Sugar of SQL queries. You can obviously use LINQ to SQL for interacting with database but LINQ is not only that.&lt;br /&gt;&lt;br /&gt;LINQ comes in handy while parsing XML too.&lt;br /&gt;&lt;br /&gt;Other benefits are like Sorting, advance selection and searching.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-7625140584805490948?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/7625140584805490948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=7625140584805490948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/7625140584805490948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/7625140584805490948'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/06/silverlight-and-linq.html' title='Silverlight and LINQ'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-1987619850017499672</id><published>2009-05-12T14:01:00.003+05:30</published><updated>2009-05-12T14:25:00.841+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Non-Technical'/><title type='text'>Silverlight kid is here.......</title><content type='html'>Hi All,&lt;br /&gt;I was never interested in coding but the moment my mentor Mr. Deepak Sharma asked me to learn silverlight, I fell in love with it. The first thing which I ever made in my life was a christmas card in silverlight 1.0, and fortunately everybody liked it. From then onwards there was no looking back.I continued to experiment with it. Silverlight has cast a spell on me and Tanmoy has always increased my interest in it .And now when Tanmoy asked me to contribute in this blog, I was thrilled.I would try to keep this spirit of silverlight alive in me and would try to enlighten others with the knowledge I acquire in this journey.&lt;br /&gt;Thanks to Tanmoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-1987619850017499672?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/1987619850017499672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=1987619850017499672' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1987619850017499672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1987619850017499672'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/05/silverlight-kid-is-here.html' title='Silverlight kid is here.......'/><author><name>Ramya</name><uri>http://www.blogger.com/profile/05447140714251047001</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-3762200481688575664</id><published>2009-05-12T11:53:00.000+05:30</published><updated>2009-05-12T13:42:17.014+05:30</updated><title type='text'>Introducing Ramya...Another Silverlight Geek</title><content type='html'>Hi,&lt;br /&gt;   to make this blog more effective I requested Ramya to join this blog. She has started her programming career with Silverlight and proved excellence in a very short time. Its a great thing that from now we two will be reviewing our posts and can keep posting while the other one is busy. It will increase the quality and number of posts.&lt;br /&gt;&lt;br /&gt;Silverlight rocks as she does.&lt;br /&gt;&lt;br /&gt;Lets welcome her....&lt;br /&gt;&lt;br /&gt;~Tanmoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-3762200481688575664?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/3762200481688575664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=3762200481688575664' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/3762200481688575664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/3762200481688575664'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/05/introducing-ramyaanother-silverlight.html' title='Introducing Ramya...Another Silverlight Geek'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-4564037781970468558</id><published>2009-05-02T01:20:00.001+05:30</published><updated>2009-05-09T00:12:56.645+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Silverlight 3 Wish List  ---- What We Got</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;Silverlight 3 Beta is released. Now it does fulfill many of the features that the community has hoped for. Joe Stegman has &lt;a href="http://blogs.msdn.com/jstegman/archive/2008/12/23/silverlight-feature-requests.aspx"&gt;marged the Silverlight 3 wish lists from different sources&lt;/a&gt; (Including the &lt;a href="http://silverlight.net/forums/t/44499.aspx"&gt;thread I have started&lt;/a&gt;) and put them in a table sorted on popularity. Lets check it with what we got. This is partial and please help me complete it and let me know in cases I am wrong.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="" style="font-family: Calibri; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="" style="width: 300px; font-weight: bold;"&gt;Feature&lt;/td&gt; &lt;td class="" style="width: 60px; font-weight: bold;"&gt;Count&lt;/td&gt; &lt;td class="" style="width: 500px; font-weight: bold;"&gt;Comments&lt;/td&gt; &lt;td class="" style="width: 500px; font-weight: bold;"&gt;Status&lt;/td&gt; &lt;td class="" style="width: 500px; font-weight: bold;"&gt;Note&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Web camera and/or microphone input&lt;/td&gt; &lt;td class=""&gt;33&lt;/td&gt; &lt;td class=""&gt;Includes requests for just microphone as well&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Bitmap APIs&lt;/td&gt; &lt;td class=""&gt;26&lt;/td&gt; &lt;td class=""&gt;Support get/set pixels and/or rendering a XAML scene to a bitmap.&lt;/td&gt; &lt;td class=""&gt;Partial. (After reading the comments and in forums and agree with it)&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://blogs.msdn.com/jstegman/archive/2009/03/22/writeablebitmap-sample.aspx"&gt;Check this application.&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Full 3D&lt;/td&gt; &lt;td class=""&gt;24&lt;/td&gt; &lt;td class=""&gt;Full 3D support (full 3D models)&lt;/td&gt; &lt;td class=""&gt;Partial&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=187308"&gt;Video1&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=187308"&gt;  &lt;/a&gt;&lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=189248"&gt;Video2&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Printing&lt;/td&gt; &lt;td class=""&gt;20&lt;/td&gt; &lt;td class=""&gt;Printing APIs&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Offline and/or out of browser support&lt;/td&gt; &lt;td class=""&gt;16&lt;/td&gt; &lt;td class=""&gt;Support running Silverlight when not online (or completely out of the browser)&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=187318"&gt;Video&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Bi-directional text and/or complex script&lt;/td&gt; &lt;td class=""&gt;9&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;UDP/P2P&lt;/td&gt; &lt;td class=""&gt;9&lt;/td&gt; &lt;td class=""&gt;UDP APIs generally for Peer to Peer support&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Rich text support&lt;/td&gt; &lt;td class=""&gt;8&lt;/td&gt; &lt;td class=""&gt;Editing and display&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Right mouse button&lt;/td&gt; &lt;td class=""&gt;8&lt;/td&gt; &lt;td class=""&gt;Ability to configure the right click&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Text quality&lt;/td&gt; &lt;td class=""&gt;8&lt;/td&gt; &lt;td class=""&gt;Improved text quality&lt;/td&gt; &lt;td class=""&gt;Partial&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://timheuer.com/blog/archive/2009/03/18/silverlight-3-whats-new-a-guide.aspx"&gt;Clear type will be supported&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;HTML Integration&lt;/td&gt; &lt;td class=""&gt;7&lt;/td&gt; &lt;td class=""&gt;Support HTML hosting (live HTML documents) and/or HTML translation&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Interactive designer&lt;/td&gt; &lt;td class=""&gt;7&lt;/td&gt; &lt;td class=""&gt;Support an interactive designer in Visual Studio&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt; Will be with VS 2010&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Support more than BasicHttpBinding&lt;/td&gt; &lt;td class=""&gt;7&lt;/td&gt; &lt;td class=""&gt;Most common request is for WSHttpBinding&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Improve Silverlight/WPF compatibility&lt;/td&gt; &lt;td class=""&gt;6&lt;/td&gt; &lt;td class=""&gt;Mostly feature requests for either Silverlight and/or WPF&lt;/td&gt; &lt;td class=""&gt;Partial&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;Gap is reducing over time&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;More controls&lt;/td&gt; &lt;td class=""&gt;6&lt;/td&gt; &lt;td class=""&gt;Random/general requests&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt; With the &lt;a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20430"&gt;new toolkit release&lt;/a&gt; it increases.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;SaveFileDialog&lt;/td&gt; &lt;td class=""&gt;6&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Data and/or property triggers&lt;/td&gt; &lt;td class=""&gt;5&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Reporting services&lt;/td&gt; &lt;td class=""&gt;5&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Synchronous web service calls&lt;/td&gt; &lt;td class=""&gt;5&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;a href="http://petesbloggerama.blogspot.com/2008/07/omg-silverlight-asynchronous-is-evil.html"&gt;Is it really needed?&lt;/a&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;ADO.NET DataSet/DataTable&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;Partial&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;Check out new data controls and RIA services.&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Alpha video&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;Chroma key support&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Clipboard support&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;Some people think of it as security threat.&lt;br /&gt;&lt;a href="http://www.jeff.wilcox.name/2008/05/clipboard-access/"&gt;Workaround&lt;/a&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Drawing APIs (immediate mode)&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=187303"&gt;Pixel effects?&lt;/a&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Element name binding&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;a href="http://timheuer.com/blog/archive/2009/03/18/silverlight-3-whats-new-a-guide.aspx#element"&gt;Element to element&lt;/a&gt; binding is now possible.&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Improved DataGrid&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;Several different requests&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Local relational database (SQL)&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Modal dialog&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Mouse wheel&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;API and support in existing controls&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;a href="http://timheuer.com/blog/archive/2008/09/23/mouse-wheel-support-for-scrollviewer.aspx"&gt; Helper class available&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Selectable text&lt;/td&gt; &lt;td class=""&gt;4&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Assembly caching&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;Want a framework for downloading/managing assemblies&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://timheuer.com/blog/archive/2009/03/18/silverlight-3-whats-new-a-guide.aspx#asmcache"&gt;Here.&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Credentials/auth&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;Requests for networking stack and ASP.NET type integration&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Custom markup extensions&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Multi-target DLLs for .NET/SL&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;Build a business object DLL once for both .NET and Silverlight&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Multi-touch support&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Path Animation&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Speech and better audio decoder&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;VisualBrush&lt;/td&gt; &lt;td class=""&gt;3&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;9 Grid&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Better keyboard APIs&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;Platform independent keycode&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Better SEO&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;a href="http://timheuer.com/blog/archive/2009/03/18/silverlight-3-whats-new-a-guide.aspx#nav"&gt;Check this blog.&lt;/a&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Binding support to anonymous types&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Direct database access&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;OLEDB/ODBC equivalent&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Flow panel&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;GIF support&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;Probably it wont be there. See &lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2008/08/17/Silverlight_2F002E00_NET-vs-Flash_2F00_Flex-_2800_or-not_2900_-and-My-Silverlight-Wishlist.aspx"&gt;what Pete Brown says.&lt;/a&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Global/dynamic styles (skinning)&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Integrated CTRL+F (in page search)&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Sound APIs (equalizer)&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;Includes looping&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;TileBrush (Image Tiling)&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;XPS Support&lt;/td&gt; &lt;td class=""&gt;2&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;64-bit platform support&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Android support&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Better N-tier support&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;Improved data access&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://silverlight.net/forums/t/80529.aspx"&gt;RIA Services&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Better SharePoint integration&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Block style text&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;Bulleted lists, paragraphs&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://www.silverlightshow.net/items/The-Silverlight-BlockText-Control.aspx"&gt;But check this out&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Cell based animation&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;CollectionView&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Color management&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Digital/XAP signing&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Double Click event&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;a href="http://hackingsilverlight.blogspot.com/2008/02/silverlight-20-double-click-support.html"&gt;work around&lt;/a&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Drag and Drop&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;Between the desktop and Silverlight&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Full 5.1 sound&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;Currently fold down to stereo&lt;/td&gt; &lt;td class=""&gt;No&lt;br /&gt; &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;IDataErrorInfo&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Inverse kinematics (bones)&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;Flash 10 feature&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;MediaTimeline&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Multi-binding&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Navigation model&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;Includes browser history integration&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt; &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=187319"&gt;Video&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;Validation controls&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;Yes&lt;br /&gt;     &lt;/td&gt; &lt;td class=""&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/03/18/a-quick-look-at-silverlight-3-data-validation.aspx"&gt;Check this.&lt;/a&gt;&lt;br /&gt;     &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td class=""&gt;XPATH support for data binding&lt;/td&gt; &lt;td class=""&gt;1&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;&lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt; &lt;td class=""&gt;&lt;br /&gt;         &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Thanks...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-4564037781970468558?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/4564037781970468558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=4564037781970468558' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/4564037781970468558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/4564037781970468558'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/05/silverlight-3-wish-list-what-we-got.html' title='Silverlight 3 Wish List  ---- What We Got'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-1495896479058382522</id><published>2009-02-06T10:20:00.004+05:30</published><updated>2009-02-06T10:27:02.618+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Some Guidelines For Developing Silverlight Applications</title><content type='html'>Hi,&lt;br /&gt;Here are some basic guidelines for building Silverlight applications. They are based on the   &lt;a href="http://silverlight.net/search/SearchResults.aspx?q=tanmoy.r&amp;amp;a=0"&gt;problems I have faced and seen&lt;/a&gt;. Keep in mind none of them are rules, and you can (you should actually) follow only some of them as it suits.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;1. Use source control :&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;Use&lt;a href="http://stackoverflow.com/questions/132520/good-excuses-not-to-use-version-control"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; source control&lt;/span&gt;&lt;/a&gt; even if you are solo developer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;2. Plan all user controls as early as possible:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;a href="http://lcsd05.cs.tamu.edu/slides/keynote.pdf"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Plan your modules early.&lt;/span&gt;&lt;/a&gt; This will help you plan &lt;span style="color: rgb(0, 0, 0);"&gt;how to do interaction between them&lt;/span&gt; early and you don't have to do some ad-hock fix later. Create them and have some basic methods like Initialize and Deinitialize inside them.(see point 5)&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;3. Separate each part into a user control:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; It will help many people working in the same application without much side effect on another control.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b.&lt;/span&gt; It helps isolate any problem to a small region so that it would become easy to rectify it.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt; It helps reuse the same control in different places.&lt;br /&gt;&lt;br /&gt;Add some classes for basic functionality like checking for URL format or parsing an xml. &lt;a href="http://www.codeplex.com/site/search?projectSearchText=silverlight"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;You can make separate library if they are big enough.&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;4. Loaded event is harmful:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;a style="color: rgb(255, 0, 0);" href="http://silverlight.net/forums/p/40306/115105.aspx"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Do not rely on the loaded events.&lt;/span&gt;&lt;/a&gt; Why? In one application  I was adding and removing an user control when needed, dynamically from code. Each time I was not creating a new object. Instead I was reusing the same one. Now I have attached the MouseLeftButtonDown event inside the loaded event of that user control. What was happening is this. Each time I was adding the user control the loaded event was getting fired and the event was been attached again. So the event handlers are fired multiple times. So adding and removing the user control a few times was making the application run very slow. It took me a hell lot of time to find out why.&lt;br /&gt;&lt;br /&gt;So where to put the event handlers? See below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;5. Initialize and Deinitialize :&lt;/span&gt;&lt;hr /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Put one Initialize and one Deinitialize public method in every user control you make.&lt;/span&gt; It is useful in many ways.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; You can add the event handlers and other code that must run only once inside Initialize&lt;br /&gt;method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; b. &lt;/span&gt;You can pass parameters to Initialize method without disturbing the constructor signature&lt;br /&gt;or adding a new constructor. &lt;span style="font-weight: bold;"&gt;So &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;new YourUserControl ( ) will always work&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; c.&lt;/span&gt; You can use &lt;span style="color: rgb(0, 0, 0);"&gt;Deinitialize &lt;/span&gt;method to clean up the control. This is specifically required when&lt;br /&gt;you are showing some customized content to the user and need to change it when user&lt;br /&gt;signs out or another user signs in.&lt;br /&gt;&lt;br /&gt;Now while creating the user control for the first time you should call the Initialize method with proper parameters.&lt;br /&gt;&lt;br /&gt;One disadvantage of this approach is it has the feeling of evil destructors in c++. You need to be careful while calling these two methods.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;6. Don't put your event handlers from xaml:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;While is perfectly legal to add event handlers from xaml it is &lt;span style="color: rgb(0, 0, 0);"&gt;better to do it from code.&lt;/span&gt; Reason is...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; Xaml belongs to designers. Event handling belongs to programmers. So its easy to attach&lt;br /&gt;    or detach event handlers from code without disturbing the xaml.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; b.&lt;/span&gt; Suppose you have attached event handler to a control from code. Now if the name of the&lt;br /&gt;control is changed or the control is been removed from xaml you will get an compilation&lt;br /&gt;error with clear meaning. Now if you have written the event handler from xaml and&lt;br /&gt;removed the appropriate method from code you will get an exception with less clear&lt;br /&gt;message.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;7. Select your layout carefully:&lt;/span&gt;&lt;hr /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;a style="color: rgb(255, 0, 0);" href="http://anothersilverlight.blogspot.com/2008/11/silverlight-flexible-layout.html"&gt;Take time to select proper layout.&lt;/a&gt; &lt;/span&gt;I can assure you it will save a lot of your time debugging later. Take your design mock up and think about how you can make the layout. Understand advantages and limitations of Grid, StackPanel, Canvas, Border, Popup, ScrollViewer etc. Some tips for choosing layout.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; Most of the time you will find Grid is suitable for the top level container (root). This is specially true if your Silverlight application is occupied total page. You will find it containing header, footer and sometimes left and right module. These can be easily done with dividing main root grid with columns and rows.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b.&lt;/span&gt; For very complex structures inside the application you will find Canvas is best fitted. Specially if its height width is specified and has&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;overlapped controls inside it.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;c.&lt;/span&gt; While you are dividing your grid with rows and columns sometimes you will find you need only columns or only rows. Its time for choosing a StackPanel with proper orientation specified. StackPanel also adjust its children while new child is added or removed.&lt;br /&gt;&lt;br /&gt;Though its personal preference&lt;span style="color: rgb(0, 0, 0);"&gt; I prefer to do the top level layout from Visual Studio or at least check the xaml structure in visual studio after making it in blend.&lt;/span&gt; It helps prevent some  properties getting set automatically without your knowledge and to remove redundant code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;8. Avoid specifying height and width explicitly:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;Make your application layout such a way &lt;span style="color: rgb(0, 0, 0);"&gt;you don't have to specify height and width for each control.&lt;/span&gt; Grid has many flexible features like Horizontal and Vertical Alignments, Row and Column properties. Use them wisely. If you make your layout structure carefully you will find most of the time you can avoid using height, width and margin. Also try to avoid negative values in margin. Most of the time it means you have chosen wrong horizontal alignment or vertical alignment property.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;9. Don't put any secret inside your code:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;Silverlight is a client side technology. Keep in mind &lt;span style="color: rgb(0, 0, 0);"&gt;all your code goes into users machine&lt;/span&gt; and can be easily decompiled to view the code. So never put any sensitive data inside code. Security is the most critical part in today's internet. Security is invisible as long it protects you but it is needed most. Think carefully and from the design phase of your application about security. &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Don't rely on&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;a style="color: rgb(255, 0, 0);" href="http://en.wikipedia.org/wiki/Security_through_obscurity"&gt;security through obscurity&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;10. Test individual user control:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;After creating a user control run it directly from app.xaml.cs by setting the root visual to the control. Call initialize method with proper arguments and check if it works as expected. &lt;a style="color: rgb(255, 0, 0);" href="http://www.codinghorror.com/blog/archives/000265.html"&gt;Test the application thoroughly&lt;/a&gt; and fix the slightest defect you found.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;11. Don't use image as a button:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;In Silverlight 1.0 we did not have any button control so we used some xaml or image for button.&lt;br /&gt;In Silverlight 2&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;use a button&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt; and&lt;/span&gt; &lt;a style="color: rgb(255, 0, 0);" href="http://anothersilverlight.blogspot.com/2008/08/skinning-simple-slider.html"&gt;style it appropriately&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt; It helps in the following way...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; Maintaining states like mouse over or pressed.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b.&lt;/span&gt; Basic functionality like click. (No, click is not same as MouseLeftButtonDown event)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;c.&lt;/span&gt; Use the same style without copying whole xaml.&lt;br /&gt;&lt;br /&gt;This is also valid for all other controls.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;12. Don't put redundant code: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;Your code&lt;a style="color: rgb(255, 0, 0);" href="http://www.amazon.com/exec/obidos/ASIN/0596510047/"&gt; should look beautiful&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;.&lt;/span&gt; Remove redundant code and simplify the logic as fer as possible. Auto generated codes sometimes generates lot of extra code if you use them in a wrong way. Clean them up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;13. Performance:&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; &lt;a href="http://anothersilverlight.blogspot.com/2009/01/some-more-tips.html"&gt;Reduce your xap size&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b.&lt;/span&gt; Reduce the loading time for total or different parts of your application.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;c.&lt;/span&gt; Avoid &lt;a href="http://msdn.microsoft.com/en-us/library/cc221411%28VS.95%29.aspx"&gt;windowless=true.&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;d.&lt;/span&gt; Crate vector graphics for simple images.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;14. Use web services for server communication: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Silverlight runs on users machine so can not interect with server or database directly. There are many ways of doing it but the best and easiest way is &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;a href="http://silverlight.net/quickstarts/webservices.aspx"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;using web services&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;Use WCF services if possible.&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;15. Use Isolated Storage, but carefully:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;Use &lt;a style="color: rgb(255, 0, 0);" href="http://silverlight.net/quickstarts/isolatedstorage.aspx"&gt;Isolated storage&lt;/a&gt;. But &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;DO NOT put any sensitive data there&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-1495896479058382522?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/1495896479058382522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=1495896479058382522' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1495896479058382522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1495896479058382522'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/02/some-guidelines-for-developing.html' title='Some Guidelines For Developing Silverlight Applications'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-2881595893920061527</id><published>2009-01-03T10:26:00.001+05:30</published><updated>2009-01-03T10:48:45.143+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Some More Tips</title><content type='html'>Here are some Tips.....&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;1.  Reducing xap size&lt;/span&gt;&lt;ul&gt;&lt;li&gt; Select Release in properties before moving the xap to the production and build.&lt;/li&gt;&lt;li&gt;rename the .xap file to .zip. Extract the zip and then re-zip it. It generally decreases the size quite a bit.&lt;/li&gt;&lt;li&gt;Use vector graphics instead of images.&lt;/li&gt;&lt;li&gt;Load the assets on demand instead of packaging them in the xap.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;2. How to set some value to Auto?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can set a value (Say Width of a canvas) to Auto in xaml. How can you do it from code? &lt;span style="font-weight: bold;"&gt;Set canvas width = double.NaN&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;3. ObservableCollection&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; You get a new type of collection with Silverlight, called&lt;span style="font-weight: bold;"&gt; ObservableCollection&lt;/span&gt;. You can use this type of collection wherever you normally use a list. Like setting the ItemsSource of a ListBox. The benefit of using this over List is that it automatically updates the Items whenever the collection changes. This is really helpful for data binding.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;4. How to rotate something from its edge?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Suppose you have a red rectangle.  Now if you rotate it with a storyboard it will rotate like the below image. i.e from center of the rectangle.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SV4WNS75POI/AAAAAAAAALk/1edOyJa9ej8/s1600-h/toblog1.PNG"&gt;&lt;img style="cursor: pointer; width: 255px; height: 240px;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SV4WNS75POI/AAAAAAAAALk/1edOyJa9ej8/s320/toblog1.PNG" alt="" id="BLOGGER_PHOTO_ID_5286687430256704738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now you want to rotate it from its edge. You can see a small dot in the center of the rectangle like the following in blend design view when you select the rectangle.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SV4X7hKlTII/AAAAAAAAALs/r938g9n3c_Y/s1600-h/toblog1.5.PNG"&gt;&lt;img style="cursor: pointer; width: 187px; height: 320px;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SV4X7hKlTII/AAAAAAAAALs/r938g9n3c_Y/s320/toblog1.5.PNG" alt="" id="BLOGGER_PHOTO_ID_5286689323862019202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That dot defines render transform origin or the origin of all the transformation that will be applied to the rectangle. Now you can drag the small dot to the edge of the stick and the stick (rectangle) will rotate from the edge like the below image.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SV4YQ9VfN2I/AAAAAAAAAL0/BiTjzUYuJb8/s1600-h/toblog2.PNG"&gt;&lt;img style="cursor: pointer; width: 255px; height: 240px;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SV4YQ9VfN2I/AAAAAAAAAL0/BiTjzUYuJb8/s320/toblog2.PNG" alt="" id="BLOGGER_PHOTO_ID_5286689692201203554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;5. How to set style from code?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You can apply a style in xaml like the following.                                                                 Style="{StaticResource ButtonStyleKeyName}". Now if you want to set it from code do like the following. &lt;span style="font-weight: bold;"&gt;MyButton.Style = (Style)Resources["ButtonStyleKeyName"];&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remember you can set style only once. So if you are trying to do like         &lt;span style="font-weight: bold;"&gt;MyButton.Style =&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;(Style)Resources["ButtonStyleKeyName2"];&lt;/span&gt; After setting the style for the first time you will get an exception.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;6. Auto refresh page after silverlight installation.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Suppose someone viewing your website and does not have silverlight installed. You prompt him to download and install it. Now after installing the silverlight the page should be auto refreshed so he can see your silverlight application. If you use object tag and include Silverlight.js file this behavior is default. This line in Silverlight.js determines that.       Silverlight.onSilverlightInstalled = function () {window.location.reload(false);}; Set the parameter to true if you want to bypass the cache.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Could not find a way of doing this with asp:Silverlight tag still. Please tell me if you know the way.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;7. Double click support:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check it &lt;a href="http://hackingsilverlight.blogspot.com/2008/02/silverlight-20-double-click-support.html"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;8. Where are the dlls for Silverlight?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The library dlls for Silverlight are in library folder inside Silverlight SDK. The default location for it is&lt;span style="font-weight: bold;"&gt; C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Libraries. &lt;/span&gt;This  is specially useful if you are adding any reference from Expression Blend.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;9. How to make sure user does not get the old xap from the browser cache?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There are many solution for this. One quick way is to Add a random number in the querystring of the xap source. for ie Source="~/ClientBin/RotateExp.xap?rnd=029db68e-02c0-4dc8-a4f9-81b09f8000da"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;That's it for now. Happy New year. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-2881595893920061527?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/2881595893920061527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=2881595893920061527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2881595893920061527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2881595893920061527'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2009/01/some-more-tips.html' title='Some More Tips'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/SV4WNS75POI/AAAAAAAAALk/1edOyJa9ej8/s72-c/toblog1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-291507910732812565</id><published>2008-12-09T04:59:00.005+05:30</published><updated>2008-12-09T19:02:09.566+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><title type='text'>Silverlight Bookmark</title><content type='html'>Hi all,&lt;br /&gt;       For the last month I was a bit busy so couldn't post much in the blog. However I think its time to share some links. I am trying to group them so that they can be easy to maintain.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Documentation and Reference&lt;/span&gt;&lt;br /&gt;1. &lt;a href="http://msdn.microsoft.com/en-us/silverlight/default.aspx"&gt;MSDN Documentation&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://silverlight.net/samples/sl2/silverlightcontrols/run/default.html"&gt;Silverligh Controls&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://www.codeplex.com/CompositeWPF"&gt;Pattern and Practices&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://blogs.msdn.com/brada/archive/2008/03/16/silverlight-2-developer-poster.aspx"&gt;Silverlight 2 developer poster&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://go.microsoft.com/fwlink/?LinkId=119611"&gt;Silverlight Deployment Guide.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Tips&lt;/span&gt;&lt;br /&gt;1. &lt;a href="http://silverlight.net/blogs/msnow/default.aspx"&gt;Silverlight Tips&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Extra Controls&lt;/span&gt;&lt;br /&gt;1. &lt;a href="http://www.codeplex.com/silverlightcontrib"&gt;http://www.codeplex.com/silverlightcontrib&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.codeplex.com/Silverlight"&gt;http://www.codeplex.com/Silverlight&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://www.telerik.com/products/silverlight.aspx"&gt;http://www.telerik.com/products/silverlight.aspx&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://www.componentone.com/SuperProducts/StudioSilverlight/"&gt;http://www.componentone.com/SuperProducts/StudioSilverlight/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Some good sites and applications build in Silverlight&lt;/span&gt;&lt;br /&gt;1. &lt;a href="http://memorabilia.hardrock.com/"&gt;Hard rock &lt;/a&gt;&lt;a href="http://memorabilia.hardrock.com/"&gt;memorabilia&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://silverlight.net/Showcase/"&gt;A huge collection of Silverlight applications&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Some good blogs&lt;/span&gt;&lt;br /&gt;1. &lt;a href="http://timheuer.com/blog/"&gt;Tim Heuer's blog&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://silverlight.net/blogs/jesseliberty/default.aspx"&gt;Jesse Liberty's blog&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://michaelsync.net/"&gt;Michael Sync's blog&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/default.aspx"&gt;Pete Brown's blog&lt;/a&gt;&lt;br /&gt;5. &lt;a href="http://blogs.msdn.com/avip/default.aspx"&gt;Avi Pilosof's blog&lt;/a&gt;&lt;br /&gt;6. &lt;a href="http://projectsilverlight.blogspot.com/"&gt;Wilfred Pinto's blog&lt;/a&gt;&lt;br /&gt;7. &lt;a href="http://www.shinedraw.com/"&gt;Shine draw&lt;/a&gt;&lt;br /&gt;8. &lt;a href="http://weblogs.asp.net/scottgu/default.aspx"&gt;Scottgu's blog&lt;/a&gt;&lt;br /&gt;9. &lt;a href="http://www.silverlightrecipes.com/"&gt;Makram's Silverlight blog&lt;/a&gt;&lt;br /&gt;10. &lt;a href="http://blogs.msdn.com/msmossyblog/default.aspx"&gt;MossyBlog&lt;/a&gt;&lt;br /&gt;11. &lt;a href="http://wildermuth.com/"&gt;Shawn Wildermuth's blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;3D with Silverlight&lt;/span&gt;&lt;br /&gt;1.&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;a href="http://www.codeplex.com/kit3d"&gt;http://www.codeplex.com/kit3d&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Community Sites&lt;/span&gt;&lt;br /&gt;1. &lt;a href="http://silverlight.net/"&gt;Official Silverlight Community Site&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.silverlightshow.net/"&gt;Silverlight Show&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will try keep this updated. Also please add comments if you have some other good links and I will add them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-291507910732812565?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/291507910732812565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=291507910732812565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/291507910732812565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/291507910732812565'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/12/silverlight-bookmark.html' title='Silverlight Bookmark'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-6742967952227480798</id><published>2008-11-04T22:35:00.004+05:30</published><updated>2010-09-19T20:13:29.272+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><title type='text'>Silverlight Flexible Layout</title><content type='html'>Hi friends,&lt;br /&gt;  I have seen in Silverlight forums and other places that there are some confusions about Layouts. Specially how to give your Silverlight application a flexible layout that will be adjusted automatically as browser resize. Hope this post helps.&lt;br /&gt;&lt;br /&gt;Basically there are two ways of doing it. One is from code where you will change the height,widths of controls as browser resizes. Another is creating layout as it automatically changes with browser resize. I will explain the later here.&lt;br /&gt;&lt;br /&gt;Silverlight has 3 layout controls. Grid, StackPanel and Canvas. Canvas is NOT A FLEXIBLE ONE. Other two are. That does not mean you will not use Canvas but you will use it where you know the canvas does not have to be adjusted with browser resize.&lt;br /&gt;&lt;br /&gt;So basically we will try building the following layout.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SRBq-qFvuLI/AAAAAAAAALU/2lmdNnkoM88/s1600-h/Layout.jpg"&gt;&lt;img style="cursor: pointer; height: 320px;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SRBq-qFvuLI/AAAAAAAAALU/2lmdNnkoM88/s320/Layout.jpg" alt="" id="BLOGGER_PHOTO_ID_5264825589078931634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now the top part is flexible provided that the text will come in middle. Middle green part is flexible but has a orange box in it that is fixed size. Bottom left red part is fixed but right skyblue part is flexible with text aligned to right.&lt;br /&gt;&lt;br /&gt;Now come to the Page.xaml. There will be one LayoutRoot Grid is already defined. Now as you can see we will have 3 rows in the LayoutRoot Grid. Top white one middle one and bottom one.&lt;br /&gt;We will set fixed height for top and bottom rows and let the middle row occupy the remaining height. I have given 100px for Top one and 100px for bottom one.&lt;br /&gt;&lt;br /&gt;We will put one Grid for each row namely TopGrid, MiddleGrid and BottomGrid and set their Grid.Row property to 0,1 and 2 respectively.&lt;br /&gt;&lt;br /&gt;Now we will define two columns for the BottomGrid. First one with fixed width ( 70 here) and the second one with remaining size. We will also add two Grids inside bottom grid and set Grid.Column to 0 and 1 respectively. We will name them as LeftBottomGrid and RightBottomGrid.&lt;br /&gt;&lt;br /&gt;Now if you set the Grid backgrounds as the above image your application will look something like the following in the design view.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K9AMUL1hnjM/SRBy_bVK2dI/AAAAAAAAALc/5RzOm8oipRQ/s1600-h/Layout2.jpg"&gt;&lt;img style="cursor: pointer; width: 258px; height: 320px;" src="http://2.bp.blogspot.com/_K9AMUL1hnjM/SRBy_bVK2dI/AAAAAAAAALc/5RzOm8oipRQ/s320/Layout2.jpg" alt="" id="BLOGGER_PHOTO_ID_5264834398389983698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My Usercontrol width and height are 40o and 500 respectively.&lt;br /&gt;&lt;br /&gt;Now we will add one textblock in the TopGrid and with text "WELCOME TO SILVERLIGHT" and set text align to center. Also set its vertical align ment to center.&lt;br /&gt;&lt;br /&gt;We will add one canvas with orange background inside MiddleGrid and set its height and width to 100.&lt;br /&gt;&lt;br /&gt;We will finally add another textblock in the RightBottomGrid with text "Code name Mrgni" and have its text alignment right. Also set its vertical alignment to center.&lt;br /&gt;&lt;br /&gt;Now remove the height and width from the UserControl tag. It is required as we want our Silverlight application to Streach the entire div it has been assign to. Now run the application and here it goes....&lt;br /&gt;&lt;br /&gt;Now here we have not used any relative positioning. But that can be done easily. Suppose you want the TopGrid to always have the height 100 but want the BottomGrid to have 1/5 th of remaining height and rest part to be occupied to MiddleGrid. Just change LayoutGrid's rowdefinitions as 100, 4*, 1* and you are done.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://mrgni.com//Blog_applications/LayoutSample.zip"&gt;Here is the complete source for it.&lt;/a&gt; Please leave a comment if you have any doubt or any correction. I have done this application totally from Visual Studio but you can do it from blend as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-6742967952227480798?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/6742967952227480798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=6742967952227480798' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6742967952227480798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6742967952227480798'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/11/silverlight-flexible-layout.html' title='Silverlight Flexible Layout'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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://4.bp.blogspot.com/_K9AMUL1hnjM/SRBq-qFvuLI/AAAAAAAAALU/2lmdNnkoM88/s72-c/Layout.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-5043962965356661844</id><published>2008-10-31T11:32:00.005+05:30</published><updated>2008-11-01T18:07:42.779+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Too Early For Silverlight 3?</title><content type='html'>Hi friends,&lt;br /&gt;I am excited about what Silverlight 2 brings us. Still there are some features that we miss and might come in the next release. I have created a thread for &lt;a href="http://silverlight.net/forums/t/44499.aspx"&gt;Silverlight 3 Wish List&lt;/a&gt; in the Silverlight forums. Please add whatever you think might come in handy in  next release. And yes Silverlight Team do &lt;a href="http://silverlight.net/blogs/jesseliberty/archive/2008/09/19/what-topics-are-important-to-you-survey-results.aspx"&gt; care about&lt;/a&gt; the community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-5043962965356661844?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/5043962965356661844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=5043962965356661844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/5043962965356661844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/5043962965356661844'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/10/too-early-for-silverlight-3.html' title='Too Early For Silverlight 3?'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-182070541957189945</id><published>2008-10-19T23:06:00.001+05:30</published><updated>2010-09-19T20:36:26.723+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applications'/><title type='text'>A Simple Clock In Silverlight</title><content type='html'>Hi friends,&lt;br /&gt;   Friday one of my friends (Manasa) send me some unusual clocks developed in flash. That gave me the idea of making one of them (the easiest one) in Silverlight.&lt;br /&gt;I made it like the following&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://mrgni.com/Blog_applications/SilverlightClockTestPage.html" style="border: 4px solid black; width: 508px; height: 375px;" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; color: rgb(0, 0, 153); font-weight: bold;"&gt;Brief Explanation&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The root canvas contains 7 canvases. Each of them holds seconds, minutes, hours and other texts and digits. Each of the canvas is wide enough to hold all the digits or text. The root canvas clips it to show only 450 pixel. The child canvases move right to left so it appears moving to the user.&lt;br /&gt;&lt;br /&gt;Now lets see seconds panel. Others will be similar.&lt;br /&gt;&lt;br /&gt;Seconds panel has 9 digits visible at any time. Total seconds panel contains all the digits and clipped by the root to show only 9 digits.&lt;br /&gt;Seconds panel has got 69 digits 0 1 2 3.......58 59 0 1 2 3 4 5 6 7 8. Last 9 digits are added because when we shift the panel from right to left at time the viewable part will be 59 0 1 2 3 4 5 6 7 8.(half of 59 and half of 8) Then it will be again 0 1 2 3 4 5 6 7 8 and this time we can repeat the animation without letting user see any discontinuity.&lt;br /&gt;&lt;br /&gt;Seconds, minutes and hours panels are been shifted through animations. Days, dates are updated once in an hour. Months are updated once in a day and years are once in a month. (Seeing it update will keep you open your browser at least a month though !!!)&lt;br /&gt;&lt;br /&gt;When the application starts it updates so the red line shows current values.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mrgni.com/Blog_applications/Source_Codes/SilverlightClock.zip"&gt;You can find the complete code here.&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-182070541957189945?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/182070541957189945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=182070541957189945' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/182070541957189945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/182070541957189945'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/10/simple-clock-in-silverlight.html' title='A Simple Clock In Silverlight'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-2270438249401083223</id><published>2008-10-16T23:13:00.007+05:30</published><updated>2010-09-19T22:08:22.087+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applications'/><title type='text'>Fractal Images -- Mathematics With Silverlight Again</title><content type='html'>Hi all,&lt;br /&gt;When I first seen fractal images I was really impressed and wanted a bit try for making one myself. I have made a simple application that will generate some kool images based on fractal algorithms. This program is not for describing fractals, this is just to make some pretty images totally by complex mathematics.&lt;br /&gt;&lt;br /&gt;here is one image that uses (Z * Z * Z + C) / (Z * Z * Z - C) formula and C=0.45 here. (C and Z are complex numbers)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K9AMUL1hnjM/SPd3Rg4N2fI/AAAAAAAAALI/c54YdcA_6RM/s1600-h/fratal1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K9AMUL1hnjM/SPd3Rg4N2fI/AAAAAAAAALI/c54YdcA_6RM/s320/fratal1.jpg" alt="" id="BLOGGER_PHOTO_ID_5257802232745548274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can make lots of images using different equation and different values of C.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;How the Images are created.....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The image is actually a collection of 1 x 1 pixel ellipse different color. These ellipses are placed in a 500 x 600 Canvas.  fractal algorithm determines how to color the ellipses and that is the only magic.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Algorithm.....&lt;/span&gt;&lt;br /&gt;&lt;div class="code"&gt; &lt;br /&gt;int iteration = 0;&lt;br /&gt;        do&lt;br /&gt;             {&lt;br /&gt;                R = (Z * Z * Z + C) / (Z * Z * Z - C);&lt;br /&gt;       Z = R;&lt;br /&gt;                 iteration++;&lt;br /&gt;         } while (iteration &amp;lt; 100 &amp;amp;&amp;amp; (R.Real * R.Real + R.Imaginary * R.Imaginary) &amp;lt; 4);&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;For coloring the ellipse&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt; &lt;br /&gt;            Random r = new Random(iteration);&lt;br /&gt;byte red = (byte)r.Next(255);&lt;br /&gt;byte green = (byte)r.Next(255);&lt;br /&gt;byte blue = (byte)r.Next(255);&lt;br /&gt;Plot(x, y, Color.FromArgb(255, red, green, blue));&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Though it is using random number for same iteration value the color will be same as iteration is been used as seed for the random number. This is the beauty of pseudo numbers.&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://mrgni.com/Blog_applications/Source_Codes/FractalExperiment.zip"&gt;Here you can download the complete source code.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://mrgni.com/Blog_applications/FractalExperimentTestPage.html"&gt;You can see the application running here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;One caution:- The code involve too many computation and placing 300000 ellipses. So it takes about 20 seconds to complete and might hang your browser during this time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fractaldesign.net/algor.htm"&gt;Here&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Fractal"&gt;here&lt;/a&gt;  you can see details about fractals and algorithms.&lt;br /&gt;&lt;br /&gt;I have updated some of my applications and posts in last few days. I will complete it as soon as I can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-2270438249401083223?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/2270438249401083223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=2270438249401083223' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2270438249401083223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2270438249401083223'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/09/fractal-images-mathematics-with.html' title='Fractal Images -- Mathematics With Silverlight Again'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/SPd3Rg4N2fI/AAAAAAAAALI/c54YdcA_6RM/s72-c/fratal1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-214786096765428002</id><published>2008-10-15T09:16:00.004+05:30</published><updated>2008-11-01T18:07:42.780+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>SL 2 And All My Broken Applications</title><content type='html'>Silverlight 2 is released. Now it has some breaking changes that breaks all of beta 2 applications. Though Microsoft has given some time to update beta 2 application to RC0 so they will be compatible to final release I did not get time to update my applications that I will be doing when I get time. I will be making some other applications as well. I will have to update my posts so they are still relevant. Lots of changes....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-214786096765428002?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/214786096765428002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=214786096765428002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/214786096765428002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/214786096765428002'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/10/sl-2-and-all-my-broken-applications.html' title='SL 2 And All My Broken Applications'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-1037544859818172937</id><published>2008-09-30T22:30:00.007+05:30</published><updated>2008-11-01T18:07:42.781+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Silverlight RC0...After A Long Wait</title><content type='html'>&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;[ Silverlight 2 is now released so this post is no longer valid. ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Silverlight RC0 has been &lt;a href="http://silverlight.net/GetStarted/sl2rc0.aspx"&gt;shipped&lt;/a&gt;. It is only developers release but will be feature complete. I did not get much time to see if it breaks some of my applications. It does have some features we were waiting for but we expected some more. Anyway lets see how it works with the new expression blend service pack and VS tools.&lt;br /&gt;&lt;br /&gt;Installing RC0 might be a bit painful as it needs uninstalling all previous SL things and needs some tools. Here is the steps I did to get it work.&lt;br /&gt;&lt;br /&gt;1. Uninstalled everything related to beta 2. (Silverlight tools for VS, Expression Blend, Plugin -- Everything)&lt;br /&gt;2. Installed Silverlight 2 RC0 &lt;a href="http://go.microsoft.com/fwlink/?LinkId=129186"&gt;developer runtime&lt;/a&gt;.&lt;br /&gt;2. Installed &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en"&gt;Microsoft Visual Studio 2008 Service Pack 1&lt;/a&gt;.&lt;br /&gt;3. Installed new &lt;a href="http://go.microsoft.com/fwlink/?LinkId=129043"&gt;Silverlight tools&lt;/a&gt; for VS 2008.&lt;br /&gt;4. Expression Blend 2 trial version.&lt;br /&gt;5. &lt;a href="http://www.microsoft.com/expression/try-it/default.aspx?filter=prerelease"&gt;Blend 2 SP1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Oops. Finally. :)&lt;br /&gt;&lt;br /&gt;Steps might be different but I got it working this way.&lt;br /&gt;&lt;br /&gt;One important thing is this is only developers release so publicly only beta 2 is available now. So we can't yet release the application in RC0 but lets prepare for the day. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-1037544859818172937?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/1037544859818172937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=1037544859818172937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1037544859818172937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1037544859818172937'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/09/silverlight-rc0after-long-wait.html' title='Silverlight RC0...After A Long Wait'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-1870381488164446762</id><published>2008-09-22T00:11:00.008+05:30</published><updated>2008-11-06T11:12:54.520+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><title type='text'>Starting Silverlight</title><content type='html'>&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;[ Links for the tools are updated for Silverlight 2. Some of the sites listed below may not been updated yet and contain beta 2 applications and links. ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hi all,&lt;br /&gt;&lt;br /&gt;My blog has survived a few months and I was posting on somewhat random articles and applications. Some of my friends have started learning Silverlight and asked me to share some links and samples. Here is my list.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(51, 51, 153);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;Tools&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;Basic thing you need....&lt;/span&gt;&lt;br /&gt;Install Silverlight 2  runtime from &lt;a href="http://www.microsoft.com/silverlight/resources/install.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Essential for all....&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=blend"&gt;Expression Blend 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EB9B5C48-BA2B-4C39-A1C3-135C60BBBE66&amp;amp;displaylang=en"&gt;Expression Blend 2 SP 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;amp;DisplayLang=en"&gt;Deep Zoom Composer&lt;/a&gt; (Used for a feature called DeepZoom in Silverlight)&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bce7684a-507b-4fc6-bc99-6933cd690cab&amp;amp;displaylang=en"&gt;Silverlight 2 Documentation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;If you are interested in design....&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=369B8681-57F9-49E9-A585-ECC5CAC40959&amp;amp;displaylang=en"&gt;Expression Design 2 Trial.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=BA187636-ABB6-4E55-9706-5BD346E39EA9&amp;amp;displaylang=en"&gt;Expression Encoder Trial.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;If You are interested in programming....&lt;/span&gt;&lt;br /&gt;1. If you don't  know C#,  start learning basics of it. The basic would be sufficient for building simple Silverlight applications.&lt;br /&gt;&lt;br /&gt;2. If you have C# background, probably you have worked with Visual Studio. If not, install it and play a little time with it. Silverlight 2 needs Visual Studio 2008 and you can get a trial version from&lt;a href="http://msdn.microsoft.com/hi-in/vs2008/products/cc268305%28en-us%29.aspx"&gt; here&lt;/a&gt;. You also need to install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en"&gt;SP1 for VS 2008&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3. Install  &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&amp;amp;displaylang=en"&gt;Silverlight Tools  For Visual Studio 2008.&lt;/a&gt; (It also installs Silverlight plug-in for the browsers if it is not there).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Optional but will help you....&lt;/span&gt;&lt;br /&gt;Get an live account and you can get 10 GB of hosting space free for the Silverlight applications you build. Get it &lt;a href="http://silverlight.live.com/"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(51, 51, 153); font-weight: bold;"&gt;Learning materials&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;I am completely new. Where from I start?&lt;/span&gt;&lt;br /&gt;Silverlight.net has a &lt;a href="http://silverlight.net//Learn/"&gt;great collection&lt;/a&gt; of tutorials and videos. You can start from the quick start tutorials.&lt;br /&gt;&lt;a href="http://silverlight.net/quickstarts/blend_quickstart/default.aspx"&gt;Using Expression Blend&lt;/a&gt;&lt;br /&gt;&lt;a href="http://silverlight.net/quickstarts/"&gt;QuickStart&lt;/a&gt; (Mainly for the programmers but designers might see it to get an idea)&lt;br /&gt;&lt;br /&gt;You can also start by &lt;a href="http://silverlight.net/learn/videocat.aspx"&gt;watching the videos.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Try building something as soon as you feel you can create a simple application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;I am a Flash Developer. Where from I start?&lt;/span&gt;&lt;br /&gt;1. You need the basic tools described in the first section.&lt;br /&gt;2. &lt;a href="http://timheuer.com/blog/archive/2008/09/06/silverlight-for-flash-developers-rosetta-shine-draw.aspx"&gt;Here&lt;/a&gt; is a link that will help you use your existing skills to building Silverlight application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;I know the basics and wanna dig into deeper.&lt;/span&gt;&lt;br /&gt;There are some videos and tutorials focused on some advanced topics in Silverlight.net.&lt;br /&gt;You will get a complete set of resources &lt;a href="http://silverlight.net/blogs/msnow/archive/2008/05.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;Hey. Let me see some cool samples before I start.&lt;/span&gt;&lt;br /&gt;You can find big list of excellent applications created in Silverlight &lt;a href="http://silverlight.net//Showcase/"&gt;here &lt;/a&gt;and &lt;a href="http://silverlight.net/community/gallerydetail.aspx?cat=6"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PS: Actually you can find almost everything in the &lt;a href="http://silverlight.net/"&gt;Silverlight Community Site.&lt;/a&gt; It has a great forum that helps in every type of problems you face working with Silverlight.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Some Other Links&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;You can get a detail listing of tools and materials &lt;a href="http://www.microsoft.com/silverlight/resources/tools.aspx"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/silverlight/overview/default.aspx"&gt;Overview&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Silverlight"&gt;Wikipedia link.&lt;/a&gt; :) Don't you think it is a must?&lt;br /&gt;&lt;a href="http://www.miketaulty.com/SLVideos.html"&gt;An Excellent Video Tutorial&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx"&gt;Another Big List&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;Actually nothing new here. But I think this blog would be incomplete if I don't stack some useful links up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-1870381488164446762?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/1870381488164446762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=1870381488164446762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1870381488164446762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1870381488164446762'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/09/starting-silverlight.html' title='Starting Silverlight'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-9213943688049178382</id><published>2008-09-18T18:13:00.005+05:30</published><updated>2008-11-01T18:00:28.225+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Let's Not Stop Here</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;[ Updated for Silverlight 2 ]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Hi friends,&lt;div&gt;&lt;br /&gt;In my &lt;a href="http://anothersilverlight.blogspot.com/2008/07/some-lesser-known-things-in-silverlight.html"&gt;previous post &lt;/a&gt;I have listed 10 lesser known things in Silverlight. Here are some more.....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;1. Scale Mode:&lt;/span&gt;  &lt;/span&gt;See the following code.&lt;br /&gt;&lt;br /&gt;&amp;lt;div  style="height:5;width:500;border:solid 3px #00FF00;""&amp;gt;&lt;br /&gt;&amp;lt;asp:Silverlight&lt;span style="color: rgb(51, 51, 255);"&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;ScaleMode="None"&lt;/span&gt; Width="100%" Height="100%" ...... /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;Now see the blue part. There are 3 values you can set in ScaleMode. None (that is default), Stretch and Zoom.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;None&lt;/span&gt;: The Silverlight component retains its size specified inside. (in Page.xaml for example)&lt;br /&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Stretch&lt;/span&gt;: The Silverlight component occupies the                  available space inside the div.&lt;br /&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;Zoom&lt;/span&gt;: Like Stretch but keeps the aspect ratio.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Now we have one Silverlight application. In the Page.xaml we have set the height and width of the user control to 100 and 400. We have one grid that occupies this usercontrol and has a red background.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now in the html we have set silverlight contenainer div size to be 500 x 500. If we now set ScaleMode="None" That is default we will see our application rendered like the following.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K9AMUL1hnjM/SMI5IbSLEmI/AAAAAAAAAIY/4AHwNcNG8sU/s1600-h/scalemode1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K9AMUL1hnjM/SMI5IbSLEmI/AAAAAAAAAIY/4AHwNcNG8sU/s320/scalemode1.jpg" alt="" id="BLOGGER_PHOTO_ID_5242815733138395746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The green border is the border of the silverlight container div. Red part is our original silverlight component.&lt;br /&gt;&lt;br /&gt;Following is in Stretch mode&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SMI6U8gAx9I/AAAAAAAAAIg/XRloy7aC0_4/s1600-h/ScaleMode2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SMI6U8gAx9I/AAAAAAAAAIg/XRloy7aC0_4/s320/ScaleMode2.jpg" alt="" id="BLOGGER_PHOTO_ID_5242817047724869586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is in Zoom mode&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K9AMUL1hnjM/SMI6rMMVNFI/AAAAAAAAAIo/OhRRRBIBaTI/s1600-h/ScaleMode3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K9AMUL1hnjM/SMI6rMMVNFI/AAAAAAAAAIo/OhRRRBIBaTI/s320/ScaleMode3.jpg" alt="" id="BLOGGER_PHOTO_ID_5242817429894411346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;See how it preserves its aspect ratio in Zoom mode.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;2. Check Silverlight Version:&lt;/span&gt; &lt;span&gt;You can check what silverlight version is installed in your computer in&lt;a href="http://www.microsoft.com/silverlight/resources/install.aspx"&gt; this page&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;3. Silverlight Event Bubbling:&lt;/span&gt; Silverlight has some events that are called routed events and they bubble from child to its parent element. Mainly mouse and keyboard events fall in this category.&lt;br /&gt;&lt;br /&gt;This  simple application will show how Silverlight event bubbling works and what you can do to allow or stop it.&lt;br /&gt;&lt;br /&gt;Lets have 3 canvases and arranged them like the following&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SKpwgAi-huI/AAAAAAAAAGo/JZ3iP50ZuhE/s1600-h/1-canvas-structure.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SKpwgAi-huI/AAAAAAAAAGo/JZ3iP50ZuhE/s320/1-canvas-structure.JPG" alt="" id="BLOGGER_PHOTO_ID_5236121211976451810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Blue Part is the root canvas, red one is a child inside blue one and green one is inside red canvas.&lt;br /&gt;&lt;br /&gt;RootCanvas -&gt; Blue one&lt;br /&gt;Child1Canvas -&gt; Red one&lt;br /&gt;Child2Canvas -&gt; Green one&lt;br /&gt;&lt;br /&gt;Now we will write 3 &lt;span style="color: rgb(0, 0, 0);"&gt;MouseLeftButtonDown&lt;/span&gt; event handlers for 3 of them.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       public Page()&lt;br /&gt;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;InitializeComponent();&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Loaded += new RoutedEventHandler(Page_Loaded);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Page_Loaded(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;RootCanvas.MouseLeftButtonDown += new   &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;MouseButtonEventHandler(RootCanvas_MouseLeftButtonDown);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Child1Canvas.MouseLeftButtonDown += new&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;MouseButtonEventHandler(Child1Canvas_MouseLeftButtonDown);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Child2Canvas.MouseLeftButtonDown += new&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;MouseButtonEventHandler(Child2Canvas_MouseLeftButtonDown);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Child2Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void Child1Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void RootCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now set breakpoints on each of the event handlers to see what is going on. You can also put alert for it. Now run the application and click on the green canvas. You will see the break points are hit in the order green canvas (child 2) to its parent red canvas to its parent the blue canvas.&lt;br /&gt;Now this is the default behavior. Now suppose we want to pass the event from green to its parent red but not to the blue one. Now as at the red canvas we want to stop the bubbling we have to write&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;e.Handled=true&lt;/span&gt; at its event handler. Now the event will not be passed to the blue one.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; void Child1Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;e.Handled = true;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Now Silverlight controls handles the mouse events internally and they don't let them bubble. So if you place a button or other Silverlight control inside the green canvas you will not be able to catch its mouse down event or pass it to the parent canvas.&lt;br /&gt;&lt;br /&gt;See this &lt;a href="http://silverlight.net/blogs/jesseliberty/archive/2008/06/03/beta-2-event-bubbling.aspx"&gt;great blog post&lt;/a&gt; and&lt;a href="http://msdn.microsoft.com/en-us/library/cc189018%28VS.95%29.aspx"&gt; this documentation&lt;/a&gt; for details.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;4. Enable help for Silverlight in Visual Studio 2008:&lt;/span&gt; You already installed Silverlight SDK and still can't see help on Silverlight from Visual Studio? Here is how to enable it.&lt;br /&gt;&lt;br /&gt;1.       Open Visual Studio (you might have to open VS as an administrator).&lt;br /&gt;2.       In the Help menu, choose Index. Microsoft Document Explorer displays.&lt;br /&gt;3.       In the Filtered by: drop-down, choose to (unfiltered).&lt;br /&gt;4.       In the Look for field, type Collection Manager.&lt;br /&gt;5.       Below the Collection Manager heading, double click Help.&lt;br /&gt;6.       Below the Collections available for inclusion in VSCC heading, check Microsoft Silverlight 2&lt;br /&gt;SDK Documentation.&lt;br /&gt;7.       Click Update VSCC.&lt;div&gt;&lt;br /&gt;Now after restarting visual studio you can see it in help -&gt; contents.&lt;br /&gt;&lt;br /&gt;This steps you can find inside the readme file&lt;br /&gt;C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Documentation\VS-Help\en-us\readme.txt&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;5. Document outline:&lt;/span&gt; &lt;/span&gt;This is actually a feature in visual studio. If you layout is complex and you want to easily navigate to parent or child elements you can use this. View -&gt; Other winndows -&gt; Document outline.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;6. Why my mouse events aint working?&lt;/span&gt; &lt;/span&gt;Have one simple Silverlight application with a green Grid with height and width 300 and 400. At the MouseLeftButtonDown event handler write one alert.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;private void LayoutRoot_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;             HtmlPage.Window.Alert("Event is Fired and catched");&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Now run the application and click the Grid. The alert will come. Now remove the background attribute from the grid and run the application. Click the grid. No alert will come. :). Though I don't know the reason for it but it might be intentional. Guess why? It might prevent bad guys to fool user think clicking an html element.&lt;br /&gt;&lt;br /&gt;Thanks all for keep on visiting my blog. I am a bit busy with my work right now and I will post some material for the newbies in Silverlight in my future posts.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-9213943688049178382?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/9213943688049178382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=9213943688049178382' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/9213943688049178382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/9213943688049178382'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/09/lets-not-stop-here.html' title='Let&apos;s Not Stop Here'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/SMI5IbSLEmI/AAAAAAAAAIY/4AHwNcNG8sU/s72-c/scalemode1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-3596229610590960603</id><published>2008-09-11T21:40:00.013+05:30</published><updated>2010-09-19T21:14:56.259+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applications'/><title type='text'>A Simple Wave Generator In Silverlight</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;[ Updated for Silverlight 2 ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hi,&lt;br /&gt;     I was building a simple waveform generator that will generate waveform for an equation containing sin, cos and tan. It will choose random color when drawing the curve and can draw one curve over another. The application in run looks like the following.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SMlIXyWJQyI/AAAAAAAAAIw/S53s-0GUoUU/s1600-h/waveformgenerator.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SMlIXyWJQyI/AAAAAAAAAIw/S53s-0GUoUU/s320/waveformgenerator.jpg" alt="" id="BLOGGER_PHOTO_ID_5244802814538498850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://mrgni.com/Blog_applications/DrawSimpleWaveTestPage.html"&gt;I cannot put it here as it wont fit in this width. See it &lt;/a&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://mrgni.com/Blog_applications/DrawSimpleWaveTestPage.html"&gt;here&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is going inside&lt;/span&gt;......&lt;br /&gt;&lt;br /&gt;The curve is actually a collection of ellipses of height and width 5. You can see it better if you draw a curve like &lt;span style="color: rgb(51, 51, 255);"&gt;tan() x sin()&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I am trying to explain it from a top level (less detail) it step by step&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;1.&lt;/span&gt; We will have a stack named &lt;span style="color: rgb(51, 51, 255);"&gt;EqunList&lt;/span&gt; that will put the equation in string elements. For example it will store " sin"  if you click sin button and then if you click + it will push "+" in the stack above sin.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;2.&lt;/span&gt; Now when we click draw button the equation list will be converted from infix to postfix notation so that it eliminates the brackets and let us calculate the values of the equation easily.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;3.&lt;/span&gt; It then chooses a random color for drawing the curve. Then it starts a timer that will put one ellipse every 15 milliseconds so that it seems the curve is been drawn slowly. We will talk about setting x and y coordinates (Canvas.Left and Canvas.Top respectively) of the ellipses shortly.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;4.&lt;/span&gt; There will be a counter that will be incremented and after reaching a certain value (width of the drawing plane in pixels) will stop the timer.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;5.&lt;/span&gt;  Now the x value of the ellipse (Canvas.Left) will be incremented by 1 in each timer tick (It can be made higher but then the curve might not look very good). The Y value of the ellipse will be determined by evaluating the equation for an angle that will vary from 0 to 2*PI. Here the angle will be increased by 2 * Math.PI / 200  each time. ( It will actually creates a complete cycle in 200 pixels. Also the resultant value will be multiplied by 100. The reason of the multiplier is because otherwise the curve will have height of only 2 pixel in case of a sine wave. The curve will be drawn not from the top but from the middle of the canvas to take account the negetive values as well as positive values.&lt;br /&gt;&lt;br /&gt;There are some minor tasks like disabling the buttons while one curve is drawn or clearing the equation after the curve is been drawn.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://mrgni.com/Blog_applications/Source_Codes/DrawSimpleWave.zip"&gt;Here is the complete source code for it.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please leave a comment if you have any doubt and also how to improve it. I am still inexperienced in programming field and have lots to know from you...&lt;br /&gt;Thanks....&lt;br /&gt;&lt;br /&gt;PS: BTW if you love music check out Madonna's new album Hard Candy. I am listening to the songs right now and they are excellent :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-3596229610590960603?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/3596229610590960603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=3596229610590960603' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/3596229610590960603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/3596229610590960603'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/09/simple-wave-generator-in-silverlight.html' title='A Simple Wave Generator In Silverlight'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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://4.bp.blogspot.com/_K9AMUL1hnjM/SMlIXyWJQyI/AAAAAAAAAIw/S53s-0GUoUU/s72-c/waveformgenerator.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-2735421121769494993</id><published>2008-09-03T20:27:00.027+05:30</published><updated>2008-11-01T18:07:42.781+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Google Chrome - An Exciting Eeperience</title><content type='html'>Hi,&lt;div&gt; Lets talk about something not directly related to Silverlight.&lt;br /&gt;&lt;br /&gt;Last night Google launched Chrome, its new open source browser. It is currently in beta. I have tried it and it seems exciting. Here is my "half day experience" about it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Things I like&lt;span class="Apple-style-span" style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;1.Clean Interface:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt; &lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102);"&gt;It has the cleanest interface of all the browsers I have used. While viewing websites you really will see the content not the browser.  It has one url bar and that is also used for searching.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;2. Task manager:&lt;/span&gt;  Control -&gt; Developer -&gt; task manager or shift + escape. It shows which tab is using most of your cpu and memory and you can easily end it. It has high details of the processing running in it . Stats for nerds.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K9AMUL1hnjM/SL68xrRfSGI/AAAAAAAAAHw/b1CD1HkeSG0/s1600-h/chrome1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_K9AMUL1hnjM/SL68xrRfSGI/AAAAAAAAAHw/b1CD1HkeSG0/s320/chrome1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5241834577921525858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;3.Most Visited sites: &lt;/span&gt;It has opera style speed dial feature that stores most visited 9 sites in thumbnail format for easy accessing. It also keeps trak of recent changes and provide a means to search history.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SL7GM_wQ12I/AAAAAAAAAII/pnjGeFQSMlU/s1600-h/Chrome4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SL7GM_wQ12I/AAAAAAAAAII/pnjGeFQSMlU/s320/Chrome4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5241844942880429922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;4.Developer support:&lt;/span&gt; It has a powerful javascript console and debugging support for helping developers. It also has support for CSS and html like Firebug in FF.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K9AMUL1hnjM/SL6-Rh8zPjI/AAAAAAAAAH4/gFxZHfDpYBw/s1600-h/chrome2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_K9AMUL1hnjM/SL6-Rh8zPjI/AAAAAAAAAH4/gFxZHfDpYBw/s320/chrome2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5241836224686276146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;5. Incognito browsing:&lt;/span&gt; ctrl+shift+N. It will help you prevent your privacy while not storing anything of what you do in that window. It is an easy way when we have to surf internet from internet cafe or other untrusted places. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;6. Search history:&lt;/span&gt; We can search inside the history. ctrl + H.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;7. Crash resistant:&lt;/span&gt; One tab is completely independent of others and crashing of one tab or taking longer time to load does not afect others. This is really exciting and I have not been successful to have it crash or misbehave.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;8. Fast opening and closing time:&lt;/span&gt; In my experience it opens faster and close smoothly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are lots of other features that I like but above ones are the main ones I have seen now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PS: It claims about being faster than other browsers that might be debatable. Though I can say it is not slower than those for sure.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); "&gt;Things I don't like&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;1. Password management&lt;/span&gt;: It will show your password if you go to  settings -&gt; options -&gt; minor tasks -&gt; show saved password then choose the web site and show password. I think it should be controled by a master password like FF does and also it should not be enabled default.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SL7BFWEmW_I/AAAAAAAAAIA/QhznZL-x1F8/s1600-h/Chrome3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SL7BFWEmW_I/AAAAAAAAAIA/QhznZL-x1F8/s320/Chrome3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5241839313874213874" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Acid test &lt;/span&gt;: I have make &lt;a href="http://acid3.acidtests.org/"&gt;Acid 3 test&lt;/a&gt; in it and it got a score of 76. Failed ofcourse. But it is still a decent score as              IE 7 scores 11             FF3   71         and        Opera-9   80 in it.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SL7VV5VUjbI/AAAAAAAAAIQ/-6fdC_W9IZU/s1600-h/chrome6.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SL7VV5VUjbI/AAAAAAAAAIQ/-6fdC_W9IZU/s320/chrome6.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5241861588450053554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;And oh Yes Silverlight!&lt;/span&gt;&lt;/span&gt; I am using Windows Vista as my OS. I have seen my blog in this browser and I can see my silverlight application there. But they do not function properly. :(. In Silverlight.net site I can see Silverlight 2 applications but not the Silverlight 1 applications. Silverlight 2 applications are also not working properly.  But that  does not seem to be a problem on long go as both are beta right now and if Chrome gets popularity Microsoft will get it work there too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will continue using it and will hope it gets good popularity soon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download link &lt;a href="http://www.blogger.com/www.google.com/chrome"&gt;www.google.com/chrome&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-2735421121769494993?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/2735421121769494993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=2735421121769494993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2735421121769494993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2735421121769494993'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/09/google-chrome-exciting-eeperience.html' title='Google Chrome - An Exciting Eeperience'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/SL68xrRfSGI/AAAAAAAAAHw/b1CD1HkeSG0/s72-c/chrome1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-5933468930215657588</id><published>2008-08-28T11:45:00.009+05:30</published><updated>2008-11-01T17:45:54.040+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorials'/><title type='text'>Skinning a Simple Slider</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;[ Updated for Silverlight 2 ]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hi all,&lt;br /&gt;&lt;br /&gt;In this post I will explain how we can make a customized slider from the default one. Silverlight makes customizing a control very easy. We will concentrate on the design part only and try to do total thing without looking to the xaml code.&lt;br /&gt;&lt;br /&gt;Here is how it will look finally.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SLZb2U3yNgI/AAAAAAAAAGw/OxRegiDQSvY/s1600-h/0-1final.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SLZb2U3yNgI/AAAAAAAAAGw/OxRegiDQSvY/s320/0-1final.JPG" alt="" id="BLOGGER_PHOTO_ID_5239476205365900802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Upper one is the default one and the lower one is the customized one.&lt;br /&gt;&lt;br /&gt;Silverlight separates a controls programmatic behavior to its look and feel. Changing one of them does not affect the other.&lt;br /&gt;&lt;br /&gt;Now here we will modify the look and feel of it. In other words we will change the default Template" or "Skin" the slider.&lt;br /&gt;&lt;br /&gt;We will try to modify it in expression blend because though theoretically it can be done from Visual Studio practically it is lot more easier in blend.&lt;br /&gt;&lt;br /&gt;Now first we have to understand Silverlight slider control consists of different parts. First of all it has vertical and horizontal part. Here we are using Horizontal one and that is default. Each of them consists of same set of components. Here we will concentrate on horizontal one but same concept will be applied for vertical one also.&lt;br /&gt;&lt;br /&gt;Now Make a project in blend named SliderSkinningExample. Now add one slider control to it and give it a width of 400. It will now look like the top one in the previous image. Now right click it in interaction window and click edit control parts then create a copy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZfS9yXFPI/AAAAAAAAAG4/E8OVwk9rlIg/s1600-h/1.-slider.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZfS9yXFPI/AAAAAAAAAG4/E8OVwk9rlIg/s320/1.-slider.JPG" alt="" id="BLOGGER_PHOTO_ID_5239479995920225522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can create and empty template too. But as a slider contains different parts it is easier to make a copy of the default one and have some changes in it.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZf5WdF3fI/AAAAAAAAAHA/DUpEPBalmWQ/s1600-h/2-slider.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZf5WdF3fI/AAAAAAAAAHA/DUpEPBalmWQ/s320/2-slider.JPG" alt="" id="BLOGGER_PHOTO_ID_5239480655376932338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now name the template to MySliderSkin. Now we have two choices of placing the template either in the same document or in the App.xaml. If you define it in App.xaml (Application) it will be accessible from anywhere in your page whereas this document will only make it available to the current usercontrol.  Here we will define it in document. I will explain why later.&lt;br /&gt;&lt;br /&gt;Now you will see the parts of the slider like the following.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K9AMUL1hnjM/SPV56ICNVOI/AAAAAAAAALA/zskBlDR-wF8/s1600-h/blogimage1.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K9AMUL1hnjM/SPV56ICNVOI/AAAAAAAAALA/zskBlDR-wF8/s320/blogimage1.JPG" alt="" id="BLOGGER_PHOTO_ID_5257242179521041634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we can see there is a main root grid and two child grid inside it; HorizontalTemplate and VerticalTemplate. Each has two repeat buttons and one thumb and one background rectangle. (They also ve one HorizontalTrackRectangleDisabledOverlay, ThumbDisabledOverlay and&lt;br /&gt;VerticalTrackRectangleDisabledOverlay rectangle but we will not consider them for now.)&lt;br /&gt;&lt;br /&gt;The main theme for the slider looks somewhat like the following. (Considering only the horizontal part)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K9AMUL1hnjM/SNFGZeBoOSI/AAAAAAAAAKw/zkdMCmQxowM/s1600-h/toblog.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_K9AMUL1hnjM/SNFGZeBoOSI/AAAAAAAAAKw/zkdMCmQxowM/s320/toblog.jpg" alt="" id="BLOGGER_PHOTO_ID_5247052444233906466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The blue part is the thumb that tells what the current position is. Green part is the background rectangle. Red part is the "HorizontalTrackLargeChangeDecreaseRepeatButton" and the orange part is the "HorizontalTrackLargeChangeIncreaseRepeatButton".&lt;br /&gt;&lt;br /&gt;Here we will be considering only the horizontal one. Make the vertical template part's visibility collapsed.&lt;br /&gt;&lt;br /&gt;Now we will have to skin 4 components of the slider to get what we want.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;1. Background Rectangle:&lt;/span&gt; (TrackRectangle). Make its height 12, RadiusX and RadiusY to 5, StrokeThicknes 1. Now we will apply some gradient to its Fill.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZlHiMA2eI/AAAAAAAAAHQ/q-FixbgRavc/s1600-h/4-slider.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZlHiMA2eI/AAAAAAAAAHQ/q-FixbgRavc/s320/4-slider.JPG" alt="" id="BLOGGER_PHOTO_ID_5239486396602833378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We have 3 gradient stop. Left and right one to #FF3F3F47 and middle one to #FF202022. We will leave other properties of this rectangle unchanged.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;2. HorizontalTrackLargeChangeDecreaseRepeatButton:&lt;/span&gt; We can not directly change it as it is a control. we have to again make a template for it. RightClick it and create a copy of the default template. You will see only a Grid inside it. Have two rectangles inside the root grid. (Make the root grid opacity to 100% as by default it is set to zero.&lt;br /&gt;&lt;br /&gt;a) First rectangle: Set its width auto, height 10, stroke thickness 0. Make horizontal and vertical alignment to stretch. RadiusX and RadiusY to 4 (as this is slightly smaller than the background rectangle we are setting the RadiusX and RadiusY to 4 insteed of 5).&lt;br /&gt;Fill this rectangle with the same style gradient, only make the gradient stop colors #FFEAC6C6 for left and right and #FFF7F7F7 for the middle. Set left margin 6.&lt;br /&gt;&lt;br /&gt;b) Second rectangle: The purpose of this rectangle is to hide the rounded corner of the first rectangle to the right side. See the following two images to get the clear idea.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZri0a_rRI/AAAAAAAAAHY/jmdcfztzzdU/s1600-h/5-slider.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZri0a_rRI/AAAAAAAAAHY/jmdcfztzzdU/s320/5-slider.JPG" alt="" id="BLOGGER_PHOTO_ID_5239493462423743762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Without the second rectangle.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZrjFTSNyI/AAAAAAAAAHg/colujS_A834/s1600-h/6-slider.JPG"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K9AMUL1hnjM/SLZrjFTSNyI/AAAAAAAAAHg/colujS_A834/s320/6-slider.JPG" alt="" id="BLOGGER_PHOTO_ID_5239493466954807074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;with second rectangle.&lt;br /&gt;&lt;br /&gt;Copy the first rectangle. Make horizontal alignment of the second rectangle right and have a width of 10 and height of 10. Keep radiusx and radiusy 0. Set the right margin to -2.  (You will not see it like the above image as we did not skin the thumb yet.)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;3. HorizontalThumb:&lt;/span&gt; Make horizontal thumb height and width to auto. Create a copy of the template for HorizontalThumb. Delete everything inside it except the root grid. Have two ellipse inside it.&lt;br /&gt;&lt;br /&gt;a) Outer ellipse: Height and width 18. Stroke thickness 2. Fill radial gradient. Left and right of gradient stop color #FF000000 middle gradient stop color #FFF0F0F4. Stroke color #FF555555.&lt;br /&gt;&lt;br /&gt;a) Inner ellipse: Height and width 5. Stroke thickness 2. Fill #FFFFFFFF. Stroke color #FF727070. Horizontal and vertical alignment center.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;4. HorizontalTrackLargeChangeIncreaseRepeatButton:&lt;/span&gt; No need to change.&lt;br /&gt;&lt;br /&gt;Now the slider should look like the above one.&lt;br /&gt;&lt;br /&gt;To apply this style to a new slider drag a new slider in the page and right click it and select edit control part -&gt; apply resource -&gt; MySliderSkin.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K9AMUL1hnjM/SLZ1L27ecgI/AAAAAAAAAHo/HlJlbDu83HY/s1600-h/7-slider.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K9AMUL1hnjM/SLZ1L27ecgI/AAAAAAAAAHo/HlJlbDu83HY/s320/7-slider.JPG" alt="" id="BLOGGER_PHOTO_ID_5239504063076135426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unto now we never seen the xaml that is created for this. Frankly we don't have to. Just to know what blend has created for us lets see it in xaml view in blend or open it from Visual Studio.&lt;br /&gt;&lt;br /&gt;Everything has been created inside UserControl.Resources tag. We can copy this to App.xaml also and only have to change to Application.Resources from UserControl.Resources. If you carefully see you will see there are something called VisualState and VisualStateGroup inside the xaml code. They are used for handling different states like mouse over, pressed , focused etc. They can be controlled from blend design view though we are not doing anything with them in this example.&lt;br /&gt;&lt;br /&gt;Another thing: We did not created the style in Application level because if we create it we can not use blend for making templates for the inner controls of the slider like thumb. This problem is likely to be fixed in later versions of blend.&lt;br /&gt;&lt;br /&gt;Please leave a comment if you have any doubt or if you found some error in this.&lt;br /&gt;&lt;br /&gt;I am trying to build some simple Silverlight application at home and I will share them once finished. I am also thinking of changing the colors and modifying this blog a bit. Bye for now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-5933468930215657588?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/5933468930215657588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=5933468930215657588' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/5933468930215657588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/5933468930215657588'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/08/skinning-simple-slider.html' title='Skinning a Simple Slider'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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://4.bp.blogspot.com/_K9AMUL1hnjM/SLZb2U3yNgI/AAAAAAAAAGw/OxRegiDQSvY/s72-c/0-1final.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-8442161994336878297</id><published>2008-07-29T15:29:00.001+05:30</published><updated>2008-12-11T16:46:59.916+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Some Lesser known things in Silverlight</title><content type='html'>&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;[ Updated for Silverlight 2]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some of them.......&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;1. EnableFrameRateCounter :&lt;/span&gt;&lt;/span&gt; Wander what fps (Frames per Second) is you silverlight application running? Set EnableFrameRateCounter="true" in your aspx page.&lt;br /&gt;The default maximum value is 60&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="parameter" sdata="paramReference"&gt;this is what is shows in my browser. 19.74 is actual and 60 is max set value.&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_K9AMUL1hnjM/SIP-SM3z9TI/AAAAAAAAAC0/NRRWaG3QqA4/s1600-h/fps.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_K9AMUL1hnjM/SIP-SM3z9TI/AAAAAAAAAC0/NRRWaG3QqA4/s320/fps.JPG" alt="" id="BLOGGER_PHOTO_ID_5225299581326325042" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;You can set MaxFrameRate there in that tag too. The Actual fps will depend with processor speed and how busy it is.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;br /&gt;2. EnableRedrawRegions:&lt;/span&gt; This is sometimes helpful when debugging. Setting it true will show when Silverlight redraws any region. Here I what I got when animating a circle.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SIQBl0AWhlI/AAAAAAAAAC8/8vnbvzUTTB4/s1600-h/enableredraw.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SIQBl0AWhlI/AAAAAAAAAC8/8vnbvzUTTB4/s320/enableredraw.JPG" alt="" id="BLOGGER_PHOTO_ID_5225303216783525458" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;3. PluginNotInstalledTemplate:&lt;/span&gt; This is useful when you want to do something when Silverlight plugin is not installed in users browser. This is how to do it&lt;br /&gt;&lt;br /&gt; &amp;lt;asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/TicTacToe.xap" MinimumVersion="2.0.30523"&lt;br /&gt;     Width="100%" Height="100%"&amp;gt;&lt;br /&gt;     &amp;lt;PluginNotInstalledTemplate&amp;gt;&lt;br /&gt;         Write something to show if plugin not installed&lt;br /&gt;     &amp;lt;/PluginNotInstalledTemplate&amp;gt;&lt;br /&gt; &amp;lt;/asp:Silverlight&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;4. SplashScreen:&lt;/span&gt; &lt;/span&gt;Whenever we start a silverlight application the silverlight control provides a default splash screen while the xap file is loading. It is pretty good but still sometimes we need to add our own splash screen. &lt;a href="http://www.silverlight.net/QuickStarts/BuildUi/SplashScreen.aspx"&gt;Here is the Silverlight tutorial that shows it step by step&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cameronalbert.com/post/2008/03/lt3baspSilverlight-gt3b-Override.aspx"&gt;Here is a blog post that will help providing splash screen with asp:Silverlight tag.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;5. InitParameters:&lt;/span&gt; You can pass initialization variables with InitParameters. here is a sample&lt;/p&gt;&lt;p&gt;&lt;asp:silverlight id="Xaml1" style="font-weight: bold;"&gt;InitParameters="BaseUrl=http://live.com,ResourceUrl=http://www.microsoft.com"&gt;&lt;/asp:silverlight&gt;&lt;/p&gt;&lt;p&gt;and now from App.Xaml.cs file&lt;/p&gt;&lt;p&gt; private void Application_Startup(object sender, StartupEventArgs e)&lt;br /&gt;{&lt;br /&gt;string baseUrl = e.InitParams["BaseUrl"];&lt;br /&gt;string reasourceUrl = e.InitParams["ResourceUrl"];&lt;br /&gt;this.RootVisual = new Page();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;You can pass the parameters in the constructor of Page class.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;6. Read Query Strings:&lt;/span&gt; &lt;/span&gt;Add System.Windows.Browser namespace where you want to access query string.&lt;/p&gt;&lt;p&gt;       if(HtmlPage.Document.QueryString.Keys.Contains("Name"))&lt;br /&gt;{&lt;br /&gt;string name = HtmlPage.Document.QueryString["Name"];&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;Url- http://SampleDomain/SamplePage.aspx?Name=Tanmoy&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;7. Famous Firefox nested DIV problem:&lt;/span&gt; &lt;/span&gt;Strictly speaking this is not related to silverlight. Still you might have faced this problem with firefox. Try to run the following in FF.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;div&amp;gt;&lt;br /&gt;    &amp;lt;div style="height: 100%;"&amp;gt;&lt;br /&gt;        &amp;lt;asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/TicTacToe.xap" MinimumVersion="2.0.30523"&lt;br /&gt;            Width="100%" Height="100%"&amp;gt;&lt;br /&gt;            &amp;lt;PluginNotInstalledTemplate&amp;gt;&lt;br /&gt;                Write something to show if plugin not installed&lt;br /&gt;            &amp;lt;/PluginNotInstalledTemplate&amp;gt;&lt;br /&gt;        &amp;lt;/asp:Silverlight&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;It will run in IE but not in FF. Remove the upper DIV and it will run properly. One work around is to set height=100% to the upper DIV. This problem is because FF deals DIV differently.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;8. What the ifame is doing here?&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;:&lt;/span&gt; If you see the html object code for silverlight page you will see one iframe after the object tag.&lt;br /&gt;&amp;lt;iframe style='visibility:hidden;height:0;width:0;border:0px'&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;&lt;p&gt;The reason behind this iframe is stated in the documentation like the following&lt;/p&gt;&lt;p&gt;The presence of an IFrame prevents the Safari browser from caching the page. Safari caching prevents the Silverlight plug-in from reloading when the user navigates back to a previously-visited Silverlight page.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;9. How to open .xap file:&lt;/span&gt; &lt;/span&gt;I guess you already know it but if you don't it is one coolest thing. XAP is a binary format&lt;span style="font-weight: bold;"&gt; but &lt;/span&gt;it is actually a .zip file renamed to .xap. So you can open it with WinZip or any other .zip file opener. It has one AppManifest.xaml file inside that defines the entry points and other assembly you are using. It also will have DLLs and optionally any resources you need to be loaded with the xap.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;10. Relative positioning:&lt;/span&gt; &lt;/span&gt;&lt;span&gt;It is possible to position the elements inside the Silverlight component relatively. For this you have to use Grid or StackPanel. I am showing it with a code.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;lt;Grid x:Name="LayoutRoot" Background="Gray" ShowGridLines="True" HorizontalAlignment="Center" VerticalAlignment="Center" Width="300" Height="300"&amp;gt;&lt;br /&gt;&amp;lt;Grid.ColumnDefinitions&amp;gt;&lt;br /&gt;    &amp;lt;ColumnDefinition Width="*" /&amp;gt;&lt;br /&gt;    &amp;lt;ColumnDefinition Width="2*"/&amp;gt;&lt;br /&gt;    &amp;lt;ColumnDefinition Width="3*"/&amp;gt;&lt;br /&gt;    &amp;lt;ColumnDefinition  Width="*"/&amp;gt;&lt;br /&gt;&amp;lt;/Grid.ColumnDefinitions&amp;gt;&lt;br /&gt;&amp;lt;Grid.RowDefinitions &amp;gt;&lt;br /&gt;    &amp;lt;RowDefinition Height="50" /&amp;gt;&lt;br /&gt;    &amp;lt;RowDefinition Height="2*"/&amp;gt;&lt;br /&gt;    &amp;lt;RowDefinition Height="auto" /&amp;gt;&lt;br /&gt;    &amp;lt;RowDefinition Height="*"/&amp;gt;&lt;br /&gt;&amp;lt;/Grid.RowDefinitions&amp;gt;&lt;br /&gt; &amp;lt;Rectangle Grid.Column="2" Grid.Row="2" Height="40" Width="30" Fill="Blue" /&amp;gt;&lt;br /&gt;&amp;lt;/Grid&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;First the ShowGridLines="True". It is very useful when you are experimenting with Grids. It shows the outlines of your Grid with dotted lines.&lt;/p&gt;&lt;p&gt;Now here is the output I got&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_K9AMUL1hnjM/SI6be4E8--I/AAAAAAAAADY/XoIawsK7S58/s1600-h/toblog.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_K9AMUL1hnjM/SI6be4E8--I/AAAAAAAAADY/XoIawsK7S58/s320/toblog.JPG" alt="" id="BLOGGER_PHOTO_ID_5228287172175264738" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now here is explanation.&lt;/p&gt;&lt;p&gt;Total width is 300 px and it is distributed with 4 columns in 1:2:3:1 ratio.&lt;/p&gt;&lt;p&gt;Now coming back to rows. There are 4 rows sharing 300px height. But one of them is occupying 50px. Now the height of the 3rd row is set to auto. That means it will take the height of its child element. That is the blue rectangle. Rest of the height available will be distributed with other two rows with 2:1 ratio.&lt;/p&gt;&lt;p&gt;I have been writing this post for quite a long time. Been busy with other tasks too. In anything you want to ask please leave a comment.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-8442161994336878297?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/8442161994336878297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=8442161994336878297' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/8442161994336878297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/8442161994336878297'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/some-lesser-known-things-in-silverlight.html' title='Some Lesser known things in Silverlight'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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/_K9AMUL1hnjM/SIP-SM3z9TI/AAAAAAAAAC0/NRRWaG3QqA4/s72-c/fps.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-6814683517671829788</id><published>2008-07-18T16:48:00.000+05:30</published><updated>2008-11-01T18:12:25.319+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Non-Technical'/><title type='text'>Why I Shifted My Blog</title><content type='html'>I have been using Wordpress.com for my blogs for quite a long time. I did not have any problem until recenly. Now as I am building a blog for Silverlight I first chosen Wordpress. The problem I faced was I can not display my application in my blog using javascript or even iframe. That was really annoying as I need at least iframe support. I searched their forum and it clearly been said iframe support is a distant dream. After continuing for some days I finally changed it to "old friend" blogger.com. Now I changed the design a bit. I am not a designer and this blog might not look very nice to you :).Still it is more flexible than that is in Wordpress and I will try to continue this here.&lt;br /&gt;Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-6814683517671829788?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/6814683517671829788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=6814683517671829788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6814683517671829788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6814683517671829788'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/why-i-shifted-my-blog.html' title='Why I Shifted My Blog'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-1427235677174746793</id><published>2008-07-18T10:35:00.008+05:30</published><updated>2010-09-19T22:14:20.964+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applications'/><title type='text'>Mahjong! My favorite game</title><content type='html'>&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;[ Updated for Silverlight 2]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mahjong has been my favorite game since the days I started using Linux (SUSE 10.2). I just tried and made &lt;a href="http://silverlight.services.live.com/invoke/66251/SimpleMahjong/iframe.html" target="_blank"&gt;&lt;strong&gt;"Something"&lt;/strong&gt;&lt;/a&gt; (Play it full screen. F11).  So I can play my favorite game in my off time. Of course it was again with Silverlight. Now here is the explanation and logic used to make this game.&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 3px solid black; width: 700px; height: 810px;"&gt;&lt;br /&gt;&lt;iframe src="http://mrgni.com/Blog_applications/SimpleMahjongTestPage.html" style="width: 700px; height: 810px; margin-top: -20px;" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;Design&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Page:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Page has 4 grids each with 15x9 dimension. So ultimately it gives the impression of a 3D stack.   Each cell (total 15x9x4 cells) can be filled with a tile or left empty. The grids are been filled with tiles such a way it looks like a nice structure. In this structure 4th grid (I am calling as 4th rank) is empty. There are total 144 tiles. There are 12 types of tiles.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tiles:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Each Tile is a user control. It has two canvases with rounded corner rectangles to make the nice 3D effect.&lt;br /&gt;&lt;br /&gt;On the top canvas there are two rectangles. One for holding the tile image, another one to have mouse over effect.(Yellow one).&lt;br /&gt;&lt;br /&gt;Each tile has 4 types of animations associated with it. (ClickAnimation, ClickOutAnimation, MouseOverAnimation,  NotMatch).&lt;span&gt; &lt;/span&gt;Click out animation will happen if user clicks the same tile twice. Not mach animation will happen when user tries to match wrong set of tiles.&lt;br /&gt;&lt;br /&gt;Each tile has one TileNumber that determines the image to be put in the tile and it also helps in finding match.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;strong&gt;Algorithm and code&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Tile:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Each tile is having four variables associated with it.&lt;br /&gt;&lt;br /&gt;TileNumber- Used to find match.&lt;br /&gt;&lt;br /&gt;TilePosition- Gives rank, row and column in a 3 dimensional structure.&lt;br /&gt;&lt;br /&gt;ParentPage- A reference to the Page class so it can call its methods.&lt;br /&gt;&lt;br /&gt;IsClicked- Tells if the tile has already been clicked&lt;br /&gt;&lt;br /&gt;Before starting any animation it will call its ParentPage method CheckIfFree to see if the tile is free.&lt;br /&gt;&lt;br /&gt;On click of the tile after confirming it is free It will again call another parent page method TileClicked. This method will try to match this current tile with the previous tile clicked. If it matches It will destroy two tiles or it will show the NotMatch animation.&lt;br /&gt;&lt;br /&gt;The constructor of this user control takes a random number from Page and set the tile image accordingly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Main Page and logic:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In the Page there are 4 grids (4th one is empty in this tile structure I am now using).&lt;br /&gt;&lt;br /&gt;First I am making the look of the board with a 3 dimensional array. Each element of that array represents empty or occupied state in boolean.&lt;br /&gt;&lt;br /&gt;After making the grid structure I am adding tiles which are marked occupied.&lt;br /&gt;&lt;br /&gt;In making the tiles for each tile GetTileNumber method returns one random number between 0 to 11 and it returns such a way that every number will be for 12 times making total 144 tiles.&lt;br /&gt;&lt;br /&gt;This is the tile number used generally and I am also using for my game.&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;int[] TileTypeCount;&lt;br /&gt;TileTypeCount = new int[12];&lt;br /&gt;&lt;br /&gt;private int GetTileNumber()&lt;br /&gt;{&lt;br /&gt;int tileNo;&lt;br /&gt;do&lt;br /&gt;{&lt;br /&gt;tileNo = rnd.Next(12);&lt;br /&gt;} while (TileTypeCount[tileNo] &amp;gt;= 12);&lt;br /&gt;&lt;br /&gt;TileTypeCount[tileNo]++;&lt;br /&gt;return tileNo;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Filling tiles for the fast grid. Lowest level&lt;div&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;// for set 1 rank 0&lt;br /&gt;for (int row = MaxRow - 1; row &amp;gt;= 0; row--)&lt;br /&gt;{&lt;br /&gt;for (int col = 0; col &amp;lt; MaxCol; col++)&lt;br /&gt;{&lt;br /&gt;if (TileGridStructure[0, row, col]) continue;&lt;br /&gt;TileStructure tile = new TileStructure(GetTileNumber(), this, new Position(0, row, col));&lt;br /&gt;Grid.SetRow(tile, row);&lt;br /&gt;Grid.SetColumn(tile, col);&lt;br /&gt;Set1.Children.Add(tile);&lt;br /&gt;TileCollection[0, row, col] = tile;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;TileGridStructure&lt;/span&gt; tells if this place is to be filled with a tile or not.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://mrgni.com/Blog_applications/Source_Codes/SimpleMahjong.zip"&gt;Here you will find the complete source code.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bye for now. Please leave a comment if you have any doubt or correction.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-1427235677174746793?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/1427235677174746793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=1427235677174746793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1427235677174746793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/1427235677174746793'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/mahjong-my-favorite-game.html' title='Mahjong! My favorite game'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-6228159658402014755</id><published>2008-07-18T10:34:00.002+05:30</published><updated>2008-11-01T18:13:33.350+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applications'/><title type='text'>Experimenting with DeepZoom</title><content type='html'>A new feature in silverlight is DeepZoom. Its extreamly popular in the Silverlight community and looks kool. I never touched it before. Today I installed DeepZoom Composer and started building "Something". It was easier than I thought. I used 50 images (Hi-resolution upto 7432 X 4168 ). All collected from wikipedia featured pictures to avoid licencing issues. I shaped it over like a G. It goes well. But I was trying to make something like &lt;a href="http://www.deepzoomobama.com/" target="_blank"&gt;DeepZoomObama&lt;/a&gt;. Last I saw the blog that describes Making of &lt;a href="http://www.silverlightshow.net/items/The-Making-of-Deep-Zoom-Obama.aspx" target="_blank"&gt;DeepZoomObama project&lt;/a&gt;. All that is need to make a mosaic with lots of images. I collected more (more than 350) Images from wikipedia and started building it. It took only around 2 to 3 hours to build &lt;strong&gt;&lt;a href="http://silverlight.services.live.com/invoke/66251/DeepZoomCeline/iframe.html"&gt;this&lt;/a&gt;.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://silverlight.services.live.com/invoke/66251/DeepZoomCeline/iframe.html" style="border: 4px solid black; width: 500px; height: 400px;" scrolling="no" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The software that used for this is &lt;a href="http://www.andreaplanet.com/andreamosaic/"&gt;andreamosaic&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;amp;DisplayLang=en"&gt;Silverlight Deep Zoom composer&lt;/a&gt;. Two softwares are extremely  easy to use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-6228159658402014755?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/6228159658402014755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=6228159658402014755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6228159658402014755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6228159658402014755'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/experimenting-with-deepzoom.html' title='Experimenting with DeepZoom'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-6690386496788068606</id><published>2008-07-18T10:33:00.011+05:30</published><updated>2010-09-19T21:56:49.382+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applications'/><title type='text'>Eight Queen Code</title><content type='html'>&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;[Updated for Silverlight 2]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I blogged previously about the&lt;a href="http://anothersilverlight.blogspot.com/2008/07/n-queen-problem-using-backtrack.html"&gt; N-Queen problem&lt;/a&gt;. Here I am going to explain how I did it.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;The Board and the Queen&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); font-weight: bold; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;  I used a StackPanel to hold the Board and the button. The board is a 8x 8 Grid. And empty at design time. Also have a event handler for the button Click.&lt;br /&gt;The Queen is a user control having just a Image with a white Background.&lt;br /&gt;Now adding one Canvas for each square and painting it with blackish or whitish gradient brush already created as a resource&lt;br /&gt;&lt;br /&gt;Repeating this for 64 squares.&lt;/div&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;Canvas c = &lt;span class="Keyword"&gt;new&lt;/span&gt; Canvas();&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;if&lt;/span&gt; ((row + col) % 2 == 0)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;c.Background = (LinearGradientBrush)Resources[&lt;span class="String"&gt;"BlackBrush"&lt;/span&gt;];&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;c.Background = (LinearGradientBrush)Resources[&lt;span class="String"&gt;"WhiteBrush"&lt;/span&gt;];&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Also having a blue hidden rectangle in each square that shows up when that square is being traversed and creates a nice animation. Also having a global variable for storing the squares and blue rectangles as we need them later.&lt;br /&gt;&lt;br /&gt;For adding and removing the Queen I am using this code.&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;Sqare[row, col].Children.Add(&lt;span class="Keyword"&gt;new&lt;/span&gt; Queen());&lt;br /&gt;&lt;br /&gt;Sqare[row, col].Children.RemoveAt(0);&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;span&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;The Animation&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The animation for the blue rectangle is  like the following.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;span class="Element"&gt;&amp;lt;Storyboard x:Name="AnimSquare" Storyboard.TargetProperty="Opacity" Duration="0:0:0.2"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Element"&gt;&amp;lt;DoubleAnimationUsingKeyFrames BeginTime="00:00:00"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Element"&gt;&amp;lt;SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Element"&gt;&amp;lt;SplineDoubleKeyFrame KeyTime="00:00:00.1" Value="1"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Element"&gt;&amp;lt;SplineDoubleKeyFrame KeyTime="00:00:00.13" Value="0"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Element"&gt;&amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Element"&gt;&amp;lt;/Storyboard&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;See there is no target name defined for the storyboard as we will be applying different square (The blue rectangle over the square exactly) as target.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;AnimSquare.Stop();&lt;br /&gt;&lt;br /&gt;Storyboard.SetTarget(AnimSquare, SquareMask[Grow, Gcol]);&lt;br /&gt;&lt;br /&gt;AnimSquare.Begin();&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;The Algorithm&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The algorithm is as follows.&lt;br /&gt;&lt;br /&gt;As there will be 8 Queens for 8 rows there will be one at each row.&lt;br /&gt;&lt;br /&gt;Start from the left top square.&lt;br /&gt;&lt;br /&gt;Put a Queen if that does not captured by other queens.&lt;br /&gt;&lt;br /&gt;Jump to the next row and try it for 8 squares in that row.&lt;br /&gt;&lt;br /&gt;If unsuccessful then go to previous row and remove the previous Queen placed there and try another square that have not been tried for that row.&lt;br /&gt;&lt;br /&gt;If that also unsuccessful go to lower rows until you find a new square to put the queen in that row.&lt;br /&gt;&lt;br /&gt;This can be achieved with a recursion.&lt;div&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;span class="Modifier"&gt;private&lt;/span&gt; &lt;span class="ValueType"&gt;void&lt;/span&gt; PlaceQueen(&lt;span class="ValueType"&gt;int&lt;/span&gt; row, &lt;span class="ValueType"&gt;int&lt;/span&gt; col)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;if&lt;/span&gt; (row == NoOFQueen) &lt;span class="Statement"&gt;return&lt;/span&gt;; &lt;span class="InlineComment"&gt;//Get out of recursion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CheckedCol[row] = col;&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;if&lt;/span&gt; (IsSafe(row, col))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;if&lt;/span&gt; (!flag)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;PutQueen(row, col);&lt;br /&gt;&lt;br /&gt;row++;&lt;br /&gt;&lt;br /&gt;col = 0;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;CheckedCol[row] = 0;&lt;br /&gt;&lt;br /&gt;row--;&lt;br /&gt;&lt;br /&gt;RemoveQueen(row, CheckedCol[row]);&lt;br /&gt;&lt;br /&gt;col = CheckedCol[row] + 1;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;if&lt;/span&gt; (col == (NoOFQueen - 1)) &lt;span class="InlineComment"&gt;// No where to place queen in the row&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;CheckedCol[row] = 0;&lt;br /&gt;&lt;br /&gt;row--;&lt;br /&gt;&lt;br /&gt;RemoveQueen(row, CheckedCol[row]);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="Statement"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;col++;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="InlineComment"&gt;//Grow = row; Gcol = col;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PlaceQueen(row, col);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Now the methods used here are self explanatory and simple. There is only one tricky part in this recursion. That is the boolean flag. It keeps the track if the queen from the last column has been removed. So next there wont be any queen placed on that column even if the square is safe. It will go farther one level down and so. The flag is set false whenever a new queen is placed on the board.&lt;br /&gt;&lt;br /&gt;There I did a little change in this method. Instead of calling the same method from PlaceQueen it has been called from a Tick event of a timer to enable animation. (see the commented Grow and Gcol. G for global ).&lt;br /&gt;&lt;br /&gt;This version of my program is still yet needs optimization and some code cleanup. It does not check if something unexpected happens. It doesnt even have a safecounter for getting out of recursion in case 8 Queens can not be placed at all.&lt;br /&gt;&lt;br /&gt;Here is the &lt;a href="http://mrgni.com/Blog_applications/EightQueenTestPage.html"&gt;demo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold; color: rgb(255, 0, 0);" href="http://mrgni.com/Blog_applications/Source_Codes/EightQueen.zip"&gt;And you can download the complete source  from here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;for any clarification or modification please leave a comment.&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-6690386496788068606?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/6690386496788068606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=6690386496788068606' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6690386496788068606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/6690386496788068606'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/eight-queen-code.html' title='Eight Queen Code'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-2423533305743090865</id><published>2008-07-18T10:31:00.010+05:30</published><updated>2010-09-19T21:59:40.895+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applications'/><title type='text'>N-Queen Problem using Backtrack Recursion</title><content type='html'>&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;[ Updated for Silverlight 2 ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hi,&lt;br /&gt;For last two days I am trying to build a Silverlight  Program that will solve n-queen (here I am using 8 ) problem and show it step by step to the user. After messing up with the logic finally managed to get it work. The algorithm still needs some improvements. I have uploaded the &lt;a title="See Demo" href="http://silverlight.services.live.com/invoke/66251/N-Queen-Problem/iframe.html"&gt;application in live streaming&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://mrgni.com/Blog_applications/EightQueenTestPage.html" style="width: 412px; height: 470px; margin-top: 20px;" frameborder="2" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Those don't know about the 8-Queen Puzzle it is to place 8 queens in a chess board so no queen can capture others.&lt;br /&gt;&lt;br /&gt;&lt;a style="color: rgb(255, 0, 0); font-weight: bold;" href="http://mrgni.com/Blog_applications/Source_Codes/EightQueen.zip"&gt;&lt;span style="text-decoration: underline;"&gt;Here &lt;/span&gt;is the complete code for it.&lt;/a&gt; I will look up the code and clean it. I will explain it in my &lt;a href="http://anothersilverlight.blogspot.com/2008/07/eight-queen-code.html"&gt;next post&lt;/a&gt;. For now I am listening to Celine Dion. There are lots of things happening today to make me happy :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-2423533305743090865?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/2423533305743090865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=2423533305743090865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2423533305743090865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/2423533305743090865'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/n-queen-problem-using-backtrack.html' title='N-Queen Problem using Backtrack Recursion'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-7858108342249532614</id><published>2008-07-18T10:30:00.003+05:30</published><updated>2008-11-01T18:10:21.861+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Beta 1 is dead</title><content type='html'>&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;[ Beta 2 is dead too. This post is invalid after Silverlight 2 released ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As we see with the linux development community there are some who like beta versions (me one of them). In Fedora download site I got it saying &lt;strong&gt;"Did someone say... beta?"&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The main thing is there are some unknown or unintentional features (Bugs?!) that we use in betas to get our programs work. These hacks work great until the feature has been changed or removed :(. In the Code complete Steve Mcconnell warns us not to use them.&lt;br /&gt;&lt;br /&gt;Anyway the code we have been building in Silverlight 2 beta 1 refused to work in beta 2. After some search and try error it did run but some parts needed complete rewrite.&lt;br /&gt;&lt;br /&gt;Still I say its better to modify your application for beta 2 in case you did not do it yet. &lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Here is why......&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. The user who is about to see it is more likely having latest plugin that is beta 2 and your beta 1 will refuse to work.&lt;br /&gt;&lt;br /&gt;2. With time goes there will not be much help available for beta 1.  Forum people will say UPGRADE.&lt;br /&gt;&lt;br /&gt;3. There has been lots of modification from beta 1 to beta 2 but it is expected not to change much from beta 2 to final version.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;So how to upgrade........&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Uninstall your previous Silverlight stuffs. VS 2008 tool, Blend,  everything.&lt;br /&gt;&lt;br /&gt;2. Install new versions of those tools  &lt;a title="Silverlight tools Beta 2" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434&amp;amp;displaylang=en" target="_blank"&gt;Silverlight tools beta 2&lt;/a&gt;.  &lt;a title="Expression Blend 2.5 June Preview" href="http://expression.microsoft.com/en-us/cc643423.aspx" target="_blank"&gt;Expression Blend 2.5 June Preview&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3. Open your Visual Studio solution file. It will ask you to upgrade with beta 2.&lt;br /&gt;&lt;br /&gt;4. Build your program. I will come to this point later.&lt;br /&gt;&lt;br /&gt;5. After successfully build check the test aspx and html page of the website. There change &lt;strong&gt;type="application/x-silverlight-2-b2"&lt;/strong&gt; in html and in aspx replace version attribute with &lt;strong&gt;MinimumVersion="2.0.30523"&lt;/strong&gt;. Also in the install silverlight link will be changed from &lt;strong&gt;http://go2.microsoft.com/fwlink/?LinkId=108182&lt;/strong&gt; to &lt;strong&gt;http://go2.microsoft.com/fwlink/?LinkID=115261.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;What if my build failed...........&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There are  huge modifications from beta 1 to beta 2. So your old application might need to modify.&lt;br /&gt;&lt;br /&gt;1. See the change list from &lt;a href="http://msdn.microsoft.com/en-us/library/cc645049%28VS.95%29.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2. In my case the problem was with WebClient class. Because &lt;strong&gt;WebClient has been moved to System.Net.dll&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;3. Another problem you might face is with event bubbling. Jesse Liberty has a great post &lt;a href="http://silverlight.net/blogs/jesseliberty/archive/2008/06/12/who-ate-my-mouse-down-event.aspx" target="_blank"&gt;explaning it&lt;/a&gt;. Basically you wont be able to catch mouse or keyboard events for controls because they themselves handle it. It has been done to maintain similarity between WPF and Silverlight. There are some workarounds if you really want to handle those events yourself. First Modify the template of your control or build a custom control deriving from the control you want to modify.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;What if all of them don't work for me.........&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://silverlight.net/forums/" target="_blank"&gt;Forums&lt;/a&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-7858108342249532614?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/7858108342249532614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=7858108342249532614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/7858108342249532614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/7858108342249532614'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/beta-1-is-dead.html' title='Beta 1 is dead'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry><entry><id>tag:blogger.com,1999:blog-4225176766855896137.post-8707895151535412078</id><published>2008-07-18T09:25:00.002+05:30</published><updated>2008-11-01T18:12:25.320+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Non-Technical'/><title type='text'>My Experience with Silverlight</title><content type='html'>I have started my programming life with Silverlight. So it might be that I see it from a different view than some others already been in animation and programming.&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;        The thrill that has been with it was its limited spread at that time. So there were hardly any people whom you can ask for help. The online rapid growing comunity has been a great comfort and still is. Some people really did excellent things that keep on impressing me.&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;        The first task was a presentation kind of thing to be done with Silverlight 1.0. The animations and design are done by Pallavi and I know only little about designing.&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;        As I am going through it and trying to explore more of it there are so many things to learn. After a bit break with Silverlight after 1.0 I am now back and working with Silverlight.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;        I am not a writer and so I better stop now. I will try to keep on posting here some tips and tricks and workarounds that might help you save the time I have wasted to learn them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks all for visiting my blog. I will try to keep it alive.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4225176766855896137-8707895151535412078?l=anothersilverlight.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://anothersilverlight.blogspot.com/feeds/8707895151535412078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4225176766855896137&amp;postID=8707895151535412078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/8707895151535412078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4225176766855896137/posts/default/8707895151535412078'/><link rel='alternate' type='text/html' href='http://anothersilverlight.blogspot.com/2008/07/my-experience-with-silverlight.html' title='My Experience with Silverlight'/><author><name>Tanmoy Rajguru (Code name MRGNI)</name><uri>http://www.blogger.com/profile/03759700098765818616</uri><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></entry></feed>
