<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEAMQH85cSp7ImA9WhRUGUQ.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842</id><updated>2012-01-31T15:59:41.129+08:00</updated><category term="Blend" /><category term="MSSQL" /><category term="Service" /><category term="Visual Studio" /><category term="Windows Mobile" /><category term="Vista" /><category term="備忘" /><category term="學習資源" /><category term="FAQ" /><category term="compact framework" /><category term="腦力激盪" /><category term="網路" /><category term="expression" /><category term="Windows" /><category term="Windwos7" /><category term="sql server" /><category term="csharp" /><category term="繪圖" /><category term="android" /><category term="blogger" /><category term="wp7" /><category term="JustForFun" /><category term="好書推薦" /><category term="FTP" /><category term=".Net framework 3.0" /><category term="Visual Basic" /><category term="performance" /><category term="VS2005" /><category term="ASP.Net" /><category term="安裝佈署" /><category term="WPF" /><category term="MDX" /><category term="ADO.Net" /><category term="Silverlight" /><title>MakeIT</title><subtitle type="html">We think, we believe then we make it</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://bauann-makeit.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>187</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Makeit" /><feedburner:info uri="makeit" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEAMQH8_cCp7ImA9WhRUGUQ.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-3887309899451828278</id><published>2012-01-31T15:59:00.003+08:00</published><updated>2012-01-31T15:59:41.148+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-31T15:59:41.148+08:00</app:edited><title>SendKeys in WPF</title><content type="html">在以往Windows Form的程式開發當中，當要送出鍵盤的相關資料時，會使用SendKeys的方式來處理，例如說要把一個字加到TextBox上這樣；用SendKeys的好處不用去處理當輸入的游標在文字中間的問題，會比像是&lt;br /&gt;
TextBox1.Text &amp;amp;= "1"&lt;br /&gt;
這樣的方式來的方便些。而到了WPF，沒有SendKeys可以用了，那麼應該怎麼辦呢？在網路上搜尋了一下，可以利用呼叫API的方式來做，可以參考一下下面&amp;nbsp;&lt;a href="http://pinvoke.net/default.aspx/user32/SendInput.html" target="_blank"&gt;SendInput&lt;/a&gt;&amp;nbsp;的說明，所有需要的東西都在裡面了。動作原理大概是下面過程&lt;br /&gt;
&lt;br /&gt;
紀錄要輸入的控制項在畫面上的位置&lt;br /&gt;
使用SendInput模擬滑鼠的動作，點擊要輸入的控制項(主要是要取得Focus)&lt;br /&gt;
使用SendInput模擬KeyDown的動作&lt;br /&gt;
使用 SendInput模擬KeyUp的動作&lt;br /&gt;
&lt;br /&gt;
大概的過程是這樣子了；而我自己的使用方式有點偷懶，直接略過模擬滑鼠的部分，直接傳控制項的參考過去 XDD&lt;br /&gt;
&lt;br /&gt;
下面是目前的程式碼，還沒詳細測試，大致就是上面列出的SendInput中的程式碼了，參考看看了；首先是宣告的部分&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #282424; color: #f3f3f3; font-family: Monaco; font-size: 12; font-weight: bold;"&gt;&lt;span style="color: #a2c4fd;"&gt;#Region&lt;/span&gt;&amp;nbsp;&lt;span style="color: #6afd51;"&gt;"Const"&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;INPUT_MOUSE&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;INPUT_KEYBOARD&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;&amp;nbsp;=&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;INPUT_HARDWARE&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;&amp;nbsp;=&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;KEYEVENTF_EXTENDEDKEY&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;KEYEVENTF_KEYUP&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;KEYEVENTF_UNICODE&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H4
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;KEYEVENTF_SCANCODE&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H8
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;XBUTTON1&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;XBUTTON2&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_MOVE&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_LEFTDOWN&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_LEFTUP&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H4
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_RIGHTDOWN&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H8
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_RIGHTUP&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H10
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_MIDDLEDOWN&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H20
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_MIDDLEUP&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H40
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_XDOWN&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H80
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_XUP&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H100
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_WHEEL&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H800
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_VIRTUALDESK&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H4000
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Const&lt;/span&gt;&amp;nbsp;MOUSEEVENTF_ABSOLUTE&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;UInt32&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&amp;amp;H8000
&lt;span style="color: #a2c4fd;"&gt;#End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Region&lt;/span&gt;
 
&lt;span style="color: #a2c4fd;"&gt;#Region&lt;/span&gt;&amp;nbsp;&lt;span style="color: #6afd51;"&gt;"Enums"&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Enum&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;InputType&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Mouse&amp;nbsp;=&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Keyboard&amp;nbsp;=&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hardware&amp;nbsp;=&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Enum&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;Flags&lt;/span&gt;()&amp;gt;&amp;nbsp;_
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Enum&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;MOUSEEVENTF&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MOVE&amp;nbsp;=&amp;nbsp;&amp;amp;H1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LEFTDOWN&amp;nbsp;=&amp;nbsp;&amp;amp;H2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LEFTUP&amp;nbsp;=&amp;nbsp;&amp;amp;H4
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RIGHTDOWN&amp;nbsp;=&amp;nbsp;&amp;amp;H8
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RIGHTUP&amp;nbsp;=&amp;nbsp;&amp;amp;H10
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MIDDLEDOWN&amp;nbsp;=&amp;nbsp;&amp;amp;H20
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MIDDLEUP&amp;nbsp;=&amp;nbsp;&amp;amp;H40
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XDOWN&amp;nbsp;=&amp;nbsp;&amp;amp;H80
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XUP&amp;nbsp;=&amp;nbsp;&amp;amp;H100
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VIRTUALDESK&amp;nbsp;=&amp;nbsp;&amp;amp;H400
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHEEL&amp;nbsp;=&amp;nbsp;&amp;amp;H800
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ABSOLUTE&amp;nbsp;=&amp;nbsp;&amp;amp;H8000
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Enum&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;Flags&lt;/span&gt;()&amp;gt;&amp;nbsp;_
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Enum&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;KEYEVENTF&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXTENDEDKEY&amp;nbsp;=&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;KEYUP&amp;nbsp;=&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[UNICODE]&amp;nbsp;=&amp;nbsp;4
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SCANCODE&amp;nbsp;=&amp;nbsp;8
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Enum&lt;/span&gt;
&lt;span style="color: #a2c4fd;"&gt;#End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Region&lt;/span&gt;
 
&lt;span style="color: #a2c4fd;"&gt;#Region&lt;/span&gt;&amp;nbsp;&lt;span style="color: #6afd51;"&gt;"Structure"&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: cyan;"&gt;LayoutKind&lt;/span&gt;.Explicit)&amp;gt;&amp;nbsp;_
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;INPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(0)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;dwType&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(4)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;mouseInput&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;MOUSEINPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(4)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;keyboardInput&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;KEYBDINPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(4)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;hardwareInput&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;HARDWAREINPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: cyan;"&gt;LayoutKind&lt;/span&gt;.Explicit)&amp;gt;&amp;nbsp;_
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;KEYBDINPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(0)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;wVk&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Short&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(2)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;wScan&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Short&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(4)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;dwFlags&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(8)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;time&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(12)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;dwExtraInfo&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;IntPtr&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: cyan;"&gt;LayoutKind&lt;/span&gt;.Explicit)&amp;gt;&amp;nbsp;_
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;HARDWAREINPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(0)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;uMsg&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(4)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;wParamL&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Short&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(6)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;wParamH&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Short&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;StructLayout&lt;/span&gt;(&lt;span style="color: cyan;"&gt;LayoutKind&lt;/span&gt;.Explicit)&amp;gt;&amp;nbsp;_
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;MOUSEINPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(0)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;dx&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(4)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;dy&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(8)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;mouseData&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(12)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;dwFlags&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(16)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;time&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;FieldOffset&lt;/span&gt;(20)&amp;gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;dwExtraInfo&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;IntPtr&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Structure&lt;/span&gt;
&lt;span style="color: #a2c4fd;"&gt;#End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Region&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;span style="color: cyan;"&gt;DllImport&lt;/span&gt;(&lt;span style="color: #6afd51;"&gt;"user32.dll"&lt;/span&gt;,&amp;nbsp;EntryPoint:=&lt;span style="color: #6afd51;"&gt;"SendInput"&lt;/span&gt;)&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Shared&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Function&lt;/span&gt;&amp;nbsp;SendInput(&lt;span style="color: #a2c4fd;"&gt;ByVal&lt;/span&gt;&amp;nbsp;cInputs&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;ByRef&lt;/span&gt;&amp;nbsp;pInputs&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;INPUT&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;ByVal&lt;/span&gt;&amp;nbsp;cbSize&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;)&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Function&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Shared&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Sub&lt;/span&gt;&amp;nbsp;DoKeyBoard(&lt;span style="color: #a2c4fd;"&gt;ByVal&lt;/span&gt;&amp;nbsp;flags&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;KEYEVENTF&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;ByVal&lt;/span&gt;&amp;nbsp;key&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Char&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;_input&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;New&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;INPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;ki&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;New&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;KEYBDINPUT&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input.dwType&amp;nbsp;=&amp;nbsp;&lt;span style="color: cyan;"&gt;InputType&lt;/span&gt;.Keyboard
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input.keyboardInput&amp;nbsp;=&amp;nbsp;ki
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input.keyboardInput.wVk&amp;nbsp;=&amp;nbsp;&lt;span style="color: cyan;"&gt;Convert&lt;/span&gt;.ToInt16(key)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input.keyboardInput.wScan&amp;nbsp;=&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input.keyboardInput.time&amp;nbsp;=&amp;nbsp;0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input.keyboardInput.dwFlags&amp;nbsp;=&amp;nbsp;flags
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input.keyboardInput.dwExtraInfo&amp;nbsp;=&amp;nbsp;&lt;span style="color: cyan;"&gt;IntPtr&lt;/span&gt;.Zero
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;cbSize&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style="color: cyan;"&gt;Marshal&lt;/span&gt;.SizeOf(&lt;span style="color: #a2c4fd;"&gt;GetType&lt;/span&gt;(&lt;span style="color: cyan;"&gt;INPUT&lt;/span&gt;))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Dim&lt;/span&gt;&amp;nbsp;result&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Integer&lt;/span&gt;&amp;nbsp;=&amp;nbsp;SendInput(1,&amp;nbsp;_input,&amp;nbsp;cbSize)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #75ffa2;"&gt;'If&amp;nbsp;result&amp;nbsp;=&amp;nbsp;0&amp;nbsp;Then&amp;nbsp;Debug.WriteLine(Marshal.GetLastWin32Error)&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_input&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Nothing&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ki&amp;nbsp;=&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Nothing&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
而外面的UerControl多加了一個Property，使用方式大約會像是這樣子&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #282424; color: #f3f3f3; font-family: Monaco; font-size: 12; font-weight: bold;"&gt;&lt;span style="color: #a2c4fd;"&gt;Public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Property&lt;/span&gt;&amp;nbsp;FoucedCtl&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;&lt;span style="color: cyan;"&gt;TextBox&lt;/span&gt;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Sub&lt;/span&gt;&amp;nbsp;Button_Click(sender&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;System.&lt;span style="color: cyan;"&gt;Object&lt;/span&gt;,&amp;nbsp;e&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;As&lt;/span&gt;&amp;nbsp;System.Windows.&lt;span style="color: cyan;"&gt;RoutedEventArgs&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;If&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Me&lt;/span&gt;.FoucedCtl&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Is&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Nothing&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Then&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Exit&amp;nbsp;Sub&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;If&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Me&lt;/span&gt;.FoucedCtl.Focus()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: cyan;"&gt;Win32Helper&lt;/span&gt;.DoKeyBoard(0,&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;CType&lt;/span&gt;(sender,&amp;nbsp;&lt;span style="color: cyan;"&gt;Button&lt;/span&gt;).Content.ToString.Chars(0))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Threading.&lt;span style="color: cyan;"&gt;Thread&lt;/span&gt;.Sleep(5)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: cyan;"&gt;Win32Helper&lt;/span&gt;.DoKeyBoard(&lt;span style="color: cyan;"&gt;Win32Helper&lt;/span&gt;.&lt;span style="color: cyan;"&gt;KEYEVENTF&lt;/span&gt;.KEYUP,&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;CType&lt;/span&gt;(sender,&amp;nbsp;&lt;span style="color: cyan;"&gt;Button&lt;/span&gt;).Content.ToString.Chars(0))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;End&lt;/span&gt;&amp;nbsp;&lt;span style="color: #a2c4fd;"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-3887309899451828278?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8Off9CU2R8FnUkdri9rKpHmkTXw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Off9CU2R8FnUkdri9rKpHmkTXw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8Off9CU2R8FnUkdri9rKpHmkTXw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8Off9CU2R8FnUkdri9rKpHmkTXw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/5xNiwL0c5q0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/3887309899451828278/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=3887309899451828278" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/3887309899451828278?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/3887309899451828278?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/5xNiwL0c5q0/sendkeys-in-wpf.html" title="SendKeys in WPF" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2012/01/sendkeys-in-wpf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcAQXo5fip7ImA9WhRWEEg.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-1050380738829354061</id><published>2011-12-28T14:00:00.000+08:00</published><updated>2011-12-28T14:00:40.426+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T14:00:40.426+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="compact framework" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>在Windows CE中，如何修改IP設定之後立即套用新的設定呢？</title><content type="html">在Windows CE中，通常我們會將網路卡設定一個固定IP，用來與其他的設備做溝通、通訊，那麼設定了IP之後，跟著就會有IP變更的需求了，那麼怎麼去變更IP呢？&lt;br /&gt;
&lt;br /&gt;
從登錄檔中，可以看到IP的相關設定會在這個位置當中&lt;br /&gt;
&lt;b&gt;&lt;i&gt;HKEY_LOCAL_MACHINE\Comm\PCI\網卡名稱\Parms\TCPIP&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
其中會看到Ipaddress、defaultGetway、SubnetMask這三個就是對應到IP的設定了，要變更的地方也就是這三個了，而在compact framework 2.0對登錄檔的操作也有提供了類別可以使用，可以參考MSDN上的&lt;a href="http://msdn.microsoft.com/zh-tw/library/5a5t63w8(VS.80).aspx"&gt;相關類別使用說明&lt;/a&gt;，下面這邊是利用p/Invoke的方式來做&lt;br /&gt;
&lt;br /&gt;
p/Inove的宣告&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #d2cd86;"&gt;    &amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; EntryPoint&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"RegDeleteKeyW"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; RegDeleteKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; hKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpSubKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; EntryPoint&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"RegCreateKeyExW"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; RegCreateKeyEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; hkey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpSubKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                                   &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; Reserved &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpClass &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                                   &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwOptions &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; samDesired &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                                   &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpSecurityAttributes &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByRef&lt;/span&gt; phkResult &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                                   &lt;span style="color: #e66170; font-weight: bold;"&gt;ByRef&lt;/span&gt; lpdwDisposition &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; RegSetValueEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; hKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpValueName &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
        &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; Reserved &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwType &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpData &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; cbData &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; RegCloseKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; hKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; EntryPoint&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"RegOpenKeyExW"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; RegOpenKeyEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; hKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpSubKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwOptions &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
        &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; samDesired &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByRef&lt;/span&gt; phkResult &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; RegFlushKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; hKey &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
呼叫的時候大概會是這個樣子&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Dim&lt;/span&gt; buf&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; ohKey&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; iTmp &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;Dim&lt;/span&gt; bolResult &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Boolean&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #0f4d75;"&gt;False&lt;/span&gt;
''R86101是我的網路卡名稱
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegCreateKeyEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;RegRoots&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;HKEY_LOCAL_MACHINE&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"Comm\PCI\R86101\Parms\TCPIP"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; vbNullString&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; ohKey&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; iTmp&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegSetValueEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"Ipaddress"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; RegValueType&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;REG_MULTI_SZ&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; IpAddress&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;30&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegFlushKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegCloseKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegCreateKeyEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;RegRoots&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;HKEY_LOCAL_MACHINE&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"Comm\PCI\R86101\Parms\TCPIP"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; vbNullString&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; ohKey&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; iTmp&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegSetValueEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"DefaultGateway"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; RegValueType&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;REG_MULTI_SZ&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; Getway&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;30&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegFlushKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegCloseKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegCreateKeyEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;RegRoots&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;HKEY_LOCAL_MACHINE&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"Comm\PCI\R86101\Parms\TCPIP"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; vbNullString&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; ohKey&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; iTmp&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegSetValueEx&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"SubnetMask"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; RegValueType&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;REG_MULTI_SZ&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; SubMask&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;30&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegFlushKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
buf &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; RegCloseKey&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;ohKey&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
這樣子就完成了IP設定的修改了，進入網卡設定的介面中，也可看到IP有變為新的設定了；這個時候問題來了，怎麼系統沒有套用新的設定呢？&lt;br /&gt;
在初期還沒有找到解決方式的時候，是讓系統重新開機，重新開機之後就會使用新的IP設定了，但是重新開機會花上不少的時間，而且明明在CE的介面上，變更好IP之後按下『OK』的按鈕明明就是會立刻更新IP位置的，找了相關資料後，原來是還要對系統發出一個更新通知，這樣系統才會進行IP位置的更新，這時候又得使用p/Invoke來處理了，最終的目的是要利用DeviceIoControl來對系統發出Rebind adepater的通知&lt;br /&gt;
&lt;br /&gt;
const的宣告&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Const&lt;/span&gt; OPEN_EXISTING &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; UInt32 &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00a800;"&gt;3&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Const&lt;/span&gt; INVALID_HANDLE_VALUE &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; Int32 &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #00a800;"&gt;1&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Const&lt;/span&gt; IOCTL_NDIS_REBIND_ADAPTER &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; UInt32 &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00a800;"&gt;&amp;amp;H17002E&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Const&lt;/span&gt; FILE_ATTRIBUTE_NORMAL &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; UInt32 &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00a800;"&gt;&amp;amp;H80&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
API的部分&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #d2cd86;"&gt;    &amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"coredll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; EntryPoint&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CreateFileW"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; CreateFile&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpFileName &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwDesiredAccess &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                               &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwShareMode &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpSecurityAttributes &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                               &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwCreationDisposition &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwFlagsAndAttributes &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                               &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; hTemplateFile &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; setlasterror&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #0f4d75;"&gt;True&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; DeviceIoControl&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; m_handle &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; dwIoControlCode &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                                    &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; npInBuffer &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; nInBufferSize &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                                    &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpOutBuffer &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; nOutBufferSize &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                                    &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpBytesReturned &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; lpOverlapped &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Boolean&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"CoreDll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
   &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; GetLastError&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;DllImport&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"coredll.dll"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; CloseHandle&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;ByVal&lt;/span&gt; m_handle &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; IntPtr&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
使用的時候會像是下面這樣&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Dim&lt;/span&gt; _NDISAdapterName &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; mMyInfo&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;NDISAdapterName
&lt;span style="color: #e66170; font-weight: bold;"&gt;Dim&lt;/span&gt; m_handle &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Integer&lt;/span&gt;
      
m_handle &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; CreateFile&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"NDS0:"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Nothing&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; OPEN_EXISTING&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; FILE_ATTRIBUTE_NORMAL&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; INVALID_HANDLE_VALUE&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;

&lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Not&lt;/span&gt; DeviceIoControl&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;m_handle&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; IOCTL_NDIS_REBIND_ADAPTER&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; _NDISAdapterName&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;_&lt;/span&gt;
                              _NDISAdapterName&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Length &lt;span style="color: #d2cd86;"&gt;*&lt;/span&gt; &lt;span style="color: #00a800;"&gt;2&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;+&lt;/span&gt; &lt;span style="color: #00a800;"&gt;2&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Nothing&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Then&lt;/span&gt;
    &lt;span style="color: #9999a9;"&gt;''intResult = GetLastError()&lt;/span&gt;
    bolResult &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #0f4d75;"&gt;False&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;Else&lt;/span&gt;
    bolResult &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #0f4d75;"&gt;True&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt;

CloseHandle&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;m_handle&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
這樣就可以馬上套用新的IP設定了，這邊做個備忘也給各位參考了。&lt;br /&gt;
&lt;br /&gt;
Note：程式碼中錯誤處理的部分沒有做很仔細的錯誤處理，還請自行加上嚕&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-1050380738829354061?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/noX0RbbvvOpgCdh5XNkij_b-Nf0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/noX0RbbvvOpgCdh5XNkij_b-Nf0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/noX0RbbvvOpgCdh5XNkij_b-Nf0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/noX0RbbvvOpgCdh5XNkij_b-Nf0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/ged2lJAyNaY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/1050380738829354061/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=1050380738829354061" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1050380738829354061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1050380738829354061?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/ged2lJAyNaY/windows-ceip.html" title="在Windows CE中，如何修改IP設定之後立即套用新的設定呢？" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/12/windows-ceip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQCSHczcSp7ImA9WhRXGEQ.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-5383927790769745221</id><published>2011-12-26T17:56:00.000+08:00</published><updated>2011-12-26T17:56:09.989+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T17:56:09.989+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Basic" /><title>關閉接收中的UdpClient</title><content type="html">在撰寫Udp相關的應用時，呼叫Receive方法時會等候到接收了資料為止；因為這個特性，通常會使用另外一個Thread來處理Udp的動作，例如說一個接聽廣播封包的thread，專門對特定的port number等候廣播訊息，而接聽到指令之後進行特定動作，程式碼可能長的像是下面這樣
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Private&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Sub&lt;/span&gt; WaitForCommand&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
       
        &lt;span style="color: #e66170; font-weight: bold;"&gt;Do&lt;/span&gt;
            &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt; _bolStop &lt;span style="color: #e66170; font-weight: bold;"&gt;Then&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Exit&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Do&lt;/span&gt;

            &lt;span style="color: #e66170; font-weight: bold;"&gt;Try&lt;/span&gt;
                btyRecv &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; _client&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Receive&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;_anyEndpoint&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
                &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt; btyRecv&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Length &lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #00a800;"&gt;0&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Then&lt;/span&gt;
                    &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt; ByteToStr&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;btyRecv&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"command"&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Then&lt;/span&gt;
                        &lt;span style="color: #9999a9;"&gt;''do something&lt;/span&gt;
                    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt;
                &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt;
            &lt;span style="color: #e66170; font-weight: bold;"&gt;Catch&lt;/span&gt; ex &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; Exception  
                ''錯誤處理
            &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Try&lt;/span&gt;

            Threading&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Thread&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Sleep&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00a800;"&gt;100&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
        &lt;span style="color: #e66170; font-weight: bold;"&gt;Loop&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
當執行到_client.Receive之後，就會在這一行指令等候資料接收，那麼在這個狀況之下，如果應用程式必須要關閉的話，要怎麼處理呢？Thread.Abort() ? 這個時候如果呼叫Thread的Abort方法還是無法停止Thread的運作 Orz&lt;br /&gt;
&lt;br /&gt;
那麼應該怎麼做呢？搜尋了一下之後發現方法也是出乎意料的簡單，直接呼叫UdpClient的Close方法就可以了，那麼就可以用類似下面的方式來停止等候接收&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Sub&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;[&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Stop&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;]&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
        _bolStop &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #0f4d75;"&gt;True&lt;/span&gt;
        &lt;span style="color: #e66170; font-weight: bold;"&gt;Try&lt;/span&gt;
            &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt; _client IsNot &lt;span style="color: #e66170; font-weight: bold;"&gt;Nothing&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Then&lt;/span&gt;
                _client&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Close&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
            &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;If&lt;/span&gt;
        &lt;span style="color: #e66170; font-weight: bold;"&gt;Catch&lt;/span&gt; ex &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; Exception
            ''錯誤處理
        &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Try&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Sub&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
其中要特別留意Exception的處理，因為呼叫了Close，在接受資料這邊是會出現錯誤狀況的；給大家參考看看了 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-5383927790769745221?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/btkBfZxeFUZzY-Sa1yNCiL-oozw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/btkBfZxeFUZzY-Sa1yNCiL-oozw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/btkBfZxeFUZzY-Sa1yNCiL-oozw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/btkBfZxeFUZzY-Sa1yNCiL-oozw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/znb67uWFRTs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/5383927790769745221/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=5383927790769745221" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5383927790769745221?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5383927790769745221?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/znb67uWFRTs/udpclient.html" title="關閉接收中的UdpClient" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/12/udpclient.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEBQX4_eSp7ImA9WhRWEE4.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-481100957615209719</id><published>2011-12-09T15:05:00.001+08:00</published><updated>2011-12-28T10:17:30.041+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T10:17:30.041+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>你知道WP7的模擬器也有中文輸入嗎?</title><content type="html">這篇我應該是Lag很大，不過由於有實機可以測試就一直沒去看模擬器的設定 XD&lt;br /&gt;
今天看了一下，模擬器中也有中文輸入的設定可以使用，下面就直接用幾張圖來看吧~&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-zdRZnK-gOdk/TuGzix3UTUI/AAAAAAAAAoE/ubGcdKkBaN4/s320/tmp1.png" rel="lightbox"&gt;
&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-zdRZnK-gOdk/TuGzix3UTUI/AAAAAAAAAoE/ubGcdKkBaN4/s320/tmp1.png" width="192" /&gt;&lt;/a&gt;
&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-MxL_vmqVKuI/TuGzjrWj98I/AAAAAAAAAoI/OoFM2pDljaA/s320/tmp3.png" width="192" /&gt;
&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-HskJBKZY6R0/TuGzjxkwaHI/AAAAAAAAAoQ/8ycDXFly5tU/s320/tmp4.png" width="192" /&gt;&lt;br /&gt;
&lt;br /&gt;
簡短的分享一下我 Lag很大的資訊 Orz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-481100957615209719?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SvCH2niJndRZ-XNCa4ApI8SMmK4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SvCH2niJndRZ-XNCa4ApI8SMmK4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SvCH2niJndRZ-XNCa4ApI8SMmK4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SvCH2niJndRZ-XNCa4ApI8SMmK4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/z64TkT-wZeo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/481100957615209719/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=481100957615209719" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/481100957615209719?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/481100957615209719?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/z64TkT-wZeo/wp7.html" title="你知道WP7的模擬器也有中文輸入嗎?" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-zdRZnK-gOdk/TuGzix3UTUI/AAAAAAAAAoE/ubGcdKkBaN4/s72-c/tmp1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/12/wp7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AMRXY6cCp7ImA9WhRQE0w.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-3797396272204989327</id><published>2011-12-08T11:17:00.001+08:00</published><updated>2011-12-08T11:43:04.818+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-08T11:43:04.818+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>自訂ValueConverter (值轉換器)</title><content type="html">在Silverlight中，Binding(資料繫結)是一個很強大而且方便的功能；利用Binging可以將元素的屬性跟其他的元素屬性作綁定，或是綁定到我們自訂定義的類別。詳細的下次再來談，這次先來看看ValueConverter；轉換器所扮演的角色是做為一個中介，例如說我們想要將一個Checkbox的Visibility綁定到自訂的類別屬性上面去，那麼應該要怎麼做呢？下面就來看看這個部分&lt;br /&gt;
&lt;br /&gt;
假設現在有一個類別叫做clsImageItem，裡面定義了一些屬性，例如
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public uint ImageWidth { get; set; }
        public uint ImageHeight { get; set; }
        public int ImageIndex { get; set; }
        public bool IsEditMode 
        { 
            get
            {
                return _IsEditMode;
            }
            set
            {
                _IsEditMode = value;
                NotifyPropertyChanged("IsEditMode");
            } 
        }&lt;/pre&gt;
&lt;br /&gt;
而在介面的設計上，放了一個StackPanel，StackPnael中放置了一個CheckBox以及Image；希望達成的效果是在一般的情形下，CheckBox是不可見的，而進入『編輯模式』的時候，就將CheckBox給顯示出來，介面的XAML大概會像是這樣&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #282424; color: #f3f3f3; font-family: Monaco; font-size: 12; font-weight: bold;"&gt;&lt;span style="color: #6afd51;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a2c4fd;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;Orientation&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"Horizontal"&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;d&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;:&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;DesignWidth&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"290"&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #6afd51;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: #a2c4fd;"&gt;CheckBox&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;x&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;:&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;Name&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"chkMark"&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;VerticalAlignment&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"Top"&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;Width&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"55"&lt;/span&gt;
       &lt;span style="color: #fdf8b9;"&gt;Visibility&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;="{&lt;/span&gt;&lt;span style="color: #df3e39;"&gt;Binding&lt;/span&gt;&lt;span style="color: #e63c3c;"&gt;&amp;nbsp;IsEditMode&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;,&lt;/span&gt;&lt;span style="color: #e63c3c;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #282424; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; font-family: Monaco; font-size: 12px; font-weight: bold;"&gt;&lt;span style="color: #e63c3c;"&gt;              Converter&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;={&lt;/span&gt;&lt;span style="color: #df3e39;"&gt;StaticResource&lt;/span&gt;&lt;span style="color: #e63c3c;"&gt;&amp;nbsp;VisibleConverter&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;}}&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #f3f3f3;"&gt;
&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: #a2c4fd;"&gt;Image&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;Width&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"90"&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;Source&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;="{&lt;/span&gt;&lt;span style="color: #df3e39;"&gt;Binding&lt;/span&gt;&lt;span style="color: #e63c3c;"&gt;&amp;nbsp;TumbUrl&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;}&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #f3f3f3;"&gt;&amp;nbsp;
        &lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;Stretch&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"UniformToFill"&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;d&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;:&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;LayoutOverrides&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"Width"&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;
&lt;span style="color: #6afd51;"&gt;&lt;span style="color: #a2c4fd;"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
在上面的XAML就可以看到在CheckBox的Visibility屬性直接Binding到了IsEditMode的屬性，並且賦予了一個自訂的Converter，這個Converter也是一個自訂的類別，主要是處理邏輯，比如說當IsEditMode == true的時候，要吐甚麼東西給CheckBox的Visibility屬性，程式碼大概會像是這樣
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;public class clsVisibleConverter : IValueConverter
    {

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if ((bool)value)
                return Visibility.Visible;
            else
                return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }&lt;/pre&gt;
另外由於在XAML中利用的StaticResource去綁定，所以在頁面的資源中要再加入資源的設定，像是下面這樣
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: #282424; color: #f3f3f3; font-family: Monaco; font-size: 12; font-weight: bold;"&gt;&lt;span style="color: #6afd51;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a2c4fd;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #6afd51;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a2c4fd;"&gt;myConverter&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;:&lt;/span&gt;&lt;span style="color: #a2c4fd;"&gt;clsVisibleConverter&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;&amp;nbsp;x&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;:&lt;/span&gt;&lt;span style="color: #fdf8b9;"&gt;Key&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;=&lt;/span&gt;&lt;span style="color: #fcb581;"&gt;"VisibleConverter"&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;
&lt;span style="color: #6afd51;"&gt;&lt;span style="color: #a2c4fd;"&gt;UserControl.Resources&lt;/span&gt;&lt;span style="color: #6afd51;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
這樣就可以達到想要的效果，在一般情形下畫面會像是左側的樣子，進入了編輯模式就會像是右邊圖片顯示出來的效果了&lt;br /&gt;
&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-iuB2yq2cIyA/TuAxTbS8w8I/AAAAAAAAAn0/-NgX1ptyb4A/s320/tmp1.png" width="192" /&gt;
&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-mPWGNIY55lw/TuAxaYFJ4ZI/AAAAAAAAAn8/x8xmSfcepgw/s320/tmp2.png" width="192" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-3797396272204989327?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RAQLSXVV3C-bNW2CpcuU5I3uc70/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RAQLSXVV3C-bNW2CpcuU5I3uc70/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RAQLSXVV3C-bNW2CpcuU5I3uc70/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RAQLSXVV3C-bNW2CpcuU5I3uc70/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/Yklr3YYGeew" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/3797396272204989327/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=3797396272204989327" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/3797396272204989327?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/3797396272204989327?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/Yklr3YYGeew/valueconverter.html" title="自訂ValueConverter (值轉換器)" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-iuB2yq2cIyA/TuAxTbS8w8I/AAAAAAAAAn0/-NgX1ptyb4A/s72-c/tmp1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/12/valueconverter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcCRXg6eip7ImA9WhRWEEk.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-5747330761266697008</id><published>2011-11-29T21:48:00.001+08:00</published><updated>2011-12-28T12:21:04.612+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T12:21:04.612+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Service" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Cross-domain calls for Silverlight apps on self-hosted service</title><content type="html">最近開始將一些新的App改用WPF來實作，而在撰寫的過程中也一起試了一下Silverlight，畢竟如果用SL可以搞定的話，Web部屬的方便性還是要比Client-Server一台一台去安裝要來的方便很多的。&lt;br /&gt;
而在測試Silverlight的過程中，想起在之前就有看過一些安全性的規定，在跨網域(cross-domain)的狀況下，Silverlight是會被限制存取的；而現在大部分的App後面都帶著一隻Windows Service，並且裝載了WCF Service提供呼叫，所以就優先來測試一下這個部分了。&lt;br /&gt;
&lt;br /&gt;
在進入今天的正題之前，先來看一下在一般的情形下(這裡的一般指的是裝載在IIS上的Service或是網站資源等狀況)，Silverlight apps如果需要跨網域去存取資源的話要怎麼做呢？
首先先說一下跨網域，跨網域的意思是什麼呢？比如說Silverlight裝載的位置是http://www.myweb.com/myApp，而開始執行App之後，假設App需要去呼叫位於http://www.othersite.com/xxxx.asmx所提供的Web Service，那麼這個時候的動作就是cross-domain了，那怎麼去處理這個問題呢？首先可以參考一下這篇資料&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/zh-tw/library/cc197955(VS.95).aspx"&gt;讓服務可跨網域界限使用&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
在上面這篇文章可以看到有兩種方式可以處理，加入『clientaccesspolicy.xml』或是『crossdomain.xml』都可以，首先要特別注意的是&lt;b&gt;不論使用哪個檔案，都必須放置在服務的提供端，而&lt;span class="Apple-style-span" style="color: red;"&gt;不是&lt;/span&gt;放在Silverlight app這邊&lt;/b&gt;，所以如果提供服務的這端如果不是你自己可以控制的，那麼就要聯絡服務端，確認是不是可以開放呼叫的權限，要不就是要另外自行撰寫另外的Service來做中介，一邊向原始來源取得資料，另一邊提供給Silverlight app使用了。
這邊簡單的看一下clientaccesspolicy.xml的內容，檔案內容會長的像是下面這樣
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;access&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;policy&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;cross&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;domain&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;access&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;policy&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;allow&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;from http&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;request&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;headers&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"SOAPAction"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;domain uri&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"*"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;domain&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;allow&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;from&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;grant&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;to&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;resource include&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;subpaths&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"true"&lt;/span&gt; path&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"/"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;resource&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;grant&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;to&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;policy&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;cross&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;domain&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;access&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;access&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;policy&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;code&gt;&lt;access-policy&gt;
&lt;/access-policy&gt;&lt;access-policy&gt;
  &lt;cross-domain-access&gt;
    &lt;policy&gt;
      &lt;allow-from http-request-headers="SOAPAction"&gt;
        &lt;domain uri="*"&gt;
      &lt;/domain&gt;&lt;/allow-from&gt;
      &lt;grant-to&gt;
        &lt;resource include-subpaths="true" path="/"&gt;
      &lt;/resource&gt;&lt;/grant-to&gt;
    &lt;/policy&gt;
  &lt;/cross-domain-access&gt;
&lt;/access-policy&gt;&lt;/code&gt;
內容還滿容易理解的，在allow-form http-request-headers="SOAPAction"這個是表示允許SOAP的操作要求，而接下來的domain uri="*"在這邊是指允許所有地方連線過來取得資源的要求，而要限定只允許某個Uri的話就會是設定成像domain uri="http://www.othersite.com"這樣的設定，詳細的說明可以參考一下上面提到的網頁內容。&lt;br /&gt;
檔案準備好了之後，是要擺放在服務端的根目錄中；以上面提到的例子來說，服務是位於http://www.othersite.com/xxxx.asmx，那麼檔案就必須在http://www.othersite.com/clientaccesspolicy.xml，如果位置錯誤的話，那麼Silverlight app呼叫的時候也是會跟著出現cross-domain的錯誤的，這個要特別注意一下。&lt;br /&gt;
&lt;br /&gt;
好，那麼接下來就進入正題了，在Self-hosted web service(自我裝載的web服務)的情形要怎麼處理這個問題；那麼也許你心中的第一個想法跟我是一樣的，『不是就是把上面的檔案給放到網站的根目錄就行了』，結果我就這麼給他用下去，結果就..殘念，這個想法是行不通的，為什麼？&lt;br /&gt;
以我的應用情境來說，我是建立了一個Windows Service，在這個Windows Service中利用&lt;a href="http://msdn.microsoft.com/zh-tw/library/system.servicemodel.servicehost.aspx"&gt;ServiceHost&lt;/a&gt;類別提供的功能，來裝載進一個Web Service給其他的用戶端呼叫使用，而通常這樣的狀況下，會定義出一個服務的名稱(Uri)以及使用的連接埠號碼，例如說http://192.168.1.1:1234/myService這樣的服務位置，看過上面的說明，很直覺的就想要把設定檔案放到http://192.168.1.1/clientaccesspolicy.xml這個位置，但是由於服務並非裝載在IIS上，因此Silverlight app發出要求的時候是會到http://192.168.1.1:1234/clientaccesspolicy.xml這個地方來確認是不是有相關的存取權限的，因為找不到檔案，所以Silverlight也無法順利取得資源。那麼解決方式也就出來了，就是要想辦法搞出http://192.168.1.1:1234/clientaccesspolicy.xml這個東西出來，來讓Silverlight app可以順利的取得存取的權限，那就搞定了，那麼接下來就是要修改一下Service這邊的程式碼了。&lt;br /&gt;
&lt;br /&gt;
首先，下面先列出參考來源，我也是依照下面這些資源的方式下去修改程式碼、測試的
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://forums.silverlight.net/t/52338.aspx/1/10"&gt;Silverlight WCF crossdomain Issue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/carlosfigueira/archive/2008/03/07/enabling-cross-domain-calls-for-silverlight-apps-on-self-hosted-web-services.aspx"&gt;Enabling cross-domain calls for Silverlight apps on self-hosted web services(重要)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
接下來看一下要修改的部分，首先在Widnwos Service的架構中，通常會有下面這些檔案(以Visual Basic為例,檔案名稱為示範用途不會一致)
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;myWindwosService.vb&lt;/li&gt;
這是Widnwos Service主要程式碼的檔案
&lt;li&gt;ImyWebService.vb&lt;/li&gt;
這個檔案是定義服務提供的方法、資料型別/內容的介面(interface)檔案
&lt;li&gt;myWebServiceHost.vb&lt;/li&gt;
這個檔案是實作介面的類別，介面的細節都會在這個程式碼中加以實作
&lt;/ul&gt;
接下來，由於要實作產生cross-domain時的xml檔案動作，先新增一個介面(interface)檔案，這邊名稱就取做IPolicyRetriever.vb，內容會像是下面這樣&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Imports&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;System&lt;/span&gt;&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;IO
&lt;span style="color: #e66170; font-weight: bold;"&gt;Imports&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;System&lt;/span&gt;&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;ServiceModel
&lt;span style="color: #e66170; font-weight: bold;"&gt;Imports&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;System&lt;/span&gt;&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;ServiceModel&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Web

&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;servicemodel&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;servicecontract&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Interface&lt;/span&gt; IPolicyRetriever
    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;operationcontract&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; webget&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;uritemplate&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"/clientaccesspolicy.xml"&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; GetSilverlightPolicy&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; Stream
&lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Interface&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
很簡單的一個檔案；其中這個GetSilverlightPolicy的方法就是要實作當Silverlight app對http://192.168.1.1:1234/clientaccesspolicy.xml發出要求的時候，需要處理的動作了。接下來在myWebServiceHost.vb這個原本實作Web Service提拱的功能的檔案中，再實作一個剛剛定義出來的介面(IPolicyRetriever)，實作的程式碼節錄出來大致會像是下面這邊&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Class&lt;/span&gt; AcsServiceHost
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Implements&lt;/span&gt; ImyWebService
    &lt;span style="color: #e66170; font-weight: bold;"&gt;Implements&lt;/span&gt; IPolicyRetriever

    &lt;span style="color: #e66170; font-weight: bold;"&gt;Public&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt; GetSilverlightPolicy&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;System&lt;/span&gt;&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;IO&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Stream &lt;span style="color: #e66170; font-weight: bold;"&gt;Implements&lt;/span&gt; IPolicyRetriever&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;GetSilverlightPolicy
        ServiceModel&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Web&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;WebOperationContext&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Current&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;OutgoingResponse&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;ContentType &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"application/xml"&lt;/span&gt;
        &lt;span style="color: #e66170; font-weight: bold;"&gt;Return&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;New&lt;/span&gt; IO&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;MemoryStream&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;Encoding&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;UTF8&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;GetBytes&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;PolicyXML&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
    &lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Function&lt;/span&gt;

    &lt;span style="color: #e66170; font-weight: bold;"&gt;Private&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Const&lt;/span&gt; PolicyXML &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;String&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;
        &lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
        &lt;span style="color: #00c4c4;"&gt;"&lt;access-policy&gt;"&lt;/access-policy&gt;&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
            &lt;span style="color: #00c4c4;"&gt;"&lt;cross-domain-access&gt;"&lt;/cross-domain-access&gt;&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                &lt;span style="color: #00c4c4;"&gt;"&lt;policy&gt;"&lt;/policy&gt;&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                  &lt;span style="color: #00c4c4;"&gt;"&lt;allow-from "="" 196);="" 196,="" color:="" http-request-headers="&amp;lt;/span&amp;gt;&amp;lt;span style=" rgb(0,=""&gt;" *="&lt;/allow-from&gt;&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"&amp;gt;"&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                      &lt;span style="color: #00c4c4;"&gt;"&lt;domain "="" 196);="" 196,="" color:="" rgb(0,="" uri="&amp;lt;/span&amp;gt;&amp;lt;span style="&gt;" *="&lt;/domain&gt;&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"&amp;gt;"&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                  &lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                  &lt;span style="color: #00c4c4;"&gt;"&lt;grant-to&gt;"&lt;/grant-to&gt;&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                      &lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                  &lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
                &lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
            &lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;&amp;amp;&lt;/span&gt;
        &lt;span style="color: #00c4c4;"&gt;""&lt;/span&gt;
&lt;span style="color: #e66170; font-weight: bold;"&gt;End&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;Class&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
這邊我是有點偷懶，直接宣告了一個字串，裡面就是xml檔案內容，存取權限的部分也沒有做任何的限制，這個部分可以依照實際的需求再去調整。&lt;br /&gt;
實作完介面的方法之後，接下來就是要設定一下ServiceHost的部分了；在myWindowsService.vb這個檔案中，應該會看到原本設定ServiceHost的程式碼區域，以我的使用情況來說，會像是下面這樣
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; color: #d1d1d1;"&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Dim&lt;/span&gt; basic &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;New&lt;/span&gt; BasicHttpBinding&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
        basic&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;MaxBufferSize &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00a800;"&gt;8192000&lt;/span&gt;
        basic&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;MaxBufferPoolSize &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00a800;"&gt;8192000&lt;/span&gt;
        basic&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;MaxReceivedMessageSize &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #00a800;"&gt;8192000&lt;/span&gt;
        basic&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;MessageEncoding &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; WSMessageEncoding&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Text&lt;/span&gt;

        Host &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;New&lt;/span&gt; ServiceHost&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;GetType&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;AcsServiceHost&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;New&lt;/span&gt; Uri&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;"http://192.168.1.1:1234/myWindowsService"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
        Host&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;AddServiceEndpoint&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;GetType&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;IAcsService&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; basic&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"http://192.168.1.1:1234/myWindowsService"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;

        Host&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;AddServiceEndpoint&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;GetType&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;IPolicyRetriever&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;New&lt;/span&gt; WebHttpBinding&lt;span style="color: #d2cd86;"&gt;,&lt;/span&gt; &lt;span style="color: #00c4c4;"&gt;"http://192.168.1.1:1234"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;Behaviors&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Add&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;New&lt;/span&gt; Description&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;WebHttpBehavior&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;
        &lt;span style="color: #e66170; font-weight: bold;"&gt;Dim&lt;/span&gt; smb &lt;span style="color: #e66170; font-weight: bold;"&gt;As&lt;/span&gt; Description&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;ServiceMetadataBehavior &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #e66170; font-weight: bold;"&gt;New&lt;/span&gt; Description&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;ServiceMetadataBehavior
        smb&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;HttpGetEnabled &lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt; &lt;span style="color: #0f4d75;"&gt;True&lt;/span&gt;
        Host&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Description&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Behaviors&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;Add&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;smb&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;

        Host&lt;span style="color: #00a800;"&gt;.&lt;/span&gt;&lt;span style="color: #e66170; font-weight: bold;"&gt;Open&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;(&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
其中可以看到對於Host(也就是ServiceHost類別的執行個體)加入了兩個Endpoint，第一個是原先使用中的，是屬於basicHttpbinding的類型，而第二個Endpoint是WebHttpBinding，第二個加入的這個主要就是當要求cross-domain需要的xml檔案時，要連接到的網址用的；而往下一點的程式碼也可以看到，必須要把httpGetEnable給設定為True才可以正常動作喔。&lt;br /&gt;
這樣就完成了整個動作，如果想要測試看看是不是能順利的讓Silverlight app呼叫的話，在直接測試app之前，可以先用IE連線到http://192.168.1.1:1234/clientaccesspolicy.xml來看看是不是有正常的產生出xml資料，有的話Silverlight app就可以正常運作了。&lt;br /&gt;
那麼就趕緊動手測試看看吧~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-5747330761266697008?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n4idKYZ8aL2I3q5ziQQ2mDrgEJI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n4idKYZ8aL2I3q5ziQQ2mDrgEJI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n4idKYZ8aL2I3q5ziQQ2mDrgEJI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n4idKYZ8aL2I3q5ziQQ2mDrgEJI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/7fyvM_Fpwjo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/5747330761266697008/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=5747330761266697008" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5747330761266697008?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5747330761266697008?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/7fyvM_Fpwjo/cross-domain-calls-for-silverlight-apps.html" title="Cross-domain calls for Silverlight apps on self-hosted service" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/11/cross-domain-calls-for-silverlight-apps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YDRnY7cCp7ImA9WhdREUQ.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-7446884667110802154</id><published>2011-08-01T19:46:00.000+08:00</published><updated>2011-08-01T19:46:17.808+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-01T19:46:17.808+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android - 安裝Android SDK後，無法正確啟動模擬器問題</title><content type="html">在開發Android時，在安裝開發環境之後，還必須要安裝&lt;a href=http://developer.android.com/sdk/index.html&gt;Android SDK&lt;/a&gt;，而要測試我們開發的應用程式時，模擬器是一個不可或缺的工具，但是安裝好SDK之後，卻老是得到下面這樣的錯誤訊息&lt;br /&gt;
&lt;p&gt;&lt;b&gt;Invalid command-line parameter when running the Android emulator&lt;/b&gt;&lt;/p&gt;這是怎麼一回事，連最簡單的Hello World都Run不起來..經過搜尋之後，在&lt;a href=http://www.wohill.com/invalid-command-line-parameter-when-running-the-android-emulator/&gt;這篇&lt;/a&gt;找到了解答；原來依照預設，SDK會安裝在像是下面路徑的位置&lt;br /&gt;
&lt;code&gt;C:\Program Files\Android\android-sdk&lt;/code&gt;&lt;br /&gt;
而啟動模擬器時，在解析Program files中的空白字元時會發生問題，因此沒有辦法正常啟動模擬器；那麼知道問題之後，依照上面參考來源中的方式，修改一下SDK的路徑設定就可以啟動模擬器了。呼..總算是看到Hello world了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-7446884667110802154?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Mkc4l1j6R8BOR8Kea2th-96sam0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mkc4l1j6R8BOR8Kea2th-96sam0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Mkc4l1j6R8BOR8Kea2th-96sam0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mkc4l1j6R8BOR8Kea2th-96sam0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/IsTdqO3YURg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/7446884667110802154/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=7446884667110802154" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/7446884667110802154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/7446884667110802154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/IsTdqO3YURg/android-android-sdk.html" title="Android - 安裝Android SDK後，無法正確啟動模擬器問題" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/08/android-android-sdk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4BRXY6eyp7ImA9WhZVGUU.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-2611942405419261538</id><published>2011-06-02T10:15:00.000+08:00</published><updated>2011-06-02T10:15:54.813+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T10:15:54.813+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>A quick look at Windows 8</title><content type="html">這篇是在&lt;a href=http://www.plurk.com/p/chaatz&gt;Plurk上面看到&lt;/a&gt;的相關訊息，有興趣的朋友可以前往觀看一下喔&lt;a href=http://channel9.msdn.com/posts/A-quick-look-at-Windows-8&gt;A quick look at windows 8&lt;/a&gt;，在下面是介紹的影片&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/p92QfWOw88I" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-2611942405419261538?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UQtB2UuWAWjLbG-3FGA6AUWleww/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UQtB2UuWAWjLbG-3FGA6AUWleww/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UQtB2UuWAWjLbG-3FGA6AUWleww/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UQtB2UuWAWjLbG-3FGA6AUWleww/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/8iyUDDTzT9Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/2611942405419261538/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=2611942405419261538" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/2611942405419261538?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/2611942405419261538?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/8iyUDDTzT9Y/quick-look-at-windows-8.html" title="A quick look at Windows 8" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/p92QfWOw88I/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/06/quick-look-at-windows-8.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYMQnczfSp7ImA9WhZVE08.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-3932173513943230418</id><published>2011-05-25T19:16:00.000+08:00</published><updated>2011-05-25T19:16:23.985+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-25T19:16:23.985+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windwos7" /><title>[資源推薦] Windows 7 技術資源中心</title><content type="html">各位鄉親，現在在Microsoft的網站上，針對一般使用者使用的OS，有提供了相關的資料整理；舉凡網路相關、安全性以及軟硬體相關的形容性議題等等，有相當多的參考資料可以參考、閱讀哦，有興趣的千萬別錯過了，可以直接點選下面圖片前往喔&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://technet.microsoft.com/zh-tw/windows/dd361745.aspx" target="_blank"&gt;&lt;br /&gt;
        &lt;img  border="0"  src="http://i.technet.microsoft.com/ff383377.tn_win7_500x96(zh-tw,MSDN.10).jpg" /&gt; &lt;br /&gt;
&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-3932173513943230418?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tX90Y8jCA86B5o5MiEJmKjYR4Ak/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tX90Y8jCA86B5o5MiEJmKjYR4Ak/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tX90Y8jCA86B5o5MiEJmKjYR4Ak/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tX90Y8jCA86B5o5MiEJmKjYR4Ak/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/jIqnAvZvVa0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/3932173513943230418/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=3932173513943230418" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/3932173513943230418?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/3932173513943230418?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/jIqnAvZvVa0/windows-7.html" title="[資源推薦] Windows 7 技術資源中心" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/05/windows-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEFSXk4fip7ImA9WhZVEkg.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-877259487050685080</id><published>2011-05-25T00:13:00.000+08:00</published><updated>2011-05-25T00:13:38.736+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-25T00:13:38.736+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>Windows Phone 7 - Mango</title><content type="html">相信有wp7的朋友都在一直期待mango的更新快點推出，不過看起來還需要一段時間 Orz ，目前官方是說秋天... 不過一些新更能與細節倒是可以先體驗一下，來看看介紹的影片過過乾癮吧&lt;br /&gt;
&lt;iframe src="http://www.studiosevent.com/newscenter/?id=mangonyc&amp;color=FF5500&amp;width=512&amp;height=288&amp;social=false" width="512" height="288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-877259487050685080?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-16xPuezhIE0dnLkIJav7j6aB3M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-16xPuezhIE0dnLkIJav7j6aB3M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-16xPuezhIE0dnLkIJav7j6aB3M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-16xPuezhIE0dnLkIJav7j6aB3M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/lq1y1d93JLs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/877259487050685080/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=877259487050685080" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/877259487050685080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/877259487050685080?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/lq1y1d93JLs/windows-phone-7-mango.html" title="Windows Phone 7 - Mango" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/05/windows-phone-7-mango.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAGRns6fCp7ImA9WhZWFUQ.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-5043439135994023192</id><published>2011-05-17T10:02:00.000+08:00</published><updated>2011-05-17T10:02:07.514+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-17T10:02:07.514+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Mobile" /><title>Windows Mobile 6.x Application Submissions to Stop on July 15, 2011</title><content type="html">今天收到了一封來自Windows Phone Marketplace的郵件，其中提了一下WP7 Mango更新的狀況之外，主要是在說明，在7月15日之後，原先WM6.x(包含6.0,6.1,6.5,6.5.3等)的App，就不能夠再上傳到Marketplace或是進行更新了，節錄部分的原文如下&lt;br /&gt;
&lt;code&gt;• App Submission and Management. On July 15, 2011, we will no longer be accepting new Windows Mobile 6.x applications or application updates. In addition, it will no longer be possible to modify prices, metadata, or other information. However, you will still be able to remove your apps by contacting support.&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
有在開發WM應用程式的朋友要留意一下了，其餘部分就請留意一下email內容了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-5043439135994023192?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7ObwV8mYgXMf7qA7ojGCnc0tlgc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7ObwV8mYgXMf7qA7ojGCnc0tlgc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7ObwV8mYgXMf7qA7ojGCnc0tlgc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7ObwV8mYgXMf7qA7ojGCnc0tlgc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/Y-d3PTURUd4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/5043439135994023192/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=5043439135994023192" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5043439135994023192?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5043439135994023192?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/Y-d3PTURUd4/windows-mobile-6x-application.html" title="Windows Mobile 6.x Application Submissions to Stop on July 15, 2011" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/05/windows-mobile-6x-application.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04BSX8zfip7ImA9Wx9aF0o.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-66252108486531832</id><published>2011-03-11T00:52:00.000+08:00</published><updated>2011-03-11T00:52:38.186+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-11T00:52:38.186+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>在WP7中方向感應器的偵測(Accelermoter)</title><content type="html">在目前新的手機上都配有方向感應器(或是稱加速度計?)，很常見的用途是當你的手機改變方向的時候，畫面也可以隨著方向的變更進行自動的切換，這真是一個很優的功能；或是一些類似賽車等的小遊戲，甚至不需要方向鍵來操控方向，直接用偵測器來偵測手機擺動的方向，玩起來更有感覺；那麼在WP7中應該要怎麼去抓目前手機的方向出來呢？&lt;br /&gt;
下面簡單的做個測試，首先要先引入命名空間&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;using Microsoft.Devices.Sensors;&lt;/pre&gt;之後利用Accelerometer類別就可以偵測了，主要必須要處理ReadingChanged的事件，例如下面的方式&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;try 
         {
                Sensor = new Accelerometer();
                Sensor.ReadingChanged += new EventHandler&lt;AccelerometerReadingEventArgs&gt;(Sensor_ReadingChanged);
                Sensor.Start();
                tbState.Text = "Accelermoter detect started";
         }
         catch (AccelerometerFailedException)
         {
                tbState.Text = "Start Acceleromter error";
         }&lt;/pre&gt;事件處理的程式碼部分大致會像是下面這樣子&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;void Sensor_ReadingChanged(object sender, AccelerometerReadingEventArgs e)
        {
            this.Dispatcher.BeginInvoke(() =&gt; ReadingChanged(e));
        }

        void ReadingChanged(AccelerometerReadingEventArgs e)
        {
            tbData.Text = "X: " + e.X.ToString() + Environment.NewLine +
                          "Y: " + e.Y.ToString() + Environment.NewLine +
                          "Z: " + e.Z.ToString() + Environment.NewLine;
        }&lt;/pre&gt;上面這邊我將目前x,y,z軸的數值簡單的直接顯示在TextBloxk上面，而顯示的時候因為是該事件是引發在不同的執行緒上，所以必須要用委派的方式來更新UI，這部分要留意一下；是不是很簡單呢，要停止的時候也是相當簡單，例如下面的方式&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;try
            {
                if (Sensor != null)
                {
                    Sensor.Stop();
                    sender = null;
                    tbState.Text = "Accelermoter detect stoped";
                }
            }
            catch (AccelerometerFailedException)
            {
                tbState.Text = "Stop Acceleromter error";
            }&lt;/pre&gt;能夠抓到數值之後，就可以再做進一步的處理，例如滾動的球或是遊戲等等了，下一篇我們再來試試看讓element在畫面上移動吧 :)&lt;br /&gt;
下面這邊也有篇很棒的介紹文章，不要錯過了喔&lt;br /&gt;
&lt;a href=http://www.wintellect.com/CS/blogs/jprosise/archive/2011/01/24/using-the-accelerometer-in-silverlight-for-windows-phone.aspx&gt;Using the Accelerometer in Silverlight for Windows Phone&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-66252108486531832?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/feI2f_AfvMMwxHcC2qTZ6CVJHn0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/feI2f_AfvMMwxHcC2qTZ6CVJHn0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/feI2f_AfvMMwxHcC2qTZ6CVJHn0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/feI2f_AfvMMwxHcC2qTZ6CVJHn0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/SOjrFUf8Eo0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/66252108486531832/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=66252108486531832" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/66252108486531832?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/66252108486531832?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/SOjrFUf8Eo0/wp7accelermoter.html" title="在WP7中方向感應器的偵測(Accelermoter)" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/03/wp7accelermoter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04FRnozcCp7ImA9Wx9aFU0.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-759600807379529715</id><published>2011-03-07T22:58:00.000+08:00</published><updated>2011-03-07T22:58:37.488+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-07T22:58:37.488+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>在WP7複寫硬體返回鍵的動作</title><content type="html">在WP7中的硬體按鍵中，返回鍵預設的功能是返回上一頁，或是返回上一個執行的App；而在開發WP7的應用程式時，有時我們必須去處理這個動作，例如說目前的頁面是給使用者填入資料用的，在接收到硬體返回鍵的動作時，應該要加以提醒使用者，以免離開後輸入的資料都不見了，畢竟在裝置上面打字不是一件舒服的事情的..&lt;br /&gt;
&lt;br /&gt;
那麼應該要怎麼去處理這個動作呢？程式碼的部分也很簡單，首先是掛載事件的處理&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;this.BackKeyPress += new EventHandler&lt;System.ComponentModel.CancelEventArgs&gt;(SecondPag_BackKeyPress);&lt;/pre&gt;之後做相關的處理就可以了，比如說下面這個樣子&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;void SecondPag_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (!boltmp)
            {
                boltmp = true;
                e.Cancel = true;
                this.PageTitle.Text = "BackKey canceled";
            }
        }&lt;/pre&gt;其中e.Cancel=True這行就是取消返回的動作了，是不是很簡單呢？&lt;br /&gt;
&lt;br /&gt;
另外在頁面轉換的過程中，他是以環狀的方式在進行，也就是說當你用Navigate的方式去尋覽至一個頁面時，這個頁面就會被加入堆疊中，而按下back就會回到堆疊中記錄的上一個頁面，如果你的App使用情境跟這個方式有所牴觸的話，下面這邊有一篇很棒的文章可以參考喔，把Sample下載回來跑一下，就可以知道他是在做什麼的了&lt;br /&gt;
&lt;a href=http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/12/13/solving-circular-navigation-in-windows-phone-silverlight-applications.aspx&gt;Solving Circular Navigation in Windows Phone Silverlight Applications&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-759600807379529715?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NPCmRls08sEqFLrM6mg4Plzi2lA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NPCmRls08sEqFLrM6mg4Plzi2lA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NPCmRls08sEqFLrM6mg4Plzi2lA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NPCmRls08sEqFLrM6mg4Plzi2lA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/1XNYMR0z2UQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/759600807379529715/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=759600807379529715" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/759600807379529715?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/759600807379529715?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/1XNYMR0z2UQ/wp7.html" title="在WP7複寫硬體返回鍵的動作" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/03/wp7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QMRHY8eip7ImA9Wx9UEUg.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-927261743115189982</id><published>2011-02-08T16:56:00.000+08:00</published><updated>2011-02-08T16:56:25.872+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-08T16:56:25.872+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>Tilt Effect for Windows Phone</title><content type="html">在MSDN上的範例中，&lt;a href="http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx"&gt;可以找到Tilt Effect的範例&lt;/a&gt;；不過這個Tile Effect是幹啥用的呢？&lt;br /&gt;
&lt;br /&gt;
Tile Effect是可以幫你的控制項(元素)套用上像是在首頁中的Tile或是程式列表按下去時候的感覺，會有凹下去的樣子，有了這個效果會比較明顯的看出跟使用者間是比較有互動的，那麼要怎麼使用呢？使用的時候您可以先從MSDN上下載範例程式碼，其中就會包含了TiltEffect.cs這個類別檔案，之後將這個檔案加入到你的專案中，之後在XAML的部分設定一下，就會自動套用了喔；設定的方式大致像是下面這樣&lt;br /&gt;
&lt;blockquote&gt;要先加入xmlns&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;span lang="EN-US" style="color: red; font-family: Consolas; font-size: 9.5pt;"&gt;xmlns&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;:&lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: Consolas; font-size: 9.5pt;"&gt;local&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;="clr-namespace:ControlTiltEffect"&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote&gt;之後，要設定成啟用&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span lang="EN-US"&gt;l&lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: Consolas; font-size: 9.5pt;"&gt;local&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;:&lt;/span&gt;&lt;span lang="EN-US" style="color: red; font-family: Consolas; font-size: 9.5pt;"&gt;TiltEffect.IsTiltEnabled&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;="True"&lt;/span&gt;&lt;/blockquote&gt;是不是很簡單呢，趕緊動手來試試看吧。下面我把PhoneApplicationPage相關的設定整個貼上來，一起參考應該會比較清楚一些&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #a31515; font-family: Consolas; font-size: 9.5pt;"&gt;phone&lt;/span&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;:&lt;/span&gt;&lt;span lang="EN-US" style="color: #a31515; font-family: Consolas; font-size: 9.5pt;"&gt;PhoneApplicationPage&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;x&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Class&lt;/span&gt;&lt;span style="color: blue;"&gt;="RssReader.MainPage"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;x&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;phone&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;shell&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;controls&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;d&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;mc&lt;/span&gt;&lt;span style="color: blue;"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;xmlns&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;local&lt;/span&gt;&lt;span style="color: blue;"&gt;="clr-namespace:ControlTiltEffect"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;mc&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;Ignorable&lt;/span&gt;&lt;span style="color: blue;"&gt;="d"&lt;/span&gt;&lt;span style="color: red;"&gt; d&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;DesignWidth&lt;/span&gt;&lt;span style="color: blue;"&gt;="480"&lt;/span&gt;&lt;span style="color: red;"&gt; d&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;DesignHeight&lt;/span&gt;&lt;span style="color: blue;"&gt;="800"&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;d&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;DataContext&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;d&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: #a31515;"&gt;DesignData&lt;/span&gt;&lt;span style="color: red;"&gt; SampleData&lt;/span&gt;/&lt;span style="color: blue;"&gt;MainViewModelSampleData.xaml}"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;FontFamily&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color: red;"&gt; PhoneFontFamilyNormal&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;FontSize&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color: red;"&gt; PhoneFontSizeNormal&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;Foreground&lt;/span&gt;&lt;span style="color: blue;"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515;"&gt;StaticResource&lt;/span&gt;&lt;span style="color: red;"&gt; PhoneForegroundBrush&lt;/span&gt;&lt;span style="color: blue;"&gt;}"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;SupportedOrientations&lt;/span&gt;&lt;span style="color: blue;"&gt;="Portrait"&lt;/span&gt; &lt;span style="color: red;"&gt;&amp;nbsp;Orientation&lt;/span&gt;&lt;span style="color: blue;"&gt;="Portrait"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;shell&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;SystemTray.IsVisible&lt;/span&gt;&lt;span style="color: blue;"&gt;="False"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;&amp;nbsp;local&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;span style="color: red;"&gt;TiltEffect.IsTiltEnabled&lt;/span&gt;&lt;span style="color: blue;"&gt;="True"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
另外您也可以參考下面的How-to文章喔&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/ff941108(VS.92).aspx"&gt;How to: Use the Control Tilt Effect for Windows Phone&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-927261743115189982?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7-wkygjsELzvmPIyNwf_xRjHNo0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7-wkygjsELzvmPIyNwf_xRjHNo0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7-wkygjsELzvmPIyNwf_xRjHNo0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7-wkygjsELzvmPIyNwf_xRjHNo0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/PIf8TtU3T7I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/927261743115189982/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=927261743115189982" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/927261743115189982?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/927261743115189982?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/PIf8TtU3T7I/tilt-effect-for-windows-phone.html" title="Tilt Effect for Windows Phone" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/02/tilt-effect-for-windows-phone.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4DQXg4fyp7ImA9Wx9UEE0.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-1475146747619587009</id><published>2011-02-06T23:41:00.002+08:00</published><updated>2011-02-06T23:42:50.637+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T23:42:50.637+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>Windows Phone Developer Tools January Update</title><content type="html">各位鄉親啊，Windows Phone 7的開發工具有更新了喔，趕緊前往下載安裝；您可以參考一下下面這篇文章&lt;br /&gt;
&lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/02/04/windows-phone-developer-tools-january-update.aspx"&gt;Windows Phone Developer Tools January Update&lt;/a&gt;&lt;br /&gt;
其中也有下載的連結位置；這次的更新除了修正一些問題之外，也為了即將推出的Windows Phone 7 ROM更新，在模擬器上加入了『複製以及貼上』的功能，可以搶先體驗一下；複製貼上的動作是當你在文字框中選擇一個文字時(單擊文字)，就會出現像是下圖的複製按鈕&lt;br /&gt;
&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_0E-tYU9RsEo/TU69-wckeoI/AAAAAAAAAl8/vguOFwhcqa4/s320/cp01.png" width="192" /&gt;&lt;br /&gt;
這個時候可以擴大你的選取範圍(點住文字之後向左或是右拖曳)，或是點選複製的按鈕；而點了複製的按鈕之後，在輸入鍵盤的上方就會出現貼上的按鈕，像是下圖&lt;br /&gt;
&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_0E-tYU9RsEo/TU6_GVqL3rI/AAAAAAAAAmM/l75KFqSXbMs/s320/cp02.png" width="192" /&gt;&lt;br /&gt;
以這樣的方式來達到複製跟貼上的功能；而大致上來說，在這次的ROM更新，我們的應用程式不用做什麼修改就可以直接套用上去，而在上面文章連結中也有提到，&lt;b style="background-color: #7f6000;"&gt;當你的應用程式中有使用到Pivot或是Panorama的時候要特別注意，在Pivot或是Panorama中不要擺放TextBox&lt;/b&gt;，因為在使用複製或是貼上的功能時，會有拖曳的動作，而這個動作在Pivot或是Panorama中會有誤動作產生，也就是跟原本的頁面拖曳的行為有衝突了，這個要特別的留意一下喔。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-1475146747619587009?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MEB-9ElYTaHZdhOAf4a4OXEhkag/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MEB-9ElYTaHZdhOAf4a4OXEhkag/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MEB-9ElYTaHZdhOAf4a4OXEhkag/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MEB-9ElYTaHZdhOAf4a4OXEhkag/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/jRtqXQWnf98" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/1475146747619587009/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=1475146747619587009" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1475146747619587009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1475146747619587009?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/jRtqXQWnf98/windows-phone-developer-tools-january.html" title="Windows Phone Developer Tools January Update" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_0E-tYU9RsEo/TU69-wckeoI/AAAAAAAAAl8/vguOFwhcqa4/s72-c/cp01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/02/windows-phone-developer-tools-january.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cMSX0_fip7ImA9Wx9WGEg.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-8334279038682069434</id><published>2011-01-24T16:51:00.000+08:00</published><updated>2011-01-24T16:51:28.346+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T16:51:28.346+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="compact framework" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Mobile" /><title>OpenNETCF.Desktop.Communication在x64電腦上出現"數學運算導致溢位"或是"找不到檔案"的錯誤訊息</title><content type="html">當有需要將Windows Mobile的裝置中的資料給抓回來電腦的時候，通常第一個想到的就是利用RAPI或是利用OpenNetCF提供的Communication類別來做，而當使用OnenNetCF提供的類別來做的時候，在x64的電腦上，你會發現在呼叫方法的時候，常常會莫名其妙的出現『數學運算導致溢位』或是『找不到遠端檔案』的錯誤訊息，真的是名奇妙，明明沒有做運算，天外飛來這筆還真是令人找不到頭緒。&lt;br /&gt;
&lt;br /&gt;
經過搜尋相關資料以及經過一些測試之後，終於找到了元凶，相信您從標題中已經看出了端倪，為什麼強調x64？是的，OpenNetCF在x64的環境中直接使用會出現問題，這個跟Access的OleDB在x64中的問題極其類似，解決的方式就是要修改一下編譯的設定，將Any CPU變更為x86&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_0E-tYU9RsEo/TT06JQa2p2I/AAAAAAAAAl0/aBc5z0Ts_sM/s1600/tmp.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="520" src="http://3.bp.blogspot.com/_0E-tYU9RsEo/TT06JQa2p2I/AAAAAAAAAl0/aBc5z0Ts_sM/s640/tmp.png" style="cursor: move;" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;
經過設定之後就可以順利運作了 YAYAYA~&lt;br /&gt;
如果您需要Desktop.Communcation的使用說明，這邊有一篇很棒的文章不要錯過了喔&lt;br /&gt;
&lt;a href=http://www.dotblogs.com.tw/dotnetfactory/archive/2008/08/04/4796.aspx&gt;[推薦工具]OpenNETCF.Desktop.Communication Library&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-8334279038682069434?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Dr5kTij7xSg8IHkE_1FNca-qJVg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dr5kTij7xSg8IHkE_1FNca-qJVg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Dr5kTij7xSg8IHkE_1FNca-qJVg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dr5kTij7xSg8IHkE_1FNca-qJVg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/oONSjVaLl5s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/8334279038682069434/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=8334279038682069434" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/8334279038682069434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/8334279038682069434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/oONSjVaLl5s/opennetcfdesktopcommunicationx64.html" title="OpenNETCF.Desktop.Communication在x64電腦上出現&quot;數學運算導致溢位&quot;或是&quot;找不到檔案&quot;的錯誤訊息" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_0E-tYU9RsEo/TT06JQa2p2I/AAAAAAAAAl0/aBc5z0Ts_sM/s72-c/tmp.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/01/opennetcfdesktopcommunicationx64.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIERHYzeCp7ImA9Wx9XFUU.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-4243535212708956263</id><published>2011-01-09T23:34:00.002+08:00</published><updated>2011-01-09T23:38:25.880+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-09T23:38:25.880+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>ShellTileSchedule；定時更換應用程式在Tile的背景圖片</title><content type="html">在WP7中，當應用程式安裝完成之後就會出現在應用程式的列表當中，而在應用程式上長按之後，就會出現Pin to start的功能；這個功能是能夠讓你將你的應用程式顯示在首頁的Tile畫面上；而應用程式放到Start畫面上之後，最會最常被使用者看到、點選的，那麼我們就會希望幫在Start畫面上的應用程式上加上一些訊息，很常見的例如說Email的應用程式會顯示有幾封新的郵件這樣；而除了使用文字的方式來顯示訊息之外，也可以變更背景的圖片，來讓使用者有不一樣的感覺，例如說一個顯示目前天氣狀況的應用程式，用鮮明的圖片來做顯示就會比裡用單純使用文字說明來的更好。那麼，該怎麼變更應用程式的背景圖片呢？&lt;br /&gt;
&lt;br /&gt;
更新應用程式的背景圖片可以使用Push Notification來做，Push Notification能夠做到滿多事情的，而如果說不想要使用Push Notification呢？今天要跟各位介紹的就是另一種方式，利用ShellTileSchedule來做；ShellTileSchedule能夠定時的連到你指定的位置去下載圖片，下載完成之後，就會變成應用程式的背景圖片了。在開始之前，應用程式使用的圖片有一定的規格，建議您依照對應的規格來做圖片的處理，您可以參考在MSDN的這篇介紹&lt;a href=http://msdn.microsoft.com/zh-tw/windowsphone/gg135026.aspx&gt;Windows Phone 7 應用程式圖示製作指南&lt;/a&gt;，上有有相當詳盡的說明喔。&lt;br /&gt;
&lt;br /&gt;
接下來來看看程式的部分，使用ShellTileSchedule的程式碼相當的簡單，例如下面的樣子&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;sts.Recurrence = Microsoft.Phone.Shell.UpdateRecurrence.Interval;
            sts.Interval = Microsoft.Phone.Shell.UpdateInterval.EveryHour;
            sts.StartTime = DateTime.Now;
            sts.RemoteImageUri = new Uri(@"http://bauann.myweb.hinet.net/test01.png");
            sts.Start();&lt;/pre&gt;像是上面的程式碼便會在每個小時到筆者放圖片的位置去下載圖片，並且設定為應用程式的背景圖片；接來來來看看一些屬性的用途是做甚麼用的&lt;ol&gt;&lt;li&gt;Interval&lt;br /&gt;
Interval屬性是設定更新的頻率，可以設定為一小時、一天、一周或是一個月&lt;br /&gt;
&lt;li&gt;Recurrence&lt;br /&gt;
Recurrence是設定更新的方式，是用間隔的(也就是Interval)或是只要進行一次&lt;br /&gt;
&lt;li&gt;RemoteImageUri&lt;br /&gt;
這個屬性就是設定要更新圖片的擺放位置了&lt;br /&gt;
&lt;li&gt;MaxUpdateCount&lt;br /&gt;
MaxUpdateCount是設定要進行更新幾次，在這個次數之後，Schedule就會失效了&lt;br /&gt;
&lt;li&gt;StartTime&lt;br /&gt;
這個屬性是設定排程開始的時間&lt;/ol&gt;這樣子應該就了解大致的使用方式了；而如果想要測試這個動作就要有點耐心了，因為更新的間隔最短是一個小時阿..Orz Orz  聰明的你也可能會想到那把StartTime設定成現在時間的59分鐘之前呢？也就是在過1分鐘就會更新了？殘念，這是不行的，這樣子設定事不會發生錯誤，但是仍然是看不到效果，一定要等到一個小時，因此測試的話最好是丟到實機上面，隔一段時間之後來看效果，而如果用模擬器來做測試，那就真的要有點耐心了。  最後再來看一下要注意的事項 &lt;ul&gt;&lt;li&gt;在裝置鎖定(或是idle)的狀態之下，Tile的背景更新排程是不會進行的，但如果排程時間到了之後，裝置一離開鎖定狀態，就會立即做更新的動作了&lt;br /&gt;
&lt;li&gt;背景圖片的大小限制是在80KB以下，而下載的時間是以15秒為限；假如下載超過15秒鐘而失敗的話，連續3次失敗之後，排程作業就會被移除不再進行了&lt;/ul&gt;簡單的跟各位介紹到這邊，有興趣的朋友可以玩玩看喔。 參考資料 &lt;br&gt; &lt;a href=http://msdn.microsoft.com/en-us/library/ff769548(VS.92).aspx&gt;How to: Update Your Tile Without Push Notifications for Windows Phone&lt;/a&gt;&lt;br&gt;  &lt;a href=http://msdn.microsoft.com/en-us/library/microsoft.phone.shell.shelltileschedule(VS.92).aspx&gt;ShellTileSchedule Class&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-4243535212708956263?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XFG6wJCHSuHc14YsUMnYzuVDxys/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XFG6wJCHSuHc14YsUMnYzuVDxys/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XFG6wJCHSuHc14YsUMnYzuVDxys/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XFG6wJCHSuHc14YsUMnYzuVDxys/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/w91Nz7I_M6I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/4243535212708956263/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=4243535212708956263" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/4243535212708956263?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/4243535212708956263?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/w91Nz7I_M6I/shelltilescheduletile.html" title="ShellTileSchedule；定時更換應用程式在Tile的背景圖片" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/01/shelltilescheduletile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04AQXo4cSp7ImA9Wx9XEUg.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-7604411627049447031</id><published>2011-01-05T00:52:00.000+08:00</published><updated>2011-01-05T00:52:20.439+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-05T00:52:20.439+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>在WP7的TextBox如果需要Click事件該怎麼做呢？</title><content type="html">已經忘了在哪邊看到相關的文章了，不過還是筆記一下；在預設TextBox上面只會有MouseLeftButtonDown這個事件可以偵測使用者是否點選，而這個事件是一點選就馬上會觸發了，如果想要Click的效果，也就是按下、放開，這樣的動作才要觸發的話，就要而外的處理一下；這類的需求是比較少見一些，不過如果需要在TextBox上實作Click的動作的話可以參考下面的方式。&lt;br /&gt;
首先建立一個新的類別，在這個類別中會繼承原先的TextBox，並且加上一個自訂事件&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;namespace MyCtl
{
    public class nTextBlock : TextBox
    {
        bool isMouseDown = false;
        public delegate void deOnClick(object sender,MouseButtonEventArgs e);

        public event deOnClick OnClick;

        protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            isMouseDown = true;
            base.OnMouseLeftButtonDown(e);
        }

        protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
        {
            if (isMouseDown)
            {
                isMouseDown = false;
                OnClick(this,e);
            }
            else
                base.OnMouseLeftButtonUp(e);
        }
    }
}&lt;/pre&gt;而在主要頁面上可以用下面的方式將控制項加進來使用&lt;br /&gt;
&lt;pre class="C#" name="code"&gt;MyCtl.nTextBlock nTxt = new MyCtl.nTextBlock();
            Grid.SetRow(nTxt, 1);
            nTxt.Text = "New TextBox";
            nTxt.OnClick += new MyCtl.nTextBlock.deOnClick(nTxt_OnClick);
            ContentGrid.Children.Add(nTxt);&lt;/pre&gt;這邊其實就是自行宣告一個變數來判斷是不是完成Click的動作，不建立新的類別都寫在主要頁面中來處理相關的事件也是可以，不過程式碼就會變得比較不好閱讀一些；做個筆記也給大家參考看看了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-7604411627049447031?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vGdSNSq5IvgU41VlnYo-qVhcMuk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vGdSNSq5IvgU41VlnYo-qVhcMuk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vGdSNSq5IvgU41VlnYo-qVhcMuk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vGdSNSq5IvgU41VlnYo-qVhcMuk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/TYS-Egqovkk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/7604411627049447031/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=7604411627049447031" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/7604411627049447031?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/7604411627049447031?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/TYS-Egqovkk/wp7textboxclick.html" title="在WP7的TextBox如果需要Click事件該怎麼做呢？" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2011/01/wp7textboxclick.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08BQHwyfip7ImA9Wx9RE0o.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-2409777452765370615</id><published>2010-12-15T10:24:00.000+08:00</published><updated>2010-12-15T10:24:11.296+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-15T10:24:11.296+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="學習資源" /><title>活動推薦- Imagine Cup</title><content type="html">同學們，Imagine Cup的活動開始了喔；有興趣的千萬先萬別錯過了；詳細資料可以到下面的介紹網頁觀看&lt;br /&gt;
&lt;a href=http://www.microsoft.com/taiwan/imaginecup/&gt;http://www.microsoft.com/taiwan/imaginecup/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.microsoft.com/taiwan/imaginecup/" target="_blank"&gt;&lt;br /&gt;
        &lt;img border="0"   height="90" 
            src="http://60.251.1.52/taiwan/newsletter/library/mscom/icupbanner728x90.jpg" 
            width="728" /&gt;&lt;br /&gt;
         &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-2409777452765370615?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/a8AXevjQhGgNO_hQ-yL9d0cj7RQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a8AXevjQhGgNO_hQ-yL9d0cj7RQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/a8AXevjQhGgNO_hQ-yL9d0cj7RQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a8AXevjQhGgNO_hQ-yL9d0cj7RQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/SKFG1DLRgnU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/2409777452765370615/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=2409777452765370615" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/2409777452765370615?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/2409777452765370615?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/SKFG1DLRgnU/imagine-cup.html" title="活動推薦- Imagine Cup" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2010/12/imagine-cup.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cDQ34zfip7ImA9Wx9SGE8.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-1463000312108440489</id><published>2010-12-09T00:17:00.001+08:00</published><updated>2010-12-09T00:17:52.086+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-09T00:17:52.086+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>在WP7 Silverlight應用程式中，要怎麼去偵測目前的主題是黑色或是白色的呢？</title><content type="html">最近在自個瞎搞一個簡單的Rss Reader，從網路上把資料抓下來之後，在RSS的資料中，本身會帶有文章的摘要，而這個摘要的部分基本上就是HTML了，想了一些解析方式，最後根據科技始終來自於人性的最高指導原則，顯示的部分就直接餵給webbrowser來顯示了 XDD(我真是懶阿)；而在實作的過程中，由於預設WP7是黑色的背景，直接叫webbrowser出來之後會白白一片，說實在挺難看的，所以就偷偷的在HTML裡面加上背景跟文字的顏色，讓顯示出來的背景變成黑的，不過問題來了；在WP7中，白色與黑色的主題是隨時都都可變更的，所以也不能固定一種顏色，那麼就必須要知道目前的主題顏色了，後來在&lt;a href=http://forums.create.msdn.com/forums/p/64067/392241.aspx#392241&gt;論壇中看到這篇文章&lt;/a&gt;，裡面有相當棒的解答，大家可以參考看看，這邊也略為做個筆記，可以利用下面的方式來偵測&lt;br /&gt;
&lt;pre class="C#" name="code"&gt;//ref:http://forums.create.msdn.com/forums/p/64067/392241.aspx#392241
        private bool IsLightTheme()
        {
            var visibility = (Visibility)Application.Current.Resources["PhoneLightThemeVisibility"];
            return (visibility == Visibility.Visible) ? true : false;
        } &lt;/pre&gt;範例的效果可以參考下面影片&lt;br /&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/j8M89gJZA-I?hl=zh&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/j8M89gJZA-I?hl=zh&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-1463000312108440489?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ITgUBKaa9ywl8k4nTh-Ww_-yYyM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ITgUBKaa9ywl8k4nTh-Ww_-yYyM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ITgUBKaa9ywl8k4nTh-Ww_-yYyM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ITgUBKaa9ywl8k4nTh-Ww_-yYyM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/e3S4DrdTK1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/1463000312108440489/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=1463000312108440489" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1463000312108440489?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1463000312108440489?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/e3S4DrdTK1U/wp7-silverlight.html" title="在WP7 Silverlight應用程式中，要怎麼去偵測目前的主題是黑色或是白色的呢？" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2010/12/wp7-silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AHSX88eCp7ImA9Wx5aEUQ.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-548267968218777486</id><published>2010-11-08T12:47:00.001+08:00</published><updated>2010-11-08T12:48:58.170+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-08T12:48:58.170+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>Windows Phone 7推廣用的下載按鈕圖片</title><content type="html">今天看到Nick的Blog上面寫到&lt;a href="http://nicksnettravels.builttoroam.com/post/2010/11/07/Promoting-your-Windows-Phone-7-application.aspx"&gt;Promoting your Windows Phone 7 application&lt;/a&gt;這篇文章，看了一下，原來Microsoft現在有提供Windows Phone 7 應用程式用的下載圖形，比如說下面顯示的這幾個&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_0E-tYU9RsEo/TNeAIG3mL_I/AAAAAAAAAlI/xR3KEsSwgSM/s1600/wp7_English_152x50_green.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_0E-tYU9RsEo/TNeAIG3mL_I/AAAAAAAAAlI/xR3KEsSwgSM/s1600/wp7_English_152x50_green.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_0E-tYU9RsEo/TNeAFKqesoI/AAAAAAAAAlE/ycSOHOA1YdU/s1600/wp7_English_152x50_blue.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_0E-tYU9RsEo/TNeAFKqesoI/AAAAAAAAAlE/ycSOHOA1YdU/s1600/wp7_English_152x50_blue.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
這些圖形可以讓您連到您的應用程式去，大家可以參考看看；而怎麼去做連結的部分呢？您可以參考MSDN上面的這篇說明(Nick的Blog上也有提到)&lt;a href="http://msdn.microsoft.com/en-us/library/ff967553(VS.92).aspx"&gt;How to: Link to Windows Phone Marketplace Content&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-548267968218777486?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bMU8YoFXGwK1X5zkUKayK4MVYDU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bMU8YoFXGwK1X5zkUKayK4MVYDU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bMU8YoFXGwK1X5zkUKayK4MVYDU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bMU8YoFXGwK1X5zkUKayK4MVYDU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/aZdT5clKud4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/548267968218777486/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=548267968218777486" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/548267968218777486?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/548267968218777486?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/aZdT5clKud4/windows-phone-7.html" title="Windows Phone 7推廣用的下載按鈕圖片" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_0E-tYU9RsEo/TNeAIG3mL_I/AAAAAAAAAlI/xR3KEsSwgSM/s72-c/wp7_English_152x50_green.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2010/11/windows-phone-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QNR3c_eyp7ImA9Wx5bFkw.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-1525093112439385976</id><published>2010-11-01T19:36:00.000+08:00</published><updated>2010-11-01T19:36:36.943+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-01T19:36:36.943+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>Capability Detection Tool</title><content type="html">在筆者先前的文章&lt;a href="http://msdn.microsoft.com/zh-tw/windowsphone/gg299124.aspx"&gt;Silverlight for Windows Phone 7：Hello Windows Phone 7&lt;/a&gt;中，有提到WMAppmanifest.xml這個檔案的用途；其中Capabilities的標籤中，就是設定了應用程式會使用到那些功能，而針對這個部分，MSDN網站中也發布了一個新的工具可以來幫助開發者偵測你的應用程式中用到了那些用途，MSDN的說明可以參考&lt;a href="http://msdn.microsoft.com/en-us/library/gg180730(VS.92).aspx"&gt;這邊&lt;/a&gt;，下面筆者簡單說明一下使用的方式。&lt;br /&gt;
要使用這個工具，必須要安裝&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=49b9d0c5-6597-4313-912a-f0cca9c7d277&amp;amp;displaylang=en"&gt;Windows Phone Developer Tools October 2010 Update&lt;/a&gt;安裝完畢之後就會多了Windows Phone Capability Detection tool可以使用，這個工具是一個命令列的工具，位置在&lt;br /&gt;
&lt;code&gt;x64: %ProgramFiles (x86)%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;x86: %ProgramFiles%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect&lt;/code&gt;&lt;br /&gt;
而使用的方式是開啟命令提示字元，切換到工具的目錄(上述的資料夾位置)，輸入以下的命令&lt;br /&gt;
&lt;code&gt;CapabilityDetection.exe Rules.xml [您的專案輸出資料夾]&lt;/code&gt;&lt;br /&gt;
專案資料夾是指定到"資料夾"就可以了，不用指定到xap檔案喔，而執行之後，在命令提示字元的視窗中就會出現檢測的結果，例如下圖這樣&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_0E-tYU9RsEo/TM6kjN7MmlI/AAAAAAAAAlA/0_6bI7nmbe0/s1600/cap1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="416" src="http://3.bp.blogspot.com/_0E-tYU9RsEo/TM6kjN7MmlI/AAAAAAAAAlA/0_6bI7nmbe0/s640/cap1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;依照這個結果就可以去修改您的WMAppmanifest.xml的檔案內容了。&lt;br /&gt;
而這麼做有什麼用處呢？全部都加進去不是最保險？筆者猜想這部分或許將來在應用程式執行時，依據設定檔不同會出現不同的訊息告知使用者，並請使用者確認之後才允許執行；而這個時候明確的告訴使用者應用程式將執行到那些功能會是比較好的方式。&lt;br /&gt;
另外，在MSDN中最下面有提到&lt;br /&gt;
&lt;code&gt;In some circumstances, you may receive the ID_CAP_NETWORKING capability from the tool even if your application does not use networking. An example would be if you declared a local URI in the XAML. In such cases, you may remove this capability, but ensure that you fully test and deploy your application once you remove this capability.&lt;/code&gt;&lt;br /&gt;
這部分是說有時候當你的應用程式沒有使用到網路功能，但是偵測工具還是回報說有使用到網路功能，這是因為在應用程式中，倘若有使用到一些用戶端的URI(例如說轉頁等等的方式)，這個時候偵測工具也是會判定是有使用到網路功能；而在這個情況下，您也可以移除NetWork的Capabilitie標籤，不過記得要完整的測試您的應用程式，以免造成預期外的錯誤。&lt;br /&gt;
以上給各位參考了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-1525093112439385976?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fgnNTfSX5Khf2BdDRpxByBs8KhQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fgnNTfSX5Khf2BdDRpxByBs8KhQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fgnNTfSX5Khf2BdDRpxByBs8KhQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fgnNTfSX5Khf2BdDRpxByBs8KhQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/7m_-xIw9mRQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/1525093112439385976/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=1525093112439385976" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1525093112439385976?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/1525093112439385976?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/7m_-xIw9mRQ/capability-detection-tool.html" title="Capability Detection Tool" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_0E-tYU9RsEo/TM6kjN7MmlI/AAAAAAAAAlA/0_6bI7nmbe0/s72-c/cap1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2010/11/capability-detection-tool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQERns8eyp7ImA9Wx5QEkg.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-5024001666226528658</id><published>2010-08-31T18:22:00.002+08:00</published><updated>2010-08-31T18:25:07.573+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-31T18:25:07.573+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>Gif in Windows phone 7</title><content type="html">今天突然想到，在以往WM5/WM6系列，在系統上是無法正常的顯示Gif圖形的，那Windows Phone 7呢？簡單測試了一下，利用下面的XAML去測試&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_0E-tYU9RsEo/THzYdBwInSI/AAAAAAAAAkw/qGDIcadRWWs/s1600/imgTool03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="84" src="http://3.bp.blogspot.com/_0E-tYU9RsEo/THzYdBwInSI/AAAAAAAAAkw/qGDIcadRWWs/s640/imgTool03.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
殘念，還是無法顯示；後來搜尋了一下，幸好有好心的達人有做出相關的解決方案，在&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/2919ed6d-74ed-4eb8-8d05-9f60e59c8dfc"&gt;論壇中的這篇&lt;/a&gt;有提到一個方式，是使用CodePlex上的這個解決方案，&lt;a href="http://imagetools.codeplex.com/"&gt;.NET Image Tools&lt;/a&gt;，就來測試一下吧，首先把組件下載回來之後，必須要加入相關的參考，我這邊只有用到Gif檔案，所以加入的參考是這些&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_0E-tYU9RsEo/THzWSaROk4I/AAAAAAAAAkg/vW_WYaErAjI/s1600/imgTool01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="273" src="http://2.bp.blogspot.com/_0E-tYU9RsEo/THzWSaROk4I/AAAAAAAAAkg/vW_WYaErAjI/s400/imgTool01.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;之後再畫面上簡單的只放了一個按鈕，相關程式碼會像是下面這樣&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

using System.IO.IsolatedStorage;
using System.Windows.Media.Imaging;
using ImageTools.IO.Gif;
using ImageTools.Controls;

namespace RunDemo
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            ImageTools.IO.Decoders.AddDecoder&lt;gifdecoder&gt;();
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            ImageTools.Image img = new ImageTools.Image();
            img.UriSource = new Uri("http://bauann.myweb.hinet.net/Animategif.gif", UriKind.Absolute);
            AnimatedImage myImg = new AnimatedImage();
            myImg.Stretch = System.Windows.Media.Stretch.Uniform;
            myImg.Source = img;
            myImg.VerticalAlignment = VerticalAlignment.Bottom;
            myImg.Margin = new Thickness(0, 2, 2, 2);
            ContentGrid.Children.Add(myImg);
        }

    }
}&lt;/gifdecoder&gt;&lt;/pre&gt;接下來就來執行看看效果了，至於模特兒的重責大任就交由洋蔥頭來擔綱了，出來之後的結果會像下圖，實際上也是會有動畫的喔&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_0E-tYU9RsEo/THzXK1DlWXI/AAAAAAAAAko/_yb310YSOLA/s1600/imgTool02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_0E-tYU9RsEo/THzXK1DlWXI/AAAAAAAAAko/_yb310YSOLA/s400/imgTool02.png" width="217" /&gt;&lt;/a&gt;&lt;/div&gt;真是太酷了，不過目前測試這個組件只能讀取遠端的檔案，直接部屬過去的檔案(在隔離儲存區內)是沒辦法讀出來用的，可能是原作者主要標的是針對Silverlight，但不是針對Phone的平台，不過可以下載原始碼回來K看看，我想應該是辦的到的才對:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-5024001666226528658?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dVCSbHzKBhzhVuHGUsLQU1dIDBQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dVCSbHzKBhzhVuHGUsLQU1dIDBQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dVCSbHzKBhzhVuHGUsLQU1dIDBQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dVCSbHzKBhzhVuHGUsLQU1dIDBQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/NldbkePxyX8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/5024001666226528658/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=5024001666226528658" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5024001666226528658?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5024001666226528658?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/NldbkePxyX8/gif-in-windows-phone-7.html" title="Gif in Windows phone 7" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_0E-tYU9RsEo/THzYdBwInSI/AAAAAAAAAkw/qGDIcadRWWs/s72-c/imgTool03.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2010/08/gif-in-windows-phone-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIARnoyeip7ImA9Wx5QEUs.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-8716652871347968818</id><published>2010-08-30T18:17:00.001+08:00</published><updated>2010-08-30T18:19:07.492+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-30T18:19:07.492+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="csharp" /><title>Extension Method in C#</title><content type="html">在.Net中，有許許多多的類別可供使用，那如果想要在已有的類別上去新增自己做的Function，應該要怎麼做呢？&lt;br /&gt;
這個時候我們可以撰寫擴充現有類別的程式碼，例如想要幫string來新增自訂的方法，可以加入以下的類別&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;namespace StringExtension
{
    public static class Extension
    {
        public static string ShowMachineName(this string str)
        {
            return Environment.MachineName;
            
        }

        public static string AddMessage(this string str, string msg)
        {
            return "Hello : " + msg;
        }
    }
}&lt;/pre&gt;要特別注意的地方在下圖紅色框框的地方&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_0E-tYU9RsEo/THuCmgWwsZI/AAAAAAAAAkQ/4hQx6bNH5s8/s1600/extension02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="339" src="http://4.bp.blogspot.com/_0E-tYU9RsEo/THuCmgWwsZI/AAAAAAAAAkQ/4hQx6bNH5s8/s640/extension02.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;要注意的地方是&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;自行撰寫的類別比需是&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;public static&lt;/span&gt;&lt;/b&gt;的&lt;/li&gt;
&lt;li&gt;類別中的function必須是&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;public static&lt;/span&gt;&lt;/b&gt;類型&lt;/li&gt;
&lt;li&gt;function的第一個傳入參數必須要加上&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;this&lt;/span&gt;&lt;/b&gt;的關鍵字，而隨後跟著的是要擴充的類別名稱&lt;/li&gt;
&lt;li&gt;需要傳入參數的話，則在function中的第二個參數加入想要傳入的參數型態以及名稱&lt;/li&gt;
&lt;/ul&gt;這樣子，就可以幫現有的類別加上擴充方法了；有部分有沒有覺得很奇怪呢？為什麼擴充方法中，第一個傳入的參數是想要擴充的類別型態，又宣告了一個參數，但是都沒有用到阿？這參數是甚麼？這個來設個中斷點，看一下下圖應該就很清楚了&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_0E-tYU9RsEo/THuEod9TsJI/AAAAAAAAAkY/mO6pzyUSGoY/s1600/extension01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="92" src="http://2.bp.blogspot.com/_0E-tYU9RsEo/THuEod9TsJI/AAAAAAAAAkY/mO6pzyUSGoY/s400/extension01.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;原來第一個參數的內容會是"執行個體"的內容。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-8716652871347968818?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/k8ykrSbHD1zIozv9M0kDdgKhZi8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k8ykrSbHD1zIozv9M0kDdgKhZi8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/k8ykrSbHD1zIozv9M0kDdgKhZi8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k8ykrSbHD1zIozv9M0kDdgKhZi8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/rmAPchX6vfU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/8716652871347968818/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=8716652871347968818" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/8716652871347968818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/8716652871347968818?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/rmAPchX6vfU/extension-method-in-c.html" title="Extension Method in C#" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_0E-tYU9RsEo/THuCmgWwsZI/AAAAAAAAAkQ/4hQx6bNH5s8/s72-c/extension02.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2010/08/extension-method-in-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUNRHw_cSp7ImA9Wx5SFkw.&quot;"><id>tag:blogger.com,1999:blog-2645676084810380842.post-5310448529961417158</id><published>2010-08-12T20:48:00.000+08:00</published><updated>2010-08-12T20:48:15.249+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-12T20:48:15.249+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wp7" /><title>ApplicationBar Demo (以XAML的方式建立)</title><content type="html">在上一篇，有提到利用程式碼的方式來建立ApplicationBar，是不是感覺有點冗長呢？同樣的功能我們可以很輕易的用XAML Code來做到；其實在專案一建立的時候，預設就會將相關的程式碼加在XAML中，像是下圖的地方&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_0E-tYU9RsEo/TGPsGCbsLxI/AAAAAAAAAkI/u09r4y3OPVw/s1600/appbar_1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" src="http://2.bp.blogspot.com/_0E-tYU9RsEo/TGPsGCbsLxI/AAAAAAAAAkI/u09r4y3OPVw/s640/appbar_1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;這個時候就可以發現XAML的長處了，先來看看修改後XAML的部分&lt;br /&gt;
&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-attachment: initial; background-clip: initial; background-color: black; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #d1d1d1;"&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;Grid x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;LayoutRoot&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Background&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Transparent&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;RowDefinitions&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;RowDefinition Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Auto&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;RowDefinition Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;*&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;RowDefinitions&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;

        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;!&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;TitlePanel contains the name of the application and page title&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;StackPanel x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;TitlePanel&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;Row&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;0&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Margin&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;24,24,0,12&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;TextBlock x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;ApplicationTitle&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;ApplicationBar Demo&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Style&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;{StaticResource PhoneTextNormalStyle}&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;TextBlock x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;PageTitle&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;XAML&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Margin&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;-3,-8,0,0&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Style&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;{StaticResource PhoneTextTitle1Style}&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;StackPanel&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;

        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;!&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;ContentPanel &lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt; place additional content here&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;-&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;Grid x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;ContentGrid&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;Row&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;1&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;RowDefinitions&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;RowDefinition Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;84*&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;RowDefinition Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;87*&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;RowDefinition Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;446*&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;RowDefinitions&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;TextBox Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;69&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; HorizontalAlignment&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Left&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Margin&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;16,6,0,0&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;tbSelectedItem&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;TextBox&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; VerticalAlignment&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Top&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Width&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;334&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; &lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;Slider Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;Row&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;2&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;31&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; HorizontalAlignment&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Left&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                    Margin&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;6,21,0,0&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;sdChangeOpacity&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; VerticalAlignment&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Top&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                    Width&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;468&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Minimum&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;0&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Maximum&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;100&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; ValueChanged&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;sdChangeOpacity_ValueChanged&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;Button Content&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Change Visible&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Grid&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;Row&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;1&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Height&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;76&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; HorizontalAlignment&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Left&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Margin&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;33,11,0,0&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;btnShowAppBar&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                    VerticalAlignment&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Top&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Width&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;412&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Click&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;btnShowAppBar_Click&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;Grid&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;Grid&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
    
    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;phone&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;PhoneApplicationPage&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;ApplicationBar&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBar IsVisible&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;True&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; IsMenuEnabled&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;True&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;appbar_button1&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            IconUri&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;/Images/img0.png&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Icon-0&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Click&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;IconButton_Click&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;appbar_button2&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            IconUri&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;/Images/img1.png&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Icon-1&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Click&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;IconButton_Click&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;appbar_button3&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            IconUri&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;/Images/img2.png&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Icon-2&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Click&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;IconButton_Click&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;appbar_button4&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            IconUri&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;/Images/img3.png&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; 
                                            Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;Icon-3&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Click&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;IconButton_Click&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarIconButton&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBar&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;MenuItems&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarMenuItem x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;menuItem1&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;MenuItem 1&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarMenuItem&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarMenuItem x&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;Name&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;menuItem2&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt; Text&lt;span style="color: #d2cd86;"&gt;=&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #00c4c4;"&gt;MenuItem 2&lt;/span&gt;&lt;span style="color: #02d045;"&gt;"&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBarMenuItem&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBar&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;MenuItems&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;shell&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;ApplicationBar&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #d2cd86;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #d2cd86;"&gt;/&lt;/span&gt;phone&lt;span style="color: #d2cd86;"&gt;:&lt;/span&gt;PhoneApplicationPage&lt;span style="color: #d2cd86;"&gt;.&lt;/span&gt;ApplicationBar&lt;span style="color: #d2cd86;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;而後置的程式碼也會變得比較單純&lt;br /&gt;
&lt;pre class="c#" name="code"&gt;namespace ApplicationBarDemo
{
    public partial class MainPage : PhoneApplicationPage
    {

        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        //改變ApplicationBar的透明度
        void sdChangeOpacity_ValueChanged(object sender, RoutedPropertyChangedEventArgs&lt;double&gt; e)
        {
            if (this.ApplicationBar == null)
                return;
            this.ApplicationBar.Opacity = e.NewValue / 100;
        }

        void btnShowAppBar_Click(object sender, RoutedEventArgs e)
        {
            this.ApplicationBar.IsVisible = !this.ApplicationBar.IsVisible;
        }

        //applicationBar按鈕按下時的動作
        void IconButton_Click(object sender, EventArgs e)
        {
            ApplicationBarIconButton item = sender as ApplicationBarIconButton;
            tbSelectedItem.Text = item.Text;
        }
    }
}&lt;/pre&gt;到這邊是不是覺得利用XAML來做會比較方便呢；其實在WPF/Silverlight的開發，利用Blend的工具來開發，絕對是比較有效率而且直覺的，所以大多會利用VS IDE或Blend來做介面(XAML)的部分，但是對於程式碼如何去操作元素或是新增/修改畫面上的控制項也是必須要去了解的，當你要"動態"的去建立畫面或是修改畫面，這個時候就必須要利用程式碼來做了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2645676084810380842-5310448529961417158?l=bauann-makeit.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pBpMOFsa1TADC5lCbAUU-BLBV7Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pBpMOFsa1TADC5lCbAUU-BLBV7Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pBpMOFsa1TADC5lCbAUU-BLBV7Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pBpMOFsa1TADC5lCbAUU-BLBV7Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Makeit/~4/2AsM0PNwIO0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bauann-makeit.blogspot.com/feeds/5310448529961417158/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2645676084810380842&amp;postID=5310448529961417158" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5310448529961417158?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2645676084810380842/posts/default/5310448529961417158?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Makeit/~3/2AsM0PNwIO0/applicationbar-demo-xaml.html" title="ApplicationBar Demo (以XAML的方式建立)" /><author><name>bauann</name><uri>http://www.blogger.com/profile/06626210382559971081</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_0E-tYU9RsEo/TGPsGCbsLxI/AAAAAAAAAkI/u09r4y3OPVw/s72-c/appbar_1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bauann-makeit.blogspot.com/2010/08/applicationbar-demo-xaml.html</feedburner:origLink></entry></feed>

