<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Application.NET</title><subtitle type="html" /><id>http://blogs.msdn.com/wtchou/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/wtchou/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-03-11T14:33:59Z</updated><entry><title>ASP.NET MVC 在 IIS 6 上</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2009/09/23/asp-net-mvc-iis6.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2009/09/23/asp-net-mvc-iis6.aspx</id><published>2009-09-23T10:13:27Z</published><updated>2009-09-23T10:13:27Z</updated><content type="html">&lt;p&gt;由於 ASP.NET MVC 使用新的 URL 格式, 不以 .aspx 當成附檔名, 當 ASP.NET 佈署到 IIS 6 時, IIS 6 無法自動辨識什麼樣的 URL 才需要轉交給 ASP.NET 引擎執行, 我們必需手動設定 IIS 6, 讓 ASP.NET MVC 可以正確執行。&lt;/p&gt;  &lt;p&gt;在 &lt;a title="http://www.asp.net/learn/mvc/tutorial-08-cs.aspx" href="http://www.asp.net/learn/mvc/tutorial-08-cs.aspx"&gt;http://www.asp.net/learn/mvc/tutorial-08-cs.aspx&lt;/a&gt; 介紹一種使用 ISAPI extension 的方式, 先在 IIS 6註冊一個 .mvc 的附檔名轉交到 ASP.NET, 然後修改 ASP.NET MVC 的 URL 路徑, 讓 ASP.NET MVC 的 URL 有 .mvc 的路徑。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. 修改 ASP.NET MVC 的 URL 格式&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Global.asax.cs 檔:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public static void RegisterRoutes(RouteCollection routes)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; routes.IgnoreRoute(&amp;quot;{resource}.axd/{*pathInfo}&amp;quot;); &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; routes.MapRoute(      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Default&amp;quot;,&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;{controller}&lt;strong&gt;.mvc&lt;/strong&gt;/{action}/{id}&amp;quot;,&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new { controller = &amp;quot;Home&amp;quot;, action = &amp;quot;Index&amp;quot;, id = &amp;quot;&amp;quot; }&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ); &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;routes.MapRoute(        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;Root&amp;quot;,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;&amp;quot;,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new { controller = &amp;quot;Home&amp;quot;, action = &amp;quot;Index&amp;quot;, id = &amp;quot;&amp;quot; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ); &lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. 在 IIS 6 新增 .mvc&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_thumb_5.png" width="278" height="440" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_thumb_1.png" width="551" height="445" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_thumb_2.png" width="412" height="422" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;執行檔(X): c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll&lt;/p&gt;  &lt;p&gt;副檔名(E): .mvc&lt;/p&gt;  &lt;p&gt;限於為(L): GET,HEAD,POST,DEBUG&lt;/p&gt;  &lt;p&gt;不要選&amp;quot;確認讓檔案是否存在(V)&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/asp.netmvciis6_D616/image_thumb_4.png" width="435" height="231" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9898322" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author></entry><entry><title>Windows 7 不再綁 Internet Explorer</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2009/03/09/windows-without-internet-explorer.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2009/03/09/windows-without-internet-explorer.aspx</id><published>2009-03-09T12:42:50Z</published><updated>2009-03-09T12:42:50Z</updated><content type="html">&lt;p&gt;對微軟來說, 這真是一個重要的轉折, Windows 已經不再藉由其桌面的優勢, 強迫使用者非得安裝 IE 不可, 使用者可以選擇性的&amp;quot;不安裝&amp;quot;, 或是在安裝之後移除它。&lt;/p&gt;  &lt;p&gt;從 Windows 7 RC 開始, 使用者可選擇移除程式有下列 9 種:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Media Player &lt;/li&gt;    &lt;li&gt;Windows Media Center &lt;/li&gt;    &lt;li&gt;Windows DVD Maker &lt;/li&gt;    &lt;li&gt;Internet Explorer 8 &lt;/li&gt;    &lt;li&gt;Windows Search &lt;/li&gt;    &lt;li&gt;Handwriting Recognition (through the Tablet PC Components option) &lt;/li&gt;    &lt;li&gt;Windows Gadget Platform &lt;/li&gt;    &lt;li&gt;Fax and Scan &lt;/li&gt;    &lt;li&gt;XPS Viewer and Services (including the Virtual Print Driver)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;消息來源:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/e7/archive/2009/03/06/beta-to-rc-changes-turning-windows-features-on-or-off.aspx" href="http://blogs.msdn.com/e7/archive/2009/03/06/beta-to-rc-changes-turning-windows-features-on-or-off.aspx"&gt;http://blogs.msdn.com/e7/archive/2009/03/06/beta-to-rc-changes-turning-windows-features-on-or-off.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9467597" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author></entry><entry><title>Moonlight 1.0 已發表</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2009/02/19/moonlight1-0released.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2009/02/19/moonlight1-0released.aspx</id><published>2009-02-19T16:16:10Z</published><updated>2009-02-19T16:16:10Z</updated><content type="html">&lt;p&gt;Unix 版的 Silveright – Moonlight 已經 Release 1.0 版, 支援以 X11 為顯示介面的 Unix 系統上的 Firefox 2 或 3, 目前還是 1.0 版, 相容於 Silverlight 1.0。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.go-mono.com/moonlight/"&gt;http://www.go-mono.com/moonlight/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/moonlight1.0released_12B15/clip_image002_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/moonlight1.0released_12B15/clip_image002_thumb.gif" width="100" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;參考 blogs:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2009/02/11/moonlight-1-0-release.aspx" href="http://weblogs.asp.net/scottgu/archive/2009/02/11/moonlight-1-0-release.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2009/02/11/moonlight-1-0-release.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://tirania.org/blog/archive/2009/Feb-11.html" href="http://tirania.org/blog/archive/2009/Feb-11.html"&gt;http://tirania.org/blog/archive/2009/Feb-11.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9434012" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /><category term="Moonlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Moonlight/default.aspx" /></entry><entry><title>如何在 Internet Explorer 中將網頁輸出成 .xps 檔</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2009/02/19/xps-install.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2009/02/19/xps-install.aspx</id><published>2009-02-19T03:51:08Z</published><updated>2009-02-19T03:51:08Z</updated><content type="html">&lt;p&gt;&lt;b&gt;Vista&lt;/b&gt;&lt;b&gt;用戶&lt;/b&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;開啟Internet Explorer &lt;/li&gt;    &lt;li&gt;連上欲輸出的網址&lt;/li&gt;    &lt;li&gt;於Internet Explorer中按下列印鍵(圖一) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image002_thumb.jpg" width="557" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(圖一)&lt;/p&gt;  &lt;ol start="start"&gt;   &lt;li&gt;選擇”Microsoft XPS Document Writer”，按下列印，選擇儲存位址即可。(圖二) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image004_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image004_thumb.jpg" width="558" height="429" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(圖二)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;XP&lt;/b&gt;&lt;b&gt;用戶&lt;/b&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;下載”Microsoft office add-in”(圖三)，參考網址為: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;amp;displaylang=en#"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&amp;amp;displaylang=en&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[5]" border="0" alt="clip_image002[5]" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image002%5B5%5D_40e9ab3e-bd0c-4217-b48a-69500d6fb6a3.jpg" width="557" height="419" /&gt;&lt;/a&gt;(圖三) &lt;/li&gt;    &lt;li&gt;執行SaveAsPDFand XPS.exe &lt;/li&gt;    &lt;li&gt;完成安裝後，打開Internet Explorer &lt;/li&gt;    &lt;li&gt;連上欲輸出的網址&lt;/li&gt;    &lt;li&gt;於Internet Explorer中按下列印鍵(圖四) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image004%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image004[5]" border="0" alt="clip_image004[5]" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image004%5B5%5D_thumb.jpg" width="557" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(圖四)&lt;/p&gt;  &lt;ol start="start"&gt;   &lt;li&gt;選擇”Microsoft XPS Document Writer”，按下列印，選擇儲存位址即可。(圖五) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image006_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/XPSinstall_7C7B/clip_image006_thumb.jpg" width="558" height="429" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(圖五)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9432900" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author></entry><entry><title>有關 Silverlight 3 的消息</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/11/27/silerlight-3-info.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/11/27/silerlight-3-info.aspx</id><published>2008-11-27T12:15:00Z</published><updated>2008-11-27T12:15:00Z</updated><content type="html">&lt;p&gt;本來以為 Silverlight 2 發表之後, 下一版的 Silverlight 要等好一陣子, 最近 Scott Guthrie 在他的部落格透露了有關 Silverlight 3 的消息:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://weblogs.asp.net/scottgu/archive/2008/11/16/update-on-silverlight-2-and-a-glimpse-of-silverlight-3.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/11/16/update-on-silverlight-2-and-a-glimpse-of-silverlight-3.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/11/16/update-on-silverlight-2-and-a-glimpse-of-silverlight-3.aspx&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;預計明年 (2009 年) 推出&lt;/li&gt;    &lt;li&gt;支援 H.264&lt;/li&gt;    &lt;li&gt;提供 3D 物件並支援 GPU 卡加速&lt;/li&gt;    &lt;li&gt;其他程式開發加強 (資料繫結, 新控制項)&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9146061" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /></entry><entry><title>用 Silverlight 開發的 Office Web 版</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/10/30/silverlightofficewebapplication.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/10/30/silverlightofficewebapplication.aspx</id><published>2008-10-30T02:38:23Z</published><updated>2008-10-30T02:38:23Z</updated><content type="html">&lt;p&gt;PDC 第二天發表在下一版的 Office 會同步推出全功能的 Web 版, 這個版本是使用 Silverlight 開發的, 功能跟 PC 版幾乎一樣, 但由於是 Web 版, 所以只能存取 Office Live Workspace 上的檔案。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9023238" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /></entry><entry><title>明年還會有 PDC</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/10/30/pdc2009.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/10/30/pdc2009.aspx</id><published>2008-10-29T20:41:47Z</published><updated>2008-10-29T20:41:47Z</updated><content type="html">&lt;p&gt;PDC 不是每年都會有的 (上一次的 PDC 是在三年前), 通常是微軟在開發技術上有重大革新時, 才會舉辦 PDC。而今天突然宣布明年 11/17~11/20 會舉辦 PDC 2009, 似乎是因為 Windows Azure 還有更多的隱藏計劃準備要在明年宣布。&lt;/p&gt;  &lt;p&gt;看了今年 PDC 的方向, 原本還很擔心 MIX 09 (3/18~20) 會講些什麼, MIX 是微軟的 Web 技術大會, 連續幾年都把焦點放在 Silverlight 與 live.com。今年的 PDC 重新定義了微軟 Cloud 的大方向, 以目前 MIX 09 公布的內容 &lt;a title="http://2009.visitmix.com/Agenda/Sessions.aspx" href="http://2009.visitmix.com/Agenda/Sessions.aspx"&gt;http://2009.visitmix.com/Agenda/Sessions.aspx&lt;/a&gt;, MIX 09 似乎會走向設計領域。&lt;/p&gt;  &lt;p&gt;看起來 2009 會是 Cloud Computing 非常精彩的一年, 不只是微軟, 各大廠商應會更多有趣的作法被提出來。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9022658" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /></entry><entry><title>Silverlight Toolkit 發表</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/10/29/silverlight-toolkit-announce.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/10/29/silverlight-toolkit-announce.aspx</id><published>2008-10-28T22:42:25Z</published><updated>2008-10-28T22:42:25Z</updated><content type="html">&lt;p&gt;PDC 第 2 天展示了很多還要一年才有的技術, 包含 Windows 7, .NET 4.0, Visual Studio 2010, Live Services, Office 14...等等, 只有一個是立刻用得上的: Silverlight Toolkit。&lt;/p&gt;  &lt;p&gt;Silverlight Toolkit (不是 Silverlight Tools for Visual Studio 2008 SP1) 是一堆免費的控制項, 如同 ASP.NET AJAX Control Toolkit, 將所有的程式碼開放在 Codeplex 網站, &lt;a title="http://www.codeplex.com/Silverlight" href="http://www.codeplex.com/Silverlight"&gt;http://www.codeplex.com/Silverlight&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/Silverlighttoolkitannounce_B2AB/ControlsPPC_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="ControlsPPC" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/Silverlighttoolkitannounce_B2AB/ControlsPPC_thumb.png" width="804" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9020802" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /></entry><entry><title>微軟發表雲端作業系統 Windows Azure</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/10/28/windows-azure-annouce.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/10/28/windows-azure-annouce.aspx</id><published>2008-10-28T04:12:42Z</published><updated>2008-10-28T04:12:42Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/WindowsAzureAnnouce_10018/WindowsAzure_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="WindowsAzure" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/WindowsAzureAnnouce_10018/WindowsAzure_thumb.gif" width="290" height="55" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;之前傳說中的 Windows Cloud 作業系統, 在 PDC 第一天正名為 Windows Azure, 從架構圖來看, Windows Azure Platform 分為兩部份: 底層是原先稱為 Global Foundation Service 或是 'red dog' 計劃的 Windows Azure; 上層則是以 Windows Azure 為基礎的 的各種 Services。&lt;/p&gt;  &lt;p&gt;原先 live.com 上的各稱服務, 都整合成 Live Services, 而 Biztalk Service 則簡化後變成 .NET Services, SQL Services 目前包含 Data Services 及 Report Services。&lt;/p&gt;  &lt;p&gt;更多資料請參考&amp;#160; &lt;a href="http://azure.com/"&gt;http://azure.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/WindowsAzureAnnouce_10018/servicesPlatform_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="servicesPlatform" src="http://blogs.msdn.com/blogfiles/wtchou/WindowsLiveWriter/WindowsAzureAnnouce_10018/servicesPlatform_thumb.jpg" width="490" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9019547" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Azure" scheme="http://blogs.msdn.com/wtchou/archive/tags/Azure/default.aspx" /><category term="Cloud" scheme="http://blogs.msdn.com/wtchou/archive/tags/Cloud/default.aspx" /></entry><entry><title>Silverlight 2 正式版推出</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/10/15/silverlight-2-rtw.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/10/15/silverlight-2-rtw.aspx</id><published>2008-10-14T18:18:44Z</published><updated>2008-10-14T18:18:44Z</updated><content type="html">&lt;p&gt;今天(10/14) Silverlight 2 正式推出, 使用者已經可以從 &lt;a href="http://www.microsoft.com/silverlight"&gt;http://www.microsoft.com/silverlight&lt;/a&gt; 網站下, 預計到 10/20 會提供從 Windows Update 下載更新, 而原先安裝 Silverlight 2 beta 2 的則會到 10/24 以後自動更新到正式版, 換句話說, 目前若還是 Silverlight 2 beta 2 的網站, 10/24 之前必須完成正式版的更新工作。&lt;/p&gt;  &lt;p&gt;開發相關工具也一併發表, 請到 &lt;a title="http://silverlight.net/GetStarted/" href="http://silverlight.net/GetStarted/"&gt;http://silverlight.net/GetStarted/&lt;/a&gt; 下載, 但有幾點注意事項:&lt;/p&gt;  &lt;p&gt;1. 目前 Silverlight Tools for Visual Studio 2008 SP1, 正式版只有英文版, 繁體中文還是 RC1, 預計 11 月中, 還會更新一次繁體中文到正式版。&lt;/p&gt;  &lt;p&gt;2. 原 beta 期間所用的 Blend 2.5 CTP 版次已取消, 改為 Blend 2 SP1, 安裝之前請先安裝 Blend 2, 才能再安裝 Blend 2 SP1。同樣的, 目前也先出英文版, 其他語言的版本要等到 11 月之後。&lt;/p&gt;  &lt;p&gt;3. Deep Zoom Composer 也要更新到最新版, 目前也只有英文版。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8999601" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /></entry><entry><title>Silverlight Tools Beta 2 for Visual Studio 2008 繁體中文版</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/06/23/microsoft-silverlight-tools-beta-2.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/06/23/microsoft-silverlight-tools-beta-2.aspx</id><published>2008-06-22T19:14:01Z</published><updated>2008-06-22T19:14:01Z</updated><content type="html">&lt;p&gt;Silverlight Tools Beta2 for Visual Studio 2008 必須安裝相對應語言版本的 Visual Studio 2008, 如果你的 Visual Studio 2008 是中文版, 請到 &lt;a title="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&amp;amp;FamilyID=50a9ec01-267b-4521-b7d7-c0dba8866434" href="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&amp;amp;FamilyID=50a9ec01-267b-4521-b7d7-c0dba8866434"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&amp;amp;FamilyID=50a9ec01-267b-4521-b7d7-c0dba8866434&lt;/a&gt; 下載中文版本。&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8639211" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /></entry><entry><title>海外網站刷卡驗證的有趣經驗</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/04/24/oversea-credit-card-verifications.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/04/24/oversea-credit-card-verifications.aspx</id><published>2008-04-24T08:24:51Z</published><updated>2008-04-24T08:24:51Z</updated><content type="html">&lt;p&gt;網路刷信用卡對消費者來說, 一直存在著一定的風險, 因為只要卡號+有效期限就可以完成交易, 而信用卡號會永久儲存在網站的資料庫中, 萬一有一天網站被駭客入侵, 或是遇到不肖的網站工程師, 這些資料就會被不法人士利用在網路上刷卡消費。發卡銀行為了收入, 當然不希望承認網路交易是不安全的, 一旦遇上交易糾紛, 一定會先保護消費者(當然, 銀行自身的利益才真正的放第一, 消費者擺第二), 最後倒楣的就網路店家了, 因為在網路店家與銀行簽定的信用卡使用合約是沿用實體店面的合約, 合約上要求店家必須&amp;quot;看著&amp;quot;客人在簽單上簽名, 並核對簽單上的簽名與信用上背面的簽名必須一致, 店家才算完成務。這根本是一個不平等條約, 沒有一個網站可以做到合約上的條件 (即使是用傳真簽單也沒有用, 根本無法核對信用卡背後的簽名), 於是銀行就利用這個條款拒約支付款項。我還曾經遇過一筆交易, 在金額入帳近一年後, 被銀行片面通知為盜刷, 硬把公司帳戶中的金額扣走 (銀行的行為幾乎跟強盜沒有兩樣)。&lt;/p&gt;  &lt;p&gt;這時網路店家就變成詐欺的受害者, 可以向盜刷信卡的人要求賠償, 問題是我們去哪裡找盜刷的人? 通常我都是接到刑事局的公文, 才知道我又變成受害者了, 還得跑一躺刑事局去作筆錄(這輩子安份守己, 幾次進出刑事局筆錄, 都是因為公司又變成網路詐欺的受害者)。如果盜刷的人與發卡銀行都在國內, 刑事局至才還會受理, 但是如果盜刷者在海外, 或者盜刷的是海外銀行發的信用卡, 以台灣目前的外交地位, 大概找不到什麼人可以幫你。於是, 很多網站是不受理海外刷卡的, 也不接受海外遞送的, 免得商品一但送出國, 就不知要去哪裡追回來。&lt;/p&gt;  &lt;p&gt;可是我卻是很喜歡在國外網站買東西的, 當然也常遇到不提供海外遞送的網路, 雖然感到小小的失望, 但也完全體會網站經營者的困難。當然, 也遇到很多網站的刁難 , 這些刁難通常是網站為了確保自身利益, 施展各種不同的驗證措施, 以確認消費者真的持卡者本人。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. 不接受帳單地址與遞送地址不同的海外交易&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;通常我的信用卡帳單地址是家裡, 但是遞送地址會寫公司, 以方便公司有人可以收件。某個網站為避免海外詐欺, 所以拒絕帳單地址與遞送地址不同的海外交易, 不過這個網站卻沒有事先告知此事, 不但讓我完成線上交易與信用卡授權, 過兩天才寫信來因為公司政策, 交易被取消。天啊! 它已經免費騙走我的信用卡號, 而且我如果把帳單地址也填公司, 它沒有任何辦法向我的銀行查詢地址的真偽, 這個驗證辦法根本是效的, 給一分。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. 要求傳真信用卡帳單&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;有一個網站是在我完成送出交易隔天, 寄信來說: 對於第一次消費的海外客戶, 要驗證其持卡身份, 請我將任何一期的信用卡對帳單, 傳真到指定的電話, 上頭要有我的相同的信用卡號與持卡人姓名。它給的電話當然是國外的長途電話, 公司的傳真就算讓我傳到國外, 其費用也不小。於是我把帳單掃描成影像檔回寄給它, 它也接受認證。事後想想, 如果我真的要騙它, 不管是傳真或是掃描, 都很容易造假, 不過比起前一個方法尊重消費者, 給二分。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. 要求發卡銀行提供正式證明文件&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;由於商家根本不可能向銀行查詢消費的個人資料, 某個海外網站要求我提供銀行出具的帳單地址證明, 意思就是要我的銀行特別出一份正式的證明, 以證明我的帳單地址無誤。這是什麼奇怪的要求, 一般銀行怎麼可能給這種無法無聊的證明, 只是為了賺台幣不到 200 元的手續費? 而且還要是英文版的證明文件。如果要用 Photoshop 製作一份假的銀行證明, 網站應該也無從查證。為了不願作假, 跟該網站用 e-mail 多次溝通無效, 只好放棄訂單, 給零分。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. 要求提供該筆交易信用卡授權碼&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;在線上完成交易後, 銀行會給商家一個4位數的授權碼, 通常消費者不會看到交易授權碼。某個網站在結帳後寄一封信來, 為了首次確認持卡人身份, 請我向銀行查詢該筆交易的授權碼。一開始我還有點狐疑, 打了電話給銀行的客服中心, 電話中確認個人身份後, 果然問得該筆交易的授權碼。這種身份查核方式果然高明, 只用交易授權碼, 就可以讓發卡銀行客服中心代為確認持卡的身份, 給五分。該網站是:&lt;a title="http://www.moosejaw.com/" href="http://www.moosejaw.com/"&gt;http://www.moosejaw.com/&lt;/a&gt;, 值得獎勵。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;5. PayPal 確認法&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;這不是說用 PayPal 來確認交易, 而是當我們在 PayPal 申請帳號時, PayPal 先要求我們在網站上刷 1 美元, 神奇的是, PayPal 會在信用卡帳單中的店家名稱夾帶一個驗證碼 (一般的商家根本不可能有能力夾帶這種驗證碼), 再回到 PayPal 的網站上輸入驗證碼以完成身份驗證。這種方法, 雖然無法造假, 一般商家根本無法使用, 而且驗證碼必須等到一個月後收到帳單才能得知, 給三分。 &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8420827" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author></entry><entry><title>Silverlight 2 如何接收滑鼠滾輪訊息</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/04/16/silverlight-2-mouse-wheel.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/04/16/silverlight-2-mouse-wheel.aspx</id><published>2008-04-16T06:07:20Z</published><updated>2008-04-16T06:07:20Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;註: 這裡的範例程式碼是針對 Silverlight 2 Beta1, 在 beta2 中, MultiScaleImage 的 Source 的型態有些改變。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;在 Deep Zoom 的應用中, 常常會用滑鼠滾輪來作 Zoom In/ Zoom Out 的動作, 但是 Silverlight 2 Beta1 的 .NET 事件裡並沒有滑鼠滑輪的事件, 必需藉用瀏覽器事件來呼叫滾輪訊息。此外, 要特別注意的是, 滑鼠滾輪雖然方便, 但是並不是所有的作業系統都支援滑鼠滾輪, 也要可能有的使用者的滑鼠根本缺少滾輪, 所以我們在設計滾輪應用的同時, 務必要設計無法使用滾輪時的替代方案。(請參考清明上河圖的設計&lt;a href="http://learnet.npm.gov.tw/silverlight/"&gt;http://learnet.npm.gov.tw/silverlight/&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;範例程式如下, 由於 IE, firefox, Safari 的事件模型不同, 所以要特別注意跨瀏覽器支援的部份, 範例程式碼測試過此三種瀏覽器:&lt;/p&gt;  &lt;p&gt;Page.xaml&lt;/p&gt;  &lt;div style="border-right: black 1px solid; border-top: black 1px solid; border-left: black 1px solid; border-bottom: black 1px solid; background-color: #ffffff"&gt;   &lt;p&gt;&amp;lt;UserControl x:Class=&amp;quot;SilverlightApplication3.Page&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xmlns=&amp;quot;&lt;a href="http://schemas.microsoft.com/client/2007" ?="?"&gt;http://schemas.microsoft.com/client/2007&amp;quot;&lt;/a&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xmlns:x=&amp;quot;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml" ?="?"&gt;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/a&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot; Background=&amp;quot;White&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;MultiScaleImage x:Name=&amp;quot;dz&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Source=&amp;quot;deepzoomtest1/info.bin&amp;quot; UseSprings=&amp;quot;False&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MouseLeftButtonDown=&amp;quot;MultiScaleImage_MouseLeftButtonDown&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MouseMove=&amp;quot;MultiScaleImage_MouseMove&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MouseLeftButtonUp=&amp;quot;MultiScaleImage_MouseLeftButtonUp&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Grid&amp;gt;       &lt;br /&gt;&amp;lt;/UserControl&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Page.xaml.cs&lt;/p&gt;  &lt;div style="border-right: black 1px solid; border-top: black 1px solid; border-left: black 1px solid; border-bottom: black 1px solid; background-color: #ffffff"&gt;   &lt;p&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;&lt;font color="#0000ff"&gt;using System.Windows.Browser;&lt;/font&gt; &lt;/p&gt;    &lt;p&gt;namespace SilverlightApplication3      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;font color="#0000ff"&gt;ScriptableType] &lt;/font&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class Page : UserControl       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Page() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;HtmlPage.RegisterScriptableObject(&amp;quot;MySilverlightObject&amp;quot;, this);        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bool dragging = false;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point dragOffset;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point currentPosition; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void MultiScaleImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dragging = true;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dragOffset = e.GetPosition(this);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; currentPosition = dz.ViewportOrigin;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void MultiScaleImage_MouseMove(object sender, MouseEventArgs e) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (dragging) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point newOrigin = new Point();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newOrigin.X = currentPosition.X -       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (((e.GetPosition(dz).X - dragOffset.X)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; / dz.ActualWidth) * dz.ViewportWidth);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newOrigin.Y = currentPosition.Y -       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (((e.GetPosition(dz).Y - dragOffset.Y)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; / dz.ActualHeight) * dz.ViewportWidth);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dz.ViewportOrigin = newOrigin;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void MultiScaleImage_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dragging = false;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;[ScriptableMember]        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void dz_MouseWheel(double x, double y, int delta) {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; double dZoomFactor = 1.25;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (delta &amp;lt; 0)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dZoomFactor = 1 / 1.25;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point pz = dz.ElementToLogicalPoint(new Point(x, y));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dz.ZoomAboutLogicalPoint(dZoomFactor, pz.X, pz.Y);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;TestPage.html&lt;/p&gt;  &lt;div style="border-right: black 1px solid; border-top: black 1px solid; border-left: black 1px solid; border-bottom: black 1px solid; background-color: #ffffff"&gt;   &lt;p&gt;&amp;lt;body &lt;font color="#0000ff"&gt;onload=&amp;quot;handleLoad()&amp;quot;&lt;/font&gt;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div id='errorLocation' style=&amp;quot;font-size: small;color: Gray;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div id=&amp;quot;silverlightControlHost&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;object &lt;font color="#0000ff"&gt;id=&amp;quot;slHost&amp;quot;&lt;/font&gt; data=&amp;quot;data:application/x-silverlight,&amp;quot; type=&amp;quot;application/x-silverlight-2-b1&amp;quot; width=&amp;quot;100%&amp;quot; height=&amp;quot;100%&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;param name=&amp;quot;source&amp;quot; value=&amp;quot;ClientBin/SilverlightApplication3.xap&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;param name=&amp;quot;onerror&amp;quot; value=&amp;quot;onSilverlightError&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;param name=&amp;quot;background&amp;quot; value=&amp;quot;white&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;a href=&amp;quot;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=108182" ?="?"&gt;&lt;font color="#000000"&gt;http://go.microsoft.com/fwlink/?LinkID=108182&amp;quot;&lt;/font&gt;&lt;/a&gt; style=&amp;quot;text-decoration: none;&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;img src=&amp;quot;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=108181" ?="?"&gt;&lt;font color="#000000"&gt;http://go.microsoft.com/fwlink/?LinkId=108181&amp;quot;&lt;/font&gt;&lt;/a&gt; alt=&amp;quot;Get Microsoft Silverlight&amp;quot; style=&amp;quot;border-style: none&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/a&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/object&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;iframe style='visibility:hidden;height:0;width:0;border:0px'&amp;gt;&amp;lt;/iframe&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; language=&amp;quot;javascript&amp;quot;&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; function handleLoad()        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; window.onmousewheel = document.onmousewheel = onMouseWheel;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (window.addEventListener)&amp;#160; &lt;font color="#ff0000"&gt;// for firefox          &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; window.addEventListener('DOMMouseScroll', onMouseWheel, false);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;function onMouseWheel(event)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(event === undefined)&amp;#160; &lt;font color="#ff0000"&gt;// for IE&lt;/font&gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; event = window.event;         &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var delta = 0;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var x = (event.clientX);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var y = (event.clientY);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var slPlugin = document.getElementById(&amp;quot;slHost&amp;quot;);&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (event.wheelDelta !== undefined) {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delta = event.wheelDelta;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; slPlugin.content.MySilverlightObject.dz_MouseWheel(x, y ,delta);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } else if (event.detail) {&amp;#160; &lt;font color="#ff0000"&gt;// for firefox&lt;/font&gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; delta = -event.detail;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; x /= 15;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; y /= 15;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; slPlugin.content.MySilverlightObject.dz_MouseWheel(x, y ,delta);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/script&amp;gt;        &lt;br /&gt;&lt;/font&gt;&amp;lt;/body&amp;gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8398560" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author></entry><entry><title>如何在 Silverlight 2 MultiScaleImage 物件拖放</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/04/15/deep-zoom-drag.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/04/15/deep-zoom-drag.aspx</id><published>2008-04-15T11:17:38Z</published><updated>2008-04-15T11:17:38Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;註: 這裡的範例程式碼是針對 Silverlight 2 Beta1, 在 beta2 中, MultiScaleImage 的 Source 的型態有些改變。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Silverlight 2 的一些範例如: Hardrock (&lt;a title="http://memorial.hardrock.com/" href="http://memorial.hardrock.com/"&gt;http://memorial.hardrock.com/&lt;/a&gt;), 故宮清明上河圖 (&lt;a title="http://learnet.npm.gov.tw/silverlight/" href="http://learnet.npm.gov.tw/silverlight/"&gt;http://learnet.npm.gov.tw/silverlight/&lt;/a&gt;) 都使用到滑鼠拖放圖片, 這是一個常用的功能, 因為常被問到, 所以把相關程式碼提供出來讓大家參考:&lt;/p&gt;  &lt;p&gt;Page.xaml&lt;/p&gt;  &lt;div style="border-right: black 1px solid; border-top: black 1px solid; border-left: black 1px solid; border-bottom: black 1px solid; background-color: #ffffdf"&gt;   &lt;p&gt;&amp;lt;UserControl x:Class=&amp;quot;SilverlightApplication3.Page&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xmlns=&amp;quot;&lt;a href="http://schemas.microsoft.com/client/2007" ?="?"&gt;http://schemas.microsoft.com/client/2007&amp;quot;&lt;/a&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xmlns:x=&amp;quot;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml" ?="?"&gt;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/a&gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot; Background=&amp;quot;White&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;MultiScaleImage x:Name=&amp;quot;dz&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Source=&amp;quot;deepzoomtest1/info.bin&amp;quot; UseSprings=&amp;quot;False&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MouseLeftButtonDown=&amp;quot;MultiScaleImage_MouseLeftButtonDown&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MouseMove=&amp;quot;MultiScaleImage_MouseMove&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MouseLeftButtonUp=&amp;quot;MultiScaleImage_MouseLeftButtonUp&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Grid&amp;gt;       &lt;br /&gt;&amp;lt;/UserControl&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Page.xaml.cs&lt;/p&gt;  &lt;div style="border-right: black 1px solid; border-top: black 1px solid; border-left: black 1px solid; border-bottom: black 1px solid; background-color: #ffffdf"&gt;   &lt;p&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;/p&gt;    &lt;p&gt;namespace SilverlightApplication3      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class Page : UserControl       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Page() {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public partial class Page : UserControl      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bool dragging = false;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point dragOffset;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point currentPosition; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void MultiScaleImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dragging = true;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dragOffset = e.GetPosition(this);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; currentPosition = dz.ViewportOrigin;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void MultiScaleImage_MouseMove(object sender, MouseEventArgs e) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (dragging) {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point newOrigin = new Point();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Point pMouse = e.GetPosition(this);&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; double ratio = dz.ViewportWidth / dz.ActualWidth;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newOrigin.X = currentPosition.X - (pMouse.X - dragOffset.X) * ratio;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newOrigin.Y = currentPosition.Y - (pMouse .Y - dragOffset.Y) * ratio;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dz.ViewportOrigin = newOrigin;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void MultiScaleImage_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dragging = false;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&lt;/p&gt; }&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8396988" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author></entry><entry><title>Silverlight 2 支援 Socket</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/wtchou/archive/2008/03/11/silverlight-2-socket.aspx" /><id>http://blogs.msdn.com/wtchou/archive/2008/03/11/silverlight-2-socket.aspx</id><published>2008-03-11T08:33:59Z</published><updated>2008-03-11T08:33:59Z</updated><content type="html">&lt;p&gt;Silverlight 2 Beta1 首次提供 Socket 的 API, 好讓 Silverlight 的程式可以用 SocketClient 連回伺服器, 使用其他或自定的通訊協定, 範例程式請參考: &lt;a title="http://weblogs.asp.net/mschwarz/archive/2008/03/07/silverlight-2-and-sockets.aspx" href="http://weblogs.asp.net/mschwarz/archive/2008/03/07/silverlight-2-and-sockets.aspx"&gt;http://weblogs.asp.net/mschwarz/archive/2008/03/07/silverlight-2-and-sockets.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8145313" width="1" height="1"&gt;</content><author><name>wtchou</name><uri>http://blogs.msdn.com/members/wtchou.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/wtchou/archive/tags/Silverlight/default.aspx" /></entry></feed>