<?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-3914841363915258586</id><updated>2011-11-28T07:48:37.086+08:00</updated><category term='source'/><category term='xml'/><category term='test'/><category term='navigation bar'/><category term='linq'/><category term='Tag'/><category term='navigation'/><category term='Webservice'/><category term='ImagineCup'/><category term='list'/><category term='storyboard'/><category term='silverlight'/><category term='animation'/><category term='Image'/><category term='MIX08'/><category term='Silvelright'/><category term='Osk'/><category term='async'/><category term='listbox'/><category term='Keyboard'/><category term='Silverlight Beta 2'/><category term='sync'/><category term='XAML'/><title type='text'>3-WATER</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-19422337728218461</id><published>2009-08-01T17:13:00.003+08:00</published><updated>2009-08-01T17:16:32.786+08:00</updated><title type='text'>Silverlight Learning Camp</title><content type='html'>Starting from tomorrow, I will start posting a series of Silverlight tutorial&lt;br /&gt;&lt;br /&gt;Visiting my blog seems going to a camp where provides a serier of silverlight class =)&lt;br /&gt;&lt;br /&gt;I hope more and more developers will join this family and program with silverlight&lt;br /&gt;&lt;br /&gt;You will then find it much better than Flash or even Flex&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-19422337728218461?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/19422337728218461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2009/08/silverlight-learning-camp.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/19422337728218461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/19422337728218461'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2009/08/silverlight-learning-camp.html' title='Silverlight Learning Camp'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1350664054778257589</id><published>2009-07-28T02:28:00.002+08:00</published><updated>2009-07-28T02:43:12.465+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tag'/><title type='text'>Tried Microsoft Tag</title><content type='html'>Wow! Really a great experience!&lt;br /&gt;&lt;br /&gt;I have, recently, tried the latest Microsoft Technology - Microsoft Tag.&lt;br /&gt;&lt;br /&gt;So, here comes to the question - what is Tag?&lt;br /&gt;&lt;br /&gt;Tag is an interactive 2D barcode.&lt;br /&gt;As soon as you snap it with your phone, which has TagReader installed, you can instantly, easily get the information behind the barcode.&lt;br /&gt;&lt;br /&gt;Let's try this one.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You need a mobile phone with either Windows Mobile, iPhone, J2ME, Blackberry, or Symbian S60.&lt;/li&gt;&lt;li&gt;Make sure your mobile phone has internet connection and photo taking function.&lt;/li&gt;&lt;li&gt;Visit &lt;a href="http://gettag.mobi/"&gt;http://gettag.mobi/&lt;/a&gt; and download the application - TagReader.&lt;/li&gt;&lt;li&gt;&lt;img src="http://i61.photobucket.com/albums/h56/yinmiu/Three-water_Blog_2009727192752.png" /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;Also, compare Microsoft Tag, QRCode and Datamatrix , actually, Tag doesnt contain any information but only the ID. After the Tag is read by the TagReader, the ID will be sent to the Microsoft Server and link to the final information. So, Tag has a great advantage is that it is smaller in real size than other 2D barcodes.&lt;/p&gt;&lt;p&gt;And I have tried to snap it using my phone. Even my phone have not get the focus, TagReader correctly reads the Tag and go to my blog! WoW!&lt;/p&gt;&lt;p&gt;Congrad~ really an impressive technology!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1350664054778257589?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1350664054778257589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2009/07/tried-microsoft-tag.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1350664054778257589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1350664054778257589'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2009/07/tried-microsoft-tag.html' title='Tried Microsoft Tag'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-6770510295121922641</id><published>2009-07-27T04:03:00.000+08:00</published><updated>2009-07-27T04:05:07.993+08:00</updated><title type='text'>Move from wordpress</title><content type='html'>Reason for moving from wordpress to here blogger is so simple&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WORDPRESS blocks iFrame for showing silverlight&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-6770510295121922641?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/6770510295121922641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2009/07/move-from-wordpress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6770510295121922641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6770510295121922641'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2009/07/move-from-wordpress.html' title='Move from wordpress'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-6438868308777599691</id><published>2009-07-27T03:25:00.000+08:00</published><updated>2009-07-27T10:04:22.904+08:00</updated><title type='text'>VS2010 beta + Silverlight 3</title><content type='html'>I have installed VS 2010 beta and Silverlight 3 SDK also Silverlight 2 SDK but the problem is I can't debug my application.&lt;br /&gt;&lt;br /&gt;It keeps showing "&lt;em&gt;Unable to Start Debugging. The Silverlight managed debugging package isn't installed&lt;/em&gt;".&lt;br /&gt;&lt;br /&gt;Finally the problem can be solved by installing Developer Runtime&lt;br /&gt;&lt;br /&gt;for Silverlight 2 &lt;a href="http://go.microsoft.com/fwlink/?LinkId=127693"&gt;download here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;for Silverlight 3 &lt;a href="http://go.microsoft.com/fwlink/?LinkID=141212"&gt;download here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy building application now ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-6438868308777599691?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/6438868308777599691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2009/07/vs2010-beta-silverlight-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6438868308777599691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6438868308777599691'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2009/07/vs2010-beta-silverlight-3.html' title='VS2010 beta + Silverlight 3'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-309953921629698827</id><published>2009-07-24T11:34:00.000+08:00</published><updated>2009-07-27T10:04:22.904+08:00</updated><title type='text'>Microsoft Tag</title><content type='html'>&lt;h1&gt;Microsoft Tag API announcement&lt;/h1&gt;&lt;br /&gt;&lt;strong&gt;Microsoft Tag is a mobile application that enables users to link almost anything in the real world&lt;/strong&gt; to more information or to an interactive experience on the mobile device. Microsoft Tag client software installed on the mobile device allows the owner to use the device’s camera to scan or take a picture of ("&lt;span style="color:#ff0000;"&gt;snap&lt;/span&gt;") a &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Tag barcode&lt;/span&gt;&lt;/strong&gt;, then accesses the information associated with the Tag on the mobile device. Businesses can use Microsoft Tag to interact with their customers like never before, using physical media such as print catalogs or POS displays as the launching point. Tag owners create and manage Tags at the Microsoft Tag Web site, &lt;a href="http://tag.microsoft.com/ManageAds.aspx"&gt;http://tag.microsoft.com/ManageAds.aspx.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Microsoft Tag API allows anyone to create Tag from the web, the desktop, mobile devices.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;It just like the barcode used it japan, same idea but different inplementation. That's the innovation =)&lt;br /&gt;&lt;br /&gt;So, let's get started now &lt;br /&gt;&lt;ol&gt;&lt;br /&gt;	&lt;li&gt;&lt;a href="http://tag.microsoft.com/"&gt;Sign-up&lt;/a&gt; if you are a new Tag user&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;a href="http://login.live.com/login.srf?wa=wsignin1.0&amp;amp;rpsnv=10&amp;amp;rver=5.5.4177.0&amp;amp;wp=MBI&amp;amp;wreply=http://tag.microsoft.com/ws/accessrequest.aspx"&gt;Apply&lt;/a&gt; for an API key.&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;a href="https://ws.tag.microsoft.com/howto/"&gt;Getting Started with Tag Web Services&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;View the &lt;a href="http://tag.microsoft.com/apihelp/"&gt;documentation&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Provide &lt;a href="http://getsatisfaction.com/microsofttag"&gt;feedback or questions&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Reference:&lt;a href="http://blogs.msdn.com/tag/archive/2009/07/23/microsoft-tag-api-announcement.aspx"&gt;http://blogs.msdn.com/tag/archive/2009/07/23/microsoft-tag-api-announcement.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-309953921629698827?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/309953921629698827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2009/07/microsoft-tag.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/309953921629698827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/309953921629698827'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2009/07/microsoft-tag.html' title='Microsoft Tag'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-5376257655815078091</id><published>2009-03-21T22:15:00.000+08:00</published><updated>2009-07-27T10:04:22.904+08:00</updated><title type='text'>3D in Silverlight 3 (beta)</title><content type='html'>As I know, many are waiting for the release of Silverlight 3 Beta. I just heard it from someone, I dont exactly remember who he/she is. Then I go and download the Tools and try things out.&lt;br /&gt;&lt;br /&gt;Of course, we should know the definition of XYZ plane before we do our code.&lt;br /&gt;&lt;br /&gt;It is the common one as in Silverlight 3. Vertical is the y-axis. Horizontal is the x-axis. And into and out of computer screen is defined as Z-axis.&lt;br /&gt;&lt;br /&gt;Here comes to the next part.&lt;br /&gt;&lt;br /&gt;Before doing 3D graphics in Silverlight 3, you should know what is ,in fact, handling the work. It is the &lt;strong&gt;PlaneProjection&lt;/strong&gt; Class.&lt;br /&gt;It is put inside the Windows.Media Namespace. Inside the class, there are &lt;strong&gt;twelve members. &lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;GlobalOffsetX&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;GlobalOffsetY&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;GlobalOffsetZ&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;LocalOffsetX&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;LocalOffsetY&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;LocalOffsetZ&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;RotationX&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;RotationY&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;RotationZ&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;CenterOfRotationX&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;CenterOfRotationY&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;&lt;strong&gt;CenterOfRotationZ&lt;/strong&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Now, I will introduce them briefly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How to add them in UIElement?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As I said before, it is put under the PlaneProject. For every element in XAML, you should put like this.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#ff0000;"&gt;        &amp;lt;Image Source="Waterfall.jpg" Width="200" Height="150"&amp;gt;&lt;br /&gt;            &amp;lt;Image.Projection&amp;gt;&lt;br /&gt;                &amp;lt;PlaneProjection RotationX="-50"/&amp;gt;&lt;br /&gt;            &amp;lt;/Image.Projection&amp;gt;&lt;br /&gt;        &amp;lt;/Image&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;It is easiest one. Becareful for the positive and negative side to the Rotation.&lt;br /&gt;&lt;blockquote&gt; &lt;span style="color:#0000ff;"&gt;   &amp;lt;UserControl.Resources&amp;gt;&lt;br /&gt;        &amp;lt;Storyboard x:Name="myRotation"&amp;gt;&lt;br /&gt;            &amp;lt;DoubleAnimation Duration="0:0:5" From="0" To="360" Storyboard.TargetName="myPic" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" AutoReverse="True"/&amp;gt;&lt;br /&gt;        &amp;lt;/Storyboard&amp;gt;&lt;br /&gt;    &amp;lt;/UserControl.Resources&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Here, you should have the image at all.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color:#993300;"&gt;        &amp;lt;Image x:Name="myPic" Source="Waterfall.jpg" Width="200" Height="150" Margin="80,0,120,150"&amp;gt;&lt;br /&gt;            &amp;lt;Image.Projection&amp;gt;&lt;br /&gt;                &amp;lt;PlaneProjection GlobalOffsetZ="-2000" RotationY="0" CenterOfRotationY="0.1"/&amp;gt;&lt;br /&gt;            &amp;lt;/Image.Projection&amp;gt;&lt;br /&gt;        &amp;lt;/Image&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;This is an example for revolve about Y-axis. Try to press F5 now!! Of course, you should add the myRotation.Begin() in Loaded Event so as to start the animation.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#993300;"&gt;Oh, and please feel free to visit here and get a brief concept about different properties and Silverlight 3 beta.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#993300;"&gt;&lt;a href="http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm?sref=AnimatedPerspective"&gt;http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;More will be released here. Keeping visting my blog =)&lt;br /&gt;&lt;h3&gt;&lt;span style="color:#000080;"&gt;SteveWong (Hong Kong)&lt;/span&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-5376257655815078091?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/5376257655815078091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2009/03/3d-in-silverlight-3-beta.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/5376257655815078091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/5376257655815078091'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2009/03/3d-in-silverlight-3-beta.html' title='3D in Silverlight 3 (beta)'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-8383780291819524698</id><published>2008-11-15T23:19:00.000+08:00</published><updated>2009-07-27T10:04:22.904+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><title type='text'>We can live without Motion Path</title><content type='html'>For Silverlight, many agree it is not perfect enough coz it doesnt include many features that inside WPF. Well, as we all know, Silverlight is an engine for us to create a web-based program/application. In my opinion, being a web-based application, it should be lite but not simple of course. As I remember, last week, someone ask how to create a motion path in Silverlight in order to make a picture flying around an ellipse (circular motion). Yesterday, another post has been created where people keep on discussing the problem of silverlight without motion path.&lt;br /&gt;&lt;br /&gt;I think all we can do is to relate Math and Programming together.&lt;br /&gt;Fortunately, my PureMath teacher has taught about a set of parametric equations which declare a path of circle. Then I try to implement it on Silverlight. Finally, it works, and I my extremely happy with that. Here is the solution.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XAML&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;[sourcecode language='xml']    &lt;UserControl.Resources&gt;&lt;br /&gt;        &lt;Storyboard x:Name="myStory_Ellipse"&gt;&lt;br /&gt;            &lt;DoubleAnimation x:Name="Ellipse_ani_X" Duration="00:00:00.001" Completed="Ellipse_ani_X_Completed"  Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" /&gt;&lt;br /&gt;            &lt;DoubleAnimation x:Name="Ellipse_ani_Y" Duration="00:00:00.001" Completed="Ellipse_ani_Y_Completed"  Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" /&gt;&lt;br /&gt;        &lt;/Storyboard&gt;&lt;br /&gt;    &lt;/UserControl.Resources&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;[sourcecode language='xml']        &lt;Ellipse Height="50"  Width="50" Stroke="#88FFDDDD"  Canvas.Top="0" Canvas.Left="-200" RenderTransformOrigin="0.5,0.5" x:Name="ellipse"&gt;&lt;br /&gt;            &lt;Ellipse.Fill&gt;&lt;br /&gt;                &lt;LinearGradientBrush StartPoint="0.5, 0"  EndPoint="0.5, 1"&gt;&lt;br /&gt;                    &lt;GradientStop Color="#00FFFFFF"  Offset="0.0" /&gt; &lt;br /&gt;                    &lt;GradientStop Color="#FF000000"  Offset="1.0" /&gt; &lt;br /&gt;                &lt;/LinearGradientBrush&gt; &lt;br /&gt;            &lt;/Ellipse.Fill&gt; &lt;br /&gt;            &lt;Ellipse.RenderTransform&gt; &lt;br /&gt;             &lt;TransformGroup&gt;&lt;br /&gt;              &lt;ScaleTransform/&gt;&lt;br /&gt;              &lt;SkewTransform/&gt;&lt;br /&gt;              &lt;RotateTransform/&gt;&lt;br /&gt;              &lt;TranslateTransform X="0" Y="0"/&gt;&lt;br /&gt;             &lt;/TransformGroup&gt;&lt;br /&gt;            &lt;/Ellipse.RenderTransform&gt; &lt;br /&gt;        &lt;/Ellipse&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C#:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']        int t = 0;&lt;br /&gt;        double AniX;&lt;br /&gt;        double AniY;&lt;br /&gt;&lt;br /&gt;        void Page_Loaded(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            Ellipse_ani_X.From = Ellipse_ani_Y.From = 0;&lt;br /&gt;            Ellipse_ani_Y.To = Ellipse_ani_X.To = AniX = AniY = 0;&lt;br /&gt;            t++;&lt;br /&gt;            myStory_Ellipse.Begin();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void Ellipse_ani_X_Completed(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            myStory_Ellipse.Stop();&lt;br /&gt;            Ellipse_ani_X.From = AniX;&lt;br /&gt;            Ellipse_ani_X.To= AniX = Math.Cos(t * Math.PI / 50 ) * 100;&lt;br /&gt;            Ellipse_ani_Y.From = AniY;&lt;br /&gt;            Ellipse_ani_Y.To = AniY = Math.Sin(t  * Math.PI / 50 ) * 100;&lt;br /&gt;            t++;&lt;br /&gt;            myStory_Ellipse.Begin();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void Ellipse_ani_Y_Completed(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;        }[/sourcecode]&lt;br /&gt;&lt;br /&gt;I am trying to work out the motion path solution. I hope it will help all of you.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Steve Wong(Hong Kong)&lt;br /&gt;Live with Light!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-8383780291819524698?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/8383780291819524698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/11/we-can-live-without-motion-path.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/8383780291819524698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/8383780291819524698'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/11/we-can-live-without-motion-path.html' title='We can live without Motion Path'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-6070096409047147574</id><published>2008-11-15T13:01:00.000+08:00</published><updated>2009-07-27T10:04:22.905+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test'/><title type='text'>Testing</title><content type='html'>&lt;!-- Start Partner Program code --&gt;&lt;br /&gt;&lt;a href="http://click.absoluteagency.com/click.asp?id=163965&amp;amp;typ=click"&gt;Testing&lt;/a&gt;&lt;br /&gt;&lt;!-- End Partner Program code --&gt;&lt;br /&gt;&lt;/br&gt;&lt;br /&gt;&lt;!-- Start Partner Program code --&gt;&lt;br /&gt;&lt;a href="http://click.absoluteagency.com/click.asp?id=163965&amp;amp;typ=click"&gt;Testing2&lt;/a&gt;&lt;br /&gt;&lt;!-- End Partner Program code --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-6070096409047147574?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/6070096409047147574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/11/testing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6070096409047147574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6070096409047147574'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/11/testing.html' title='Testing'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-5017783262839517207</id><published>2008-08-03T01:09:00.000+08:00</published><updated>2009-07-27T10:04:22.905+08:00</updated><title type='text'>Come Back From GreenGourney</title><content type='html'>&lt;span&gt;&lt;strong&gt;&lt;span style="font-family:Arial;"&gt;GREEN JOURNEY&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Great Journey! meet lots of friends. As I have only joined the HK stop, there is still someone I dont know!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;They are so nice, especially for the GuangDong ,Cheng Du, India, and of course HK! =]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Such a chance to meet people from lots of different countries is very rare in our life.&lt;/span&gt;&lt;br /&gt;For me, although I was not participating so much in the trip, only the HK one, I miss those guys!&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/3914841363915258586-5017783262839517207?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/5017783262839517207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/08/come-back-from-greengourney.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/5017783262839517207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/5017783262839517207'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/08/come-back-from-greengourney.html' title='Come Back From GreenGourney'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-8968997061660941289</id><published>2008-07-17T01:10:00.000+08:00</published><updated>2009-07-27T10:04:22.905+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='storyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight Beta 2'/><title type='text'>Standard call to begin StoryBoard</title><content type='html'>This is a good remind from Yi-Lun Luo(MSFT) from Silverlight Official Forum&lt;br /&gt;&lt;blockquote&gt;Hello, thanks for reporting this issue. I've verified the behavior and notified out product team. The issue appears to be: If you use Storyboard.SetTarget to set the target for an animation, if the property path is quite complex, the target will be lost after you begin the Storyboard. If you manually set the target before each Storyboard begins, it will work fine:&lt;br /&gt;&lt;br /&gt;Storyboard.SetTarget(s1.Children(0), recMain)&lt;br /&gt;s1.Begin()&lt;br /&gt;&lt;br /&gt;Also you can use SetTargetName instead of SetTarget. If your objects are dynamically created, you can write something like this:&lt;br /&gt;&lt;br /&gt;recMain.SetValue(FrameworkElement.NameProperty, "rec")&lt;br /&gt;Storyboard.SetTargetName(d, "rec")&lt;/blockquote&gt;&lt;br /&gt;&lt;img src="http://silverlight.net/emoticons/emotion-21.gif" alt="Yes [Y]" /&gt;&lt;img src="http://silverlight.net/emoticons/emotion-21.gif" alt="Yes [Y]" /&gt;&lt;img src="http://silverlight.net/emoticons/emotion-21.gif" alt="Yes [Y]" /&gt;&lt;img src="http://silverlight.net/emoticons/emotion-21.gif" alt="Yes [Y]" /&gt;&lt;img src="http://silverlight.net/emoticons/emotion-21.gif" alt="Yes [Y]" /&gt;&lt;img src="http://silverlight.net/emoticons/emotion-21.gif" alt="Yes [Y]" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-8968997061660941289?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/8968997061660941289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/07/standard-call-to-begin-storyboard.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/8968997061660941289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/8968997061660941289'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/07/standard-call-to-begin-storyboard.html' title='Standard call to begin StoryBoard'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-6000157295391091649</id><published>2008-07-11T21:52:00.000+08:00</published><updated>2009-07-27T10:04:22.905+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIX08'/><title type='text'>MIX 08 HongKong</title><content type='html'>After participating MIX Essentials 08.. I got a book ahha But it is quite similar to the last edition introducing Silverlight 1.0&lt;br /&gt;&lt;br /&gt;&lt;img class="alignnone" src="http://images.barnesandnoble.com/images/25340000/25341290.jpg" alt="" width="279" height="339" /&gt;&lt;br /&gt;&lt;br /&gt;Well, today I met Harris Andy and Angela I knew them coz they are the judges of ImagineCup local&lt;br /&gt;&lt;br /&gt;But they are not the main point. The most important is the content. It's very well. Awesome!&lt;br /&gt;Especially the video talking about how Microsoft technologies get around in our lives! Well Done! I should try hard to find that video =]&lt;br /&gt;&lt;br /&gt;By the way the examples shown today are good and some of them include good ideas.&lt;br /&gt;&lt;br /&gt;All in all, Wonderful! Well, I should work hard and try to get into Microsoft haha(daydreaming again!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-6000157295391091649?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/6000157295391091649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/07/mix-08-hongkong.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6000157295391091649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6000157295391091649'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/07/mix-08-hongkong.html' title='MIX 08 HongKong'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-7736967509353178746</id><published>2008-07-11T01:36:00.000+08:00</published><updated>2009-07-27T10:04:22.906+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ImagineCup'/><title type='text'>Months after Imagine Cup 08</title><content type='html'>Well, after paticipating &lt;strong&gt;Imagine Cup 08 &lt;/strong&gt;I learnt a lot.&lt;br /&gt;&lt;br /&gt;Working with 3 other schoolmates, Chung, Peter and Timothy, they have their own expertise... And we continue to implement our work in C#. Newly adding Windows Communication Foundation (WCF) and Silverlight, I take up the role to learn Silverlight and Peter responsible for the WCF. Our project seems to be very good together with our good idea and the new technology. It does consume most of my time. I sepnt a day to read the&lt;strong&gt; Introducing Microsoft Silverlight 1.0&lt;/strong&gt; from Lawrence Moroney and spent a week to read the &lt;strong&gt;Developing Windows-Based Applications with Visual C#.NET&lt;/strong&gt;. I think it should be a miracle coz I am just a secondary student now. =]&lt;br /&gt;&lt;br /&gt;After knowing all the foundation of Silverlight and C# I started making the WebPage I was responisble for. It is extremely difficult for me to handle this new technology Silverlight 2.0, luckily I did some project using Flash and know some algorithm DFS BFS... etc They should take some advantage for me.&lt;br /&gt;&lt;br /&gt;When all of us think our project is very poor at least worse than last year's one, the judges from Microsoft said, "oh quite good" ... and they came forward to have a look on the RFID Card and Receiver. We are surprised ... shocked ...&lt;br /&gt;&lt;br /&gt;When we entered the final in Local, we meet our rival using lots of new technologies including GPS... UMPC ...EeePC etc well and a home-made Carbon Dioxide meter (I think that's not made by them ahha)&lt;br /&gt;&lt;br /&gt;Finally, we got 2nd.. I know we had all done very well, especially &lt;strong&gt;Thanks for Angela Ip&lt;/strong&gt; =]&lt;br /&gt;&lt;br /&gt;It gives me so much experience in Computer Programming and since then I started answering question on SIlverlight forum. That's worth !Not only does it earn points (that's very minor for me) but also let me know how much I know now. It is just like a chapter checkpoint. People having different kinds of question and ask in the forum just like some guys who are giving me a Test with many different chapter in a big subject &lt;strong&gt;SILVERLIGHT&lt;/strong&gt; =]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I think we should treasure the chance to learn and the chance to compete!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;By the way, my academic result is having the trend of dorpping down... /.\ so I must work hard!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-7736967509353178746?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/7736967509353178746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/07/months-after-imagine-cup-08.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/7736967509353178746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/7736967509353178746'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/07/months-after-imagine-cup-08.html' title='Months after Imagine Cup 08'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1631741446857544261</id><published>2008-07-10T01:32:00.000+08:00</published><updated>2009-07-27T10:04:22.906+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><title type='text'>To Do List</title><content type='html'>Well, I have quite a bit to do these days becoz I want to try as much as I can in this Summer Holiday&lt;br /&gt;&lt;br /&gt;Of course I will have some time for my academic preparation&lt;br /&gt;&lt;br /&gt;Things to do are as follow, and I have no idea for each item at all. If you do have, please tell me or kindly comment here&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;	&lt;li&gt;Prepare for the ImagineCup2009 (think of the toughest question that we are facing now)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Linking Windows LiveID Authentication and Silverlight together&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;create a useful little silverlight application (theme hasnt been decided)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;take a deep look into working ADO.NET with Silverlight (know quite a little bit)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;learn more about PopFly (I know nothing about it)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Create a game on Silverlight(the least priority)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;To be a MVP (daydreaming...)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Hopefully, I can do much much...better than now after a few year... Fortunately, I am just 17 years old now =] still have a few of time&lt;br /&gt;&lt;br /&gt;Steve Wong (Hong Kong)&lt;br /&gt;Live with Light&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1631741446857544261?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1631741446857544261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/07/to-do-list.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1631741446857544261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1631741446857544261'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/07/to-do-list.html' title='To Do List'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-4703513259313980267</id><published>2008-07-01T01:32:00.000+08:00</published><updated>2009-07-27T10:04:22.906+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><title type='text'>Tired and...</title><content type='html'>Spending lots of time on silverlight.net. Actually, not too much, but it is sure consuming some of my time. Now, I cant decide what to create.. I want to make a software but I have no idea at all. I wrote a mail sender before coz it is useful for me at least. Now, I would like to do more on the ADO.NET coz it should be something very important for the one who works with WebService.&lt;br /&gt;&lt;br /&gt;By the way, these days, I replied some posts and found that many posts are related to 404 Error throws from the WebService when working with Silverlight. Not only does it the CrossDomain Error but also size of Data being transfered and the endpoint address. And the one who are having the problem right now please do search on a good search engine, and you should find lots of articles about 404 from silverlight.net/foums.&lt;br /&gt;&lt;br /&gt;I should take enough rest before working on my new project .. topic is still not yet decided&lt;br /&gt;&lt;br /&gt;Hopefully, all things go straight.&lt;br /&gt;&lt;br /&gt;Live with Light!&lt;br /&gt;&lt;br /&gt;SteveWong&lt;br /&gt;(HongKong)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-4703513259313980267?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/4703513259313980267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/tired-and.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/4703513259313980267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/4703513259313980267'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/tired-and.html' title='Tired and...'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-3435519719370738688</id><published>2008-06-24T12:29:00.000+08:00</published><updated>2009-07-27T10:04:22.906+08:00</updated><title type='text'>Finished a little app</title><content type='html'>I made a mail sender in Silverlight and it have the moderation on the attachments and allow people to send an e-mail with CC BCC even though they dont have an email account&lt;br /&gt;&lt;br /&gt;&lt;a href="http://59.149.117.93/SteveWeb/"&gt;Check out here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-3435519719370738688?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/3435519719370738688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/finished-little-app.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/3435519719370738688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/3435519719370738688'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/finished-little-app.html' title='Finished a little app'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-2150805992499457129</id><published>2008-06-16T12:50:00.000+08:00</published><updated>2009-07-27T10:04:22.907+08:00</updated><title type='text'>BUSY With Exams</title><content type='html'>I am having my school exam right now. So I may have to leave away from my computer for two weeks...&lt;br /&gt;&lt;br /&gt;These days, I cant answer questions on Silverlight.Net although my answers may not be so accurate.&lt;br /&gt;&lt;br /&gt;I am looking forward to the end of the exam and also the MIX 2008 Essential =] &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-2150805992499457129?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/2150805992499457129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/busy-with-exams.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/2150805992499457129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/2150805992499457129'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/busy-with-exams.html' title='BUSY With Exams'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1742055497856831702</id><published>2008-06-09T00:14:00.000+08:00</published><updated>2009-07-27T10:04:22.907+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight Beta 2'/><title type='text'>Silverlight Beta 2</title><content type='html'>Still a long way to go...&lt;br /&gt;&lt;br /&gt;After upgraded to Silverlight 2 beta 2, it seems that there is so many problems...&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;	&lt;li&gt;Listbox.Items.MouseLeftButtonDown Event cannot be fired &lt;/li&gt;&lt;br /&gt;	&lt;li&gt;WCFService cannot be added as Service Reference&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Beta 2 Runtime cannot view Beta 1 Application&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;.... Still more to be found and discovered..&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;These are not my main point. What I want to say is that - it is&lt;strong&gt; still &lt;/strong&gt;a Beta Version, isn't it?&lt;br /&gt;&lt;br /&gt;Engineers from Microsoft are still trying their best to create the best environment for us to build such a Dynamic Scenario (Silverlight). &lt;br /&gt;&lt;br /&gt;Please Clap for them and give your opinion at &lt;a href="http://www.silverlight.net/forums/"&gt;http://www.silverlight.net/forums/&lt;/a&gt; and post the bugs you found onto it.&lt;br /&gt;&lt;br /&gt;Thanks!&lt;br /&gt;&lt;br /&gt;Live with Light!&lt;br /&gt;Steve Wong (Hong Kong) &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1742055497856831702?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1742055497856831702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/silverlight-beta-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1742055497856831702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1742055497856831702'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/silverlight-beta-2.html' title='Silverlight Beta 2'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-7294407587228560281</id><published>2008-06-06T22:19:00.000+08:00</published><updated>2009-07-27T10:04:22.907+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight Beta 2'/><title type='text'>Silverlight Beta 2 has released</title><content type='html'>&lt;span class="media"&gt;&lt;a href="http://silverlight.net/forums/t/17337.aspx"&gt;http://silverlight.net/forums/t/17337.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Newly Updated!&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;	&lt;li&gt;Important! Migrating Older Code to the Newer Release&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Update Silverlight.js&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Sockets Breaking Change&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Change for Built-In Style of Controls&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;MIME Type and Installer URL Change&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;SetTargetProperty and GetTargetProperty Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;System.Windows.Control.dll Merged with System.Windows.dll&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;ToolTip Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Removed Several Properties from Controls in System.Windows*dll&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Change in Handling of System.Windows.Controls.Extended.dll in XAML&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Changes to HtmlElement.GetAttribute and HtmlElement.GetProperty&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Calendar/DatePicker Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;HtmlPage.UnregisterScriptableObject Removed&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;WebClient and HttpWebRequest Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Improved Null Argument Checking in System.Xml&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;BackgroundWorker Moved&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Deep Zoom Image and Collections Format Change&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;MultiScaleImage Change&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;AllowInboundCallsFromXDomain Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Changes to Scroll-related APIs and Drag*EventArgs&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Glyphs Element Requires Either UniCodeString or Indices Attribute&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;ItemsControl.Items Is Now of Type ItemCollection Instead of IList&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;RoutedEventArgs.Handled=true Events No Longer Bubble&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Style Cannot Be Applied to Control That Is Incompatible with Its TargetType&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;SetValue Only Accepts the Correct Types (No Conversions)&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Control.InitializeFromXaml Removed&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;No Longer Can Specify Name and x:Name on the Same Element&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Changes to Cross-Domain Policy&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Storyboards Can Be Active While Outside the Live Tree&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;GetValue on Storyboard.Duration Only Returns Storyboard.Duration&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Image and ImageBrush Class Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;TextBox Template Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Custom BorderBrush/BorderThickness Change&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;ButtonBase Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;ListBox and ListBoxItem Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;ContentControl and ContentPresenter Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;GetValue Changes&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Updates to Control Styles&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Miscellaneous API Changes&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-7294407587228560281?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/7294407587228560281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/silverlight-beta-2-has-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/7294407587228560281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/7294407587228560281'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/silverlight-beta-2-has-released.html' title='Silverlight Beta 2 has released'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-6631627830141372195</id><published>2008-06-05T23:59:00.000+08:00</published><updated>2009-07-27T10:04:22.907+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Osk'/><title type='text'>Keyboard OSK Control</title><content type='html'>WOW. It seems that most of my posts are written because I got ideas while I was answering the question on Silverlight.Net.&lt;br /&gt;&lt;br /&gt;Today, I would like to introduce my OSK but it is only done very simply.&lt;br /&gt;It doesnt support NumLk ScrLk Shift CapLk those function keys....&lt;br /&gt;In other words, it support mainly input of words.&lt;br /&gt;&lt;br /&gt;Let me paste the code here for all of you.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Page.xaml.cs&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Windows;&lt;br /&gt;using System.Windows.Controls;&lt;br /&gt;using System.Windows.Documents;&lt;br /&gt;using System.Windows.Input;&lt;br /&gt;using System.Windows.Media;&lt;br /&gt;using System.Windows.Media.Animation;&lt;br /&gt;using System.Windows.Shapes;&lt;br /&gt;using System.Windows.Media.Imaging;&lt;br /&gt;using System.Windows.Markup;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;&lt;br /&gt;namespace Testing&lt;br /&gt;{&lt;br /&gt;    public partial class Page : UserControl&lt;br /&gt;    {&lt;br /&gt;        string[] keystring = new string[49] { "`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "&lt;", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", "\\", "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "'", "Z", "X", "C", "V", "B", "N", "M", ",", ".", "?", " " };&lt;br /&gt;&lt;br /&gt;         public Page()&lt;br /&gt;         {&lt;br /&gt;             InitializeComponent();&lt;br /&gt;             Loaded += new RoutedEventHandler(Page_Loaded);&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         public void Page_Loaded(object sender, RoutedEventArgs e)&lt;br /&gt;         {&lt;br /&gt;             for (int i = 0; i &lt;= 48; i++)&lt;br /&gt;             {&lt;br /&gt;                 Button k = new Button();&lt;br /&gt;                 k.Content = keystring[i];&lt;br /&gt;                 k.Width = 20; k.Height = 20;&lt;br /&gt;                 if (i == 48 )&lt;br /&gt;                 {&lt;br /&gt;                     k.Width = 220;&lt;br /&gt;                     k.Margin = new Thickness(-30, 80, 0, 0);&lt;br /&gt;                 }&lt;br /&gt;                 else if (i &gt;= 38 )&lt;br /&gt;                {&lt;br /&gt;                    k.Margin = new Thickness((i-38 ) * 20 - 20, 60, 180 -((i-38 ) * 20 - 20), 20);&lt;br /&gt;                 }&lt;br /&gt;                else if (i &gt;= 27)&lt;br /&gt;                {&lt;br /&gt;                    k.Margin = new Thickness((i-27) * 20 - 30, 40, 180 - ((i-27) * 20 - 30), 40);&lt;br /&gt;                }&lt;br /&gt;                else if (i &gt;= 14)&lt;br /&gt;                {&lt;br /&gt;                    k.Margin = new Thickness((i - 14) * 20 - 40 , 20, 180 - ((i - 14) * 20 - 40), 60);&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    k.Margin = new Thickness(i * 20 - 50, 0, 180 - i * 20 + 50, 80);&lt;br /&gt;                }&lt;br /&gt;                KeyBoard.Children.Add(k);&lt;br /&gt;                k.Click += new RoutedEventHandler(k_Click);&lt;br /&gt;            }          &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        void k_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            Button temp = sender as Button;&lt;br /&gt;            if (temp.Content.ToString() == "&lt;" )&lt;br /&gt;             {&lt;br /&gt;                 if (tb.Text.Length != 0)&lt;br /&gt;                 {&lt;br /&gt;                     tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1);&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;             else&lt;br /&gt;             {&lt;br /&gt;                 tb.Text += temp.Content.ToString();&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;         #region Drag and Drop Starts Here&lt;br /&gt;         private bool isMouseCaptured;&lt;br /&gt;         private Point mousePosition;&lt;br /&gt;&lt;br /&gt;         void DragNDrop_MouseMove(object sender, MouseEventArgs e)&lt;br /&gt;         {&lt;br /&gt;             FrameworkElement item = sender as FrameworkElement;&lt;br /&gt;             if (isMouseCaptured)&lt;br /&gt;             {&lt;br /&gt;                 // Calculate the current position of the object.&lt;br /&gt;                 double deltaV = e.GetPosition(null).Y - mousePosition.Y;&lt;br /&gt;                 double deltaH = e.GetPosition(null).X - mousePosition.X;&lt;br /&gt;                 double newTop = deltaV + (double)KeyBoard.GetValue(Canvas.TopProperty);&lt;br /&gt;                 double newLeft = deltaH + (double)KeyBoard.GetValue(Canvas.LeftProperty);&lt;br /&gt;                 // Set new position of object.&lt;br /&gt;                 KeyBoard.SetValue(Canvas.TopProperty, newTop);&lt;br /&gt;                 KeyBoard.SetValue(Canvas.LeftProperty, newLeft);&lt;br /&gt;                 // Update position global variables.&lt;br /&gt;                 mousePosition = e.GetPosition(null);&lt;br /&gt;             }&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         void DragNDrop_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)&lt;br /&gt;         {&lt;br /&gt;             FrameworkElement item = sender as FrameworkElement;&lt;br /&gt;             isMouseCaptured = false;&lt;br /&gt;             item.ReleaseMouseCapture();&lt;br /&gt;             mousePosition.X = mousePosition.Y = 0;&lt;br /&gt;             item.Cursor = null;&lt;br /&gt;             item.Opacity *= 2;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         void DragNDrop_MouseEnter(object sender, MouseButtonEventArgs e)&lt;br /&gt;         {&lt;br /&gt;             FrameworkElement item = sender as FrameworkElement;&lt;br /&gt;             mousePosition = e.GetPosition(null);&lt;br /&gt;             isMouseCaptured = true;&lt;br /&gt;             item.CaptureMouse();&lt;br /&gt;             item.Opacity *= 0.5;&lt;br /&gt;         }&lt;br /&gt;         #endregion Drag and Drop Starts Here&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt; &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One for remind, the osk can move actually with the Drag and Drop code inside code-behind.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Live With Light!&lt;br /&gt;SteveWong (Hong Kong)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-6631627830141372195?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/6631627830141372195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/keyboard-osk-control.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6631627830141372195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6631627830141372195'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/keyboard-osk-control.html' title='Keyboard OSK Control'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1919616602390999308</id><published>2008-06-04T23:52:00.000+08:00</published><updated>2009-07-27T10:04:22.908+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Silvelright'/><title type='text'>Powerful XAML</title><content type='html'>Today, I answered a question which is about XamlReader. By the way I think of so many technologies which can work with silverlight, not only because Silverlight can run on HTML or Silverlight can contact Webserivce, but because of it is making use of XAML.&lt;br /&gt;&lt;br /&gt;Then I think of a Webserivce which return a string which is a string of XAML coding. It is so great to do so. Let say I have a SQL and after getting the data from the DataBase, maybe Information of Staffs. And I want to create a list of cards which includes the information of all staffs of my company. I can simply do that with all work on WebService but not Silverlight.&lt;br /&gt;&lt;br /&gt;It has both advantages and disadvantages. For Adv, some class cannot be passed to Silverlight from Webservice (ArrayList, HashTable..) but we can manipulate all these into the form we want to show in XAML and pass that string. Yet, on the other hand, the xaml code will be so long that lengthens the time of downloading from the webserive.&lt;br /&gt;&lt;br /&gt;By the way, Let me show an example here for the WebService.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;using System;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Web.Services;&lt;br /&gt;using System.Web.Services.Protocols;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Data.SqlClient;&lt;br /&gt;using System.Web.Script.Services;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Configuration;&lt;br /&gt;[WebService(Namespace = "&lt;a href="http://tempuri.org/"&gt;http://tempuri.org/&lt;/a&gt;")]&lt;br /&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;br /&gt;[ScriptService]&lt;br /&gt;public class MyService : System.Web.Services.WebServices&lt;br /&gt;{&lt;br /&gt;    public MyService()&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;    [WebMethod]&lt;br /&gt;    public string Get_StaffInfo(string id)&lt;br /&gt;    {&lt;br /&gt;        int nElement = 0;&lt;br /&gt;        StringBuilder strReturn = new StringBuilder();&lt;br /&gt;        strReturn.Append("&lt;canvas&gt;");&lt;br /&gt;        SqlConnection sqlCon = null;&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            string strConnectionString = (string)ConfigurationManager.ConnectionStrings["StaffDataBase"].ConnectionStrings;&lt;br /&gt;            sqlCon = new SqlConnection(strConnectionString);&lt;br /&gt;            SqlCommand sqlCom = new SqlCommand();&lt;br /&gt;            sqlCom.Connection = sqlCon;&lt;br /&gt;            sqlCom.CommandType= CommandType.Text;&lt;br /&gt;            sqlCom.CommandText = "SELECT ScreenName From dbo.Staffs WHERE (StaffId = @strId)";&lt;br /&gt;            sqlCom.Parameters.Add(new SqlParameter("@strId", id));&lt;br /&gt;            sqlCon.Open();&lt;br /&gt;            SqlDataReader sRead = sqlCom.ExecuteReader();&lt;br /&gt;            while (sRead.Read())&lt;br /&gt;            {&lt;br /&gt;                strReturn.AppendFormat("&lt;textblock top="{0}" foreground="White" text="{1}"&gt;                nElement += 20;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        catch&lt;br /&gt;        {&lt;br /&gt;            strReturn = new StringBuilder();&lt;br /&gt;            strReturn.Append("&lt;canvas&gt;");&lt;br /&gt;        }&lt;br /&gt;        finally&lt;br /&gt;        {&lt;br /&gt;            strReturn.Append("&lt;/canvas&gt;" );&lt;br /&gt;            if (sqlCon != null) sqlCon.Close();&lt;br /&gt;        }&lt;br /&gt;        return strReturn.ToString();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Inside your Silverlight you call this&lt;br /&gt;&lt;br /&gt;&lt;code&gt;namespace SL2WebSrv&lt;br /&gt;{&lt;br /&gt;    public partial class Page : UserControl&lt;br /&gt;{&lt;br /&gt;        WebServiceProxy.ServiceSoapClient mydata = new SL2WebSrv.WebServiceProxy.ServiceSoapClient();&lt;br /&gt;        public Page()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            Loaded += new RoutedEventHandler(Page_Loaded);&lt;br /&gt;        }&lt;br /&gt;        void Page_Loaded(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            mydata.Get_StaffInfoAsync("1");&lt;br /&gt;            mydata.Get_StaffInfoCompleted += new EventHandler&lt;sl2websrv.webserviceproxy.get_staffinfocompletedeventargs&gt;(mydata_Get_StaffInfoCompleted);&lt;br /&gt;        }&lt;br /&gt;        void mydata_Get_StaffInfoCompleted(object sender, SL2WebSrv.WebServiceProxy.Get_StaffInfoCompletedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            if (e.Error == null)&lt;br /&gt;            {&lt;br /&gt;                Canvas newStaff = XamlReader.Load(e.Result) as Canvas;&lt;br /&gt;                LayoutRoot.Children.Add(newStaff);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After all this tutorial, I hope more developers can know more about how powerful the Silverlight is and of course the XAML.&lt;br /&gt;&lt;br /&gt;It can really work with so much thing.... not only Webservice but also JSP and AJAX and ASP.NET...&lt;br /&gt;&lt;br /&gt;Live with Light&lt;br /&gt;SteveWong (Hong Kong)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1919616602390999308?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1919616602390999308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/powerful-xaml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1919616602390999308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1919616602390999308'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/powerful-xaml.html' title='Powerful XAML'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-4077146734508528238</id><published>2008-06-03T20:36:00.000+08:00</published><updated>2009-07-27T10:04:22.908+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIX08'/><title type='text'>MIX2008HK</title><content type='html'>Wow! I have been waiting for many many days for this event.&lt;br /&gt;&lt;br /&gt;As I know many different countries have held MIX2008 but not HongKong.&lt;br /&gt;&lt;br /&gt;Details are as follow:&lt;br /&gt;&lt;table class="whitecontent " border="0" cellspacing="0" cellpadding="0" width="175"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight:bold;"&gt;Date:&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;July 11, 2008 (Friday)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight:bold;padding-top:10px;"&gt;Time:&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;2:30 - 4:30pm&lt;br /&gt;(Registration: 2:00 – 2:30pm)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight:bold;padding-top:10px;"&gt;Venue:&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Grand Ballroom, Lower Lobby, Conrad Hong Kong,&lt;br /&gt;Pacific Place, 88 Queensway, Hong Kong&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight:bold;padding-top:10px;"&gt;Language:&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;Cantonese&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight:bold;padding-top:10px;"&gt;Admission:&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;FREE&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-weight:bold;padding-top:10px;"&gt;Enquiry Hotline:&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;2388 9600&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt; Reference Web Link: &lt;a href="http://www.microsoft.com/hk/msdn/mixessentials2008/"&gt;http://www.microsoft.com/hk/msdn/mixessentials2008/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:xx-large;font-family:Calibri;"&gt;&lt;strong&gt;Join It NOW!&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-4077146734508528238?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/4077146734508528238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/mix2008hk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/4077146734508528238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/4077146734508528238'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/mix2008hk.html' title='MIX2008HK'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-8591729470601021662</id><published>2008-06-03T01:24:00.000+08:00</published><updated>2009-07-27T10:04:22.908+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='storyboard'/><title type='text'>Animation and Storyboard</title><content type='html'>Before getting closer to Silverlight, I used to make animation and some application by Flash.&lt;br /&gt;&lt;br /&gt;Now, I have to remind all the people, who used to design Flash Application before, should be clear that it has a new system in Silverlight which is totally different from Flash.&lt;br /&gt;&lt;br /&gt;We have Storyboard to control the animation of different objects but we have Movie Clip to control those in Flash.&lt;br /&gt;&lt;br /&gt;In flash we have to create animation by time line everywhere, but we can do all the animation separately in Silverlight.&lt;br /&gt;&lt;br /&gt;We create animation in code-behind as follow:&lt;br /&gt;&lt;br /&gt;First we create our new Storyboard and Double Animation :&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Storyboard Reflection_Story1 = new Storyboard(); &lt;br /&gt;DoubleAnimation Reflection_fades = new DoubleAnimation();&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Then we have to set what the animation do, the value changed from .... to ....&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Reflection_fades.From = 0;&lt;br /&gt;Reflection_fades.To = 1;&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Furthermore, we have to let the computer know, how long is the animation last for?&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Reflection_fades.Duration = new Duration(TimeSpan.Parse("0:0:1"));&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;After that, what else we left? We have to tell the computer which object we want to apply for this animation.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Storyboard.SetTarget(Reflection_fades, Target_item);&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Also, the property that you are changing from 0 to 1 on the Targert_item.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Storyboard.SetTargetProperty(Reflection_fades, "(Target_item.Opacity)");&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Things left are quite simple and easy to understand!&lt;br /&gt;We should let the Storyboard to control our animation, thus we add(hook) it onto the Storyboard.&lt;br /&gt;Of course, we should then add the Storyboard into the Resources so that we can see it in the application.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Reflection_Story1.Children.Add(Reflection_fades);&lt;br /&gt;LayoutRoot.Resources.Add(Reflection_Story1);&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Lastly, we should make it starts so we can see what happens to the Opacity of the item.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Reflection_Story1.Begin();&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Example is almost finished here, but for more details, you can refer to MSDN.&lt;br /&gt;&lt;br /&gt;Because users also need to have a clear concepts of the use of different Animation (like Double, Point...)&lt;br /&gt;&lt;br /&gt;Live With Light&lt;br /&gt;Steve Wong (Hong Kong)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-8591729470601021662?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/8591729470601021662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/animation-and-storyboard.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/8591729470601021662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/8591729470601021662'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/animation-and-storyboard.html' title='Animation and Storyboard'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1147721692321199951</id><published>2008-06-01T23:02:00.000+08:00</published><updated>2009-07-27T10:04:22.909+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='source'/><category scheme='http://www.blogger.com/atom/ns#' term='Image'/><title type='text'>Setting source of Images</title><content type='html'>This week end, I am so busy with my heavy work load... homework! But, I still want to share my experience on writeing Silverlight Application.&lt;br /&gt;&lt;br /&gt;As I remembered, I have seen more than ten posts asking for the blinding of the source of their images.&lt;br /&gt;&lt;br /&gt;Actually people want to make use of the images that they added to the project.&lt;br /&gt;&lt;br /&gt;Honestly speaking, it has so many ways to do the trick.&lt;br /&gt;&lt;br /&gt;First one:&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Image Img = new Image();&lt;br /&gt;BitmapImage bi3 = new BitmapImage();&lt;br /&gt;bi3.UriSource = new Uri("pic.gif", UriKind.Relative);&lt;br /&gt;Img.Source = bi3;&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Let me explain a little bit. If you added the image to your project, it is better for you to use UriKind.Relative. Just like the word "Relative" it is taking the resources relatively to the project. But how about somethings that are not added to the project?&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Image Img = new Image();&lt;br /&gt;BitmapImage bi3 = new BitmapImage();&lt;br /&gt;bi3.UriSource = new Uri("http://localhost/pic.gif", UriKind.Absolute);&lt;br /&gt;Img.Source = bi3;&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apart from setting it programmatically with C#, you can also add it with xaml code throught C#.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']Image img = XamlReader.Load("&lt;Image x:Name=\"img01\" Source=\"pic.gif\" &lt;br /&gt;xmlns=\"http://schemas.microsoft.com/client/2007\"&lt;br /&gt;xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\ " / &gt; " ) as Image;&lt;br /&gt;Layoutroot.children.add(img);&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It is rare to see people using XamlReader, but it can really do the trick!&lt;br /&gt;&lt;br /&gt;Live with Light&lt;br /&gt;Steve Wong (Hong Kong)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1147721692321199951?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1147721692321199951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/06/setting-source-of-images.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1147721692321199951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1147721692321199951'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/06/setting-source-of-images.html' title='Setting source of Images'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-7846993084764628896</id><published>2008-05-31T09:47:00.000+08:00</published><updated>2009-07-27T10:04:22.909+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='listbox'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><title type='text'>Listbox</title><content type='html'>I've remembered one day, I am doing my Imagine Cup coding part in Silverlight.&lt;br /&gt;&lt;br /&gt;Suddenly, List of check box, List of Radio Button , List of Pic with Description come across in my mind.&lt;br /&gt;&lt;br /&gt;Then, I think of a good way to do so. After a moment, I have these ideas.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Let me briefly explain. I will use a stackpanel to store the items for each item in list. Then add the stackpanel into the list.&lt;br /&gt;&lt;br /&gt;Let say we have a list of checkbox and a list of redio button.&lt;br /&gt;&lt;br /&gt;It is easy for us to create the list like this.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']&lt;br /&gt;ListBox lb = new ListBox();&lt;br /&gt;for (int i = 0; i &lt;= 7; i++)&lt;br /&gt;{&lt;br /&gt;    CheckBox cb = new CheckBox(); &lt;br /&gt;    cb.Content = "Choice" + i.ToString();&lt;br /&gt;    lb.Items.Add(cb);&lt;br /&gt;    // Of course you can add some Event here for&lt;br /&gt;} &lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Case of Radio button  is the similar, so I dont explain so much here.&lt;br /&gt;&lt;br /&gt;But for the case of Pic with Desc...&lt;br /&gt;&lt;br /&gt;I will do like this.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']&lt;br /&gt;ListBox lb = new ListBox();&lt;br /&gt;for (int i = 0; i &lt;= 7; i++)&lt;br /&gt;{&lt;br /&gt;    Image Img = new Image();&lt;br /&gt;    BitmapImage bi = new BitmapImage(); &lt;br /&gt;    string k = "pic" + i.ToString();&lt;br /&gt;    TextBlock tb = new TextBlock();&lt;br /&gt;    tb.Text = k;&lt;br /&gt;    k += ".jpg";&lt;br /&gt;    bi.UriSource = new Uri(k, UriKind.Relative);&lt;br /&gt;    Img.Source = bi;&lt;br /&gt;    StackPanel sp = new StackPanel();&lt;br /&gt;    sp.Add(Img);&lt;br /&gt;    sp.Add(tb);&lt;br /&gt;    lb.Items.Add(sp);&lt;br /&gt;}  &lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Hope this can help more people to know more about Silverlight.&lt;br /&gt;&lt;br /&gt;Live with Light!&lt;br /&gt;&lt;br /&gt;Steve Wong (Hong Kong)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-7846993084764628896?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/7846993084764628896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/05/listbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/7846993084764628896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/7846993084764628896'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/05/listbox.html' title='Listbox'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1425955206350208718</id><published>2008-05-31T08:57:00.000+08:00</published><updated>2009-07-27T10:04:22.909+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><title type='text'>Xml and Linq in Silverlight</title><content type='html'>While answering a post in silverlight.net froum, I am surprised that the Silverlight work so well with XML WebService. &lt;br /&gt;&lt;br /&gt;First, in Xml WebService, you usually pass the Xml String to the Silverlight Application or using Http.Request to get the string by the Application itself. Silverlight can also parse it however you get it.&lt;br /&gt;&lt;br /&gt;Now, I am going to introduce a good way to use the Linq with Silverlight.&lt;br /&gt;&lt;br /&gt;Assume, you get a string by Xml Service after the Async Completed. That is,&lt;br /&gt;&lt;br /&gt;[sourcecode language='xml']&lt;br /&gt;&lt;UserRecords&gt;&lt;br /&gt;    &lt;User&gt;&lt;br /&gt;        &lt;Name&gt;Steve&lt;/Name&gt;&lt;br /&gt;        &lt;Age&gt;17&lt;/Age&gt;&lt;br /&gt;        &lt;Occupation&gt;Student&lt;/Occupation&gt;&lt;br /&gt;        &lt;Birthday&gt;18-11-1990&lt;/Birthday&gt;&lt;br /&gt;    &lt;/User&gt;&lt;br /&gt;    &lt;User&gt;&lt;br /&gt;        &lt;Name&gt;Hazel&lt;/Name&gt;&lt;br /&gt;        &lt;Age&gt;17&lt;/Age&gt;&lt;br /&gt;        &lt;Occupation&gt;Student&lt;/Occupation&gt;&lt;br /&gt;        &lt;Birthday&gt;14-12-1990&lt;/Birthday&gt;&lt;br /&gt;    &lt;/User&gt;&lt;br /&gt;    &lt;User&gt;...&lt;/User&gt;&lt;br /&gt;    &lt;User&gt;...&lt;/User&gt;&lt;br /&gt;    &lt;User&gt;...&lt;/User&gt;&lt;br /&gt;&lt;/UserRecords&gt;&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;And Suppose there is so many records here. It is very complicated for you to use XmlReader&lt;br /&gt;Now, XDocument is introduced.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']&lt;br /&gt;string[,] mydata = new string[100,4]&lt;br /&gt;&lt;br /&gt;if (e.Error == null)&lt;br /&gt;{&lt;br /&gt;    int i = -1;&lt;br /&gt;    XDocument xd = XDocument.Parse(e.Result);&lt;br /&gt;    var v = from g in xd.Descendants("UserRecords" )&lt;br /&gt;    select new &lt;br /&gt;            {&lt;br /&gt;                uname = g.Element("Name").Value,&lt;br /&gt;                uage = g.Element("Age").Value,&lt;br /&gt;                uocc = g.Element("Occupation").Value,&lt;br /&gt;                udob = g.Element("Birthday").Value,&lt;br /&gt;            }; &lt;br /&gt;    foreach (var itm in v)&lt;br /&gt;    {&lt;br /&gt;        i++;&lt;br /&gt;        mydata[i,0] = itm.uname.Trim();&lt;br /&gt;        mydata[i,1] = itm.uage.Trim();&lt;br /&gt;        mydata[i,2] = itm.uocc.Trim();&lt;br /&gt;        mydata[i,3] = itm.udob.Trim();&lt;br /&gt;    }&lt;br /&gt;} &lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;Furthermore, if the data is not present in this way, is as follow,&lt;br /&gt;&lt;br /&gt;[sourcecode language='xml']&lt;br /&gt;&lt;UserRecords&gt;&lt;br /&gt;&lt;Rank NO="1"&gt;&lt;br /&gt;        &lt;FIELD NAME="Name"&gt;Steve&lt;/FIELD&gt;&lt;br /&gt;        &lt;FIELD NAME="Age"&gt;17&lt;/FIELD&gt;&lt;br /&gt;    &lt;/Rank&gt;&lt;br /&gt;    &lt;Rank NO="2"&gt;&lt;br /&gt;        &lt;FIELD NAME="Name"&gt;Hazel&lt;/FIELD&gt;&lt;br /&gt;        &lt;FIELD NAME="Age"&gt;17&lt;/FIELD&gt;&lt;br /&gt;    &lt;/Rank&gt;&lt;br /&gt;&lt;UserRecords&gt;&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;p class="MsoNormal" style="text-align:left;"&gt;The way in parsing this in similar.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']&lt;br /&gt;public class RankingList&lt;br /&gt;{&lt;br /&gt;public string name {get ; set; }&lt;br /&gt;public string age {get ; set; }&lt;br /&gt;}&lt;br /&gt;if (e.Error == null)&lt;br /&gt;{&lt;br /&gt;            List&lt;RankingList&gt; list = new List&lt;RankingList&gt;();&lt;br /&gt;            XDocument xd = XDocument.Parse(e.Result);&lt;br /&gt;            var v = from row in xd.Descendants("Rank")&lt;br /&gt;                    select row.Elements("FIELD").ToDictionary(r=&gt;r.Attribute("name").Value, r=&gt;r.Value);&lt;br /&gt;            foreach (var itm in v)&lt;br /&gt;            {&lt;br /&gt;                    RankingList t = new RankingList();&lt;br /&gt;                    t.name = itm["Name"];&lt;br /&gt;                    t.age = itm["Age"];&lt;br /&gt;                    list.Add(t);&lt;br /&gt;            }&lt;br /&gt;}&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;p class="MsoNormal"&gt;I hope everyone can familiar with this Linq and Xml in Silverlight.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Live with Light.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Steve Wong (Hong Kong)&lt;/p&gt;&lt;br /&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1425955206350208718?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1425955206350208718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/05/xml-and-linq-in-silverlight.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1425955206350208718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1425955206350208718'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/05/xml-and-linq-in-silverlight.html' title='Xml and Linq in Silverlight'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1614989750912471002</id><published>2008-05-30T01:14:00.000+08:00</published><updated>2009-07-27T10:04:22.909+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='navigation bar'/><category scheme='http://www.blogger.com/atom/ns#' term='navigation'/><title type='text'>Navigation Bar</title><content type='html'>It seems that most people are very confused with designing a navigation for their own website&lt;br /&gt;Let me introduce my own one.&lt;br /&gt;&lt;br /&gt;First of all, we should have those thumbnail-sized  icons inside the bar. I suggest people download them from gallery in Microsoft.com. There is a tip on searching those icon. Please enter 'png" for the searching keyword.&lt;br /&gt;&lt;br /&gt;After downloaded all of them, we should add them into a stackpanel in xaml file.&lt;br /&gt;Let see here.&lt;br /&gt;&lt;img src="http://i31.tinypic.com/1t0zv9.png" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Then, we should add four storyboard for three case&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;	&lt;li&gt;Mouse enter the region of one of the icons&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Mouse leave the region of one of the icons&lt;/li&gt;&lt;br /&gt;	&lt;li&gt;Mouse click on one of the region&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;[sourcecode language='xml']&lt;br /&gt;&lt;Storyboard x:Name="GlowButtonSB"&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="1.44" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="1.44" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="Opacity" From="1.0" To="0.2" Duration="0:0:1" RepeatBehavior="Forever" AutoReverse="True" /&gt;&lt;br /&gt;&lt;/Storyboard&gt;&lt;br /&gt;&lt;Storyboard x:Name="ResetButtonSB"&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="1.0" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="1.0" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="Opacity" To="1.0" Duration="0:0:1" /&gt;&lt;br /&gt;&lt;/Storyboard&gt;&lt;br /&gt;&lt;Storyboard x:Name="EnterButtonSB"&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="1.44" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="1.44" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="Opacity" From="1.0" To="0.2" Duration="0:0:1" RepeatBehavior="Forever" AutoReverse="True"/&gt;&lt;br /&gt;&lt;/Storyboard&gt;&lt;br /&gt;&lt;Storyboard x:Name="LeaveButtonSB"&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="1.0" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="1.0" Duration="0:0:1" /&gt;&lt;br /&gt;       &lt;DoubleAnimation Storyboard.TargetName="LoadButton" Storyboard.TargetProperty="Opacity" To="1.0" Duration="0:0:1"/&gt;&lt;br /&gt;&lt;/Storyboard&gt;&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;After that, we should try to finish the work with C#&lt;br /&gt;We should have three case now as mentioned before.&lt;br /&gt;&lt;br /&gt;[sourcecode language='csharp']&lt;br /&gt;string CurrPage = null;&lt;br /&gt;Image CurrImg = null;&lt;br /&gt;int Curr = 0;&lt;br /&gt;TextBlock e_msg = new TextBlock();&lt;br /&gt;#region Navigation Animation Starts Here&lt;br /&gt;void Navigation_MouseLeave(object sender, MouseEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Image pic = sender as Image;&lt;br /&gt;    if (pic != null)&lt;br /&gt;    {&lt;br /&gt;        if (CurrPage != pic.Name)&lt;br /&gt;        {&lt;br /&gt;            pic.SetValue(Canvas.ZIndexProperty, 1);&lt;br /&gt;            foreach (Timeline tl in LeaveButtonSB.Children)&lt;br /&gt;            {&lt;br /&gt;                Storyboard.SetTarget(tl, pic);&lt;br /&gt;            }&lt;br /&gt;            LeaveButtonSB.Begin();&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            e_msg.Text = "It is clicked!";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;void Navigation_MouseEnter(object sender, MouseEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Image pic = sender as Image;&lt;br /&gt;    if (pic != null)&lt;br /&gt;    {&lt;br /&gt;        if (CurrPage != pic.Name)&lt;br /&gt;        {&lt;br /&gt;            pic.SetValue(Canvas.ZIndexProperty, 10);&lt;br /&gt;            foreach (Timeline tl in EnterButtonSB.Children)&lt;br /&gt;            {&lt;br /&gt;                Storyboard.SetTarget(tl, pic);&lt;br /&gt;            }&lt;br /&gt;            EnterButtonSB.Begin();&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            e_msg.Text = "It is clicked!";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;        }&lt;br /&gt;#endregion Navigation Animation Ends Here&lt;br /&gt;#region PageShowing Starts Here&lt;br /&gt;public void ShowPage(object sender, MouseButtonEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Image pic = sender as Image;&lt;br /&gt;    if (pic != null)&lt;br /&gt;    {&lt;br /&gt;        if (CurrPage != pic.Name &amp;&amp; CurrImg != pic)&lt;br /&gt;        {&lt;br /&gt;            if (CurrImg != null)&lt;br /&gt;            {&lt;br /&gt;                GlowButtonSB.Stop();&lt;br /&gt;                foreach (Timeline tl in ResetButtonSB.Children)&lt;br /&gt;                {&lt;br /&gt;                    Storyboard.SetTarget(tl, CurrImg);&lt;br /&gt;                }&lt;br /&gt;                ResetButtonSB.Begin();&lt;br /&gt;            }&lt;br /&gt;            foreach (Timeline tl in GlowButtonSB.Children)&lt;br /&gt;            {&lt;br /&gt;                Storyboard.SetTarget(tl, (sender as Image));&lt;br /&gt;            }&lt;br /&gt;            GlowButtonSB.Begin();&lt;br /&gt;            CurrPage = pic.Name;&lt;br /&gt;            CurrImg = pic;&lt;br /&gt;            //Show Page doing here&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            e_msg.Text = "Pic is needed for the sender in ShowPage";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        e_msg.Text = "It is clicked!";&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;[/sourcecode]&lt;br /&gt;&lt;br /&gt;This time, I really control all the stuff in C# and Blend, never in ASP.NET.&lt;br /&gt;Ofcoure, there is a way round in doing this trick by adding only a navigation bar in the MasterPage.&lt;br /&gt;Just Like &lt;a href="http://www.silverlight.net/"&gt;http://www.silverlight.net/&lt;/a&gt;&lt;br /&gt;I hope everyone will love this navigation bar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1614989750912471002?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1614989750912471002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/05/navigation-bar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1614989750912471002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1614989750912471002'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/05/navigation-bar.html' title='Navigation Bar'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i31.tinypic.com/1t0zv9_th.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-6693302168478484452</id><published>2008-05-29T16:47:00.000+08:00</published><updated>2009-07-27T10:04:22.910+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sync'/><category scheme='http://www.blogger.com/atom/ns#' term='async'/><title type='text'>Let's say "I LOVE YOU" to my dear computer</title><content type='html'>&lt;span style="font-family:verdana;"&gt;After the release of Siverlight 2.0, I do start reading the tutorials online. Of course, it is a very hard time for me becuase I am just a secondary school student. I spend most of the time at shcool on school day, leaving about 3 hours for me to read the posts at silverlight.net and sure I will answer them.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;As I heard before, it is newly updated for Visual Studio to have a code behind on the Silverlight, I don't know if it is true but it is so powerful that the xaml and xaml.cs can work so well with each other. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I had my own computer when I was Primary four. Starting from that day, it should be a summer holiday, I had started to borrow books from the public library, all books are so call Deep Look in ASP, CGI and PHP, some maybe HTML and Flash. When I was Primary five, my primary school had a workshop for me to learn Flash. I remember that is Flash 4.0. Learning for a few days, I just fell in love with computer and I told myself that I must become a programmer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Nowadays, I do not need to borrow books because online learning materials are available wherever in MSDN, silverlight.net or MVP's Blog. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I just want to be member of MVPs. It is a great honour to become a MVP. I do not only share my own experience of programming but also my experience of how do I work with computer. I know many programmers complain about the &lt;strong&gt;Async&lt;/strong&gt; and &lt;strong&gt;Sync&lt;/strong&gt; in cooperate webservice and silverlight. I do support the elimination of Sync. It is really protecting the platform ... &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Starting from today, I will start writing my own blog here ... of course only about programming here.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-6693302168478484452?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/6693302168478484452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/05/let-say-love-you-to-my-dear-computer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6693302168478484452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/6693302168478484452'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/05/let-say-love-you-to-my-dear-computer.html' title='Let&amp;#39;s say &amp;quot;I LOVE YOU&amp;quot; to my dear computer'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3914841363915258586.post-1874699835195146205</id><published>2008-05-29T16:43:00.000+08:00</published><updated>2009-07-27T10:04:22.910+08:00</updated><title type='text'>About Steve</title><content type='html'>Steve Wong is a High School Student and a Silverlight, WPF, WCF, C# developer who has a passion for emerging technologies. He is an active answerer in Silverlight Community. He have learnt how to programme since he was 8. He tried developing different kind of applicaton including Flash, PHP, ASP. Recently, he has been awarded as Microsoft Most Valuable Professional(MVP) in the Client Applicatoin Devlopment(Client App Dev) categories.&lt;br /&gt;&lt;br /&gt;Steve is now 18 years old and lives in Hong Kong with his family. You can contact him at watercubic@hotmail.com.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://cocaman.ch/wp/wp-content/uploads/2007/10/silverlight.png" alt="" width="300" height="332" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img class="alignnone size-full wp-image-47" title="image" src="http://3water.files.wordpress.com/2009/01/image.jpg" alt="image" width="158" height="244" /&gt;&lt;br /&gt;&lt;br /&gt;MVP (Client App Dev)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3914841363915258586-1874699835195146205?l=3-water.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://3-water.blogspot.com/feeds/1874699835195146205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://3-water.blogspot.com/2008/05/about-steve.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1874699835195146205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3914841363915258586/posts/default/1874699835195146205'/><link rel='alternate' type='text/html' href='http://3-water.blogspot.com/2008/05/about-steve.html' title='About Steve'/><author><name>Steve Wong</name><uri>http://www.blogger.com/profile/13785966111171585269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='17' height='32' src='http://2.bp.blogspot.com/_l8nc0AL4ZAM/Sm0FEcklqoI/AAAAAAAAADQ/LPuoVVfZ9i8/S220/P1000235.jpg'/></author><thr:total>10</thr:total></entry></feed>
