「令人期待的 NOKIA Windows Phone 終於在台灣上市了,不知道各位讀者是否都與主編一樣──人生中的第一台手機就是 NOKIA 生產的,雖然過去幾年沒有太多 NOKIA 的聲音,但這次它們捲土重來,絕佳的工業設計讓智慧型手機好像增添了新的生命及光采,有機會在一片黑嘛嘛、四四方方的智慧型手機中脫穎而出,你是否已經訂購了一台 NOKIA 的 Windows Phone 呢?

  而 MSDN 這幾個月來,因應 Windows Phone 正式在台上市,也一連串舉辦了多場 Windows Phone 應用程式的開發課程,場場爆滿,可見許多開發者都希望在這個新興的平台上找到新的機會,除了展現自己的開發實力之外,也有機會開發新的利潤來源,主編我相當看好 Windows Phone 的應用市集平台的成長,因為 Windows Phone 的開發工具是最容易上手的,對於傳統的微軟技術開發者來說,使用 .NET 開發框架加上 Visual Studio 的開發環境,維持了一貫的微軟技術開發體驗;而對於剛接觸微軟開發技術的朋友,也能夠在功能強大開發工具、順暢的模擬器等等找到讓人興奮的開發體驗,所以我相信我們很快就會看到許多有趣的應用程式出現在 Windows Phone 的應用市集之中。

  除了 Windows Phone 之外,從九月開始陸續揭露的下一代 Windows 平台也愈來愈多新聞,我們可以看到新的 IE10 預覽版本支援了更多 HTML5 的標準規格,讓開發者能夠運用於網頁做更多應用 (更多細節可參考這個部落格)。同時在新平台上的 Windows Store 也有了初期的面貌,細節的部份也請讀者閱讀這篇部落格的文章

  最後,2011 年也接近尾聲了,今年微軟發表了很多新一代、下一代的開發技術平台,對於開發人員來說能夠發揮的舞臺愈來愈多了,趁著天氣變冷不常外出走動,努力一點學習這些新的開發技術,我想,在 2012 年發光發熱的開發人員就是你了!

台灣微軟開發工具暨平台推廣處 應用開發技術副理 上官林傑

您在註冊 Windows Phone 的開發帳號遇到問題嗎?

  許多開發人員在 AppHub 網站註冊開發帳號時都會發現有刷卡刷不過的問題,目前 Windows Phone Marketplace 相關團隊已經著手修復這個問題,若您運氣不好碰到了問題,可以試著下面的方法看看能不能解決無法付費的問題:

  1. 將信用卡資訊移除後,再重新加入一次再刷(信用卡驗證的動作會有一筆 NT$40 的交易記錄,這是為了驗證信用卡而並不會請款,請不必擔心)
  2. 將下列網站的個人資料調整一致,並且在 Location 或 Region 的欄位確認是 Taiwan
  3. 改至 http://xbox.create.msdn.com/sendtoxboxcom.aspx 頁面付費
  4. 寄信給 apphub@microsoft.com 尋求協助,並盡可能地附上您的 Live ID、完整姓名等,它們會協助通過 我們很抱歉網站出了這樣大的問題,而造成您的不便,希望您能多多包涵,並且繼續支持我們的開發平台。

Windows Phone 7 Apps開發攻略 - 第參章 TextBox

序言

  近期和 Window Phone 相關的重大新聞,應該就是手機大廠 Nokia 也一口氣 發表了兩隻號稱「真正的 Windows Phone」的手機,而且年底就會在台灣開賣的消息囉 !! 還沒入手 Windows Phone 或是想換機的朋友們,可以開始密切注意 相關的消息喔 !! 而台灣微軟也沒忘記要照顧廣大的開發者朋友們,在十一月 ~ 十二月間也舉辦了數場的免費課程,活動網址 ,有興趣投入開發的 朋友們不妨參考看看喔 !!

  上一期的文章中跟各位朋友們分享了 Silverlight for Windows Phone 中內建的佈局容器;而這一次,就來跟大家分享一下用來輸入文字的 TextBox 控制項。沒錯,就是 TextBox !! 這個控制項只要是有接觸過程式設計的朋友們應該都有用過,但是,為什麼要特別拿它來大作文章呢?因為在 Silverlight for Windows Phone 裡的 TextBox 控制項為了要讓使用者有更好的使用者體驗,因此多下了些功夫,和其他平台的 TextBox 控制項有些許的差異。這次就與大家分享關於 Silverlight for Windows Phone 中 TextBox 控制項使用上需要注意的屬性以及小技巧。

TextBox 與 InputScope

  在沒有外接鍵盤或是內建的實體鍵盤支援的 Windows Phone 裝置上,當使用者點選了 TextBox,就會自動帶出虛擬鍵盤供使用者進行文字的輸入。而 Windows Phone 內建的虛擬鍵盤就有好幾種不同的按鍵配置方式,以符合不同的輸入情境和需求。要針對 TextBox 設定不同的按鍵配置方式很簡單,只要透過設定它的 InputScope 屬性即可。以下就簡單的列出幾種常見的虛擬鍵盤配置:

預設鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top"/>

  符合一般的使用情況,除了英文字母之外,也提供了切換為數字輸入模式和標點符號輸入的功能。

聊天、內文鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope="Chat"/>

  除了基本的輸入功能外,還加入了表情符號輸入的功能,以及智慧候選字詞的 功能。

Email 位址鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope=
"EmailUserName "/>

  提供常用到的 @ 符號和 .com 按鍵,且長按 .com 鍵的話會多出 .edu、.org、.edu 以及 .net 等常見域名可供選擇。

姓名或電話號碼鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope=
"NameOrPhone Number"/>  

  以 Email 位址鍵盤配置為基礎,但將 .com 鍵以;(分號) 鍵取代,以方便用來輸入多個 Email 位址。

網址鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope="Url"/>  

  類似 Email 位址鍵盤配置,但是少了 @ 按鍵,而長按「.」鍵的話,則會跳出網址中常用的符號可供選取;另外,原來的 Enter 鍵也改為了更顯眼的瀏覽示意箭頭。

貨幣及地址鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope=
"AddressStreet"/>

  預設提供數字及基本符號可供輸入,切換到英文輸入模式則為預設鍵盤配置。

電話號碼鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope=
"Telephone Number"/>  

  除了一般電話鍵盤上有的按鍵之外,還多加了「-」和「.」符號。

數字鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope="Digits"/>

  只提供數字和小數點的輸入。

搜尋鍵盤配置

<TextBox x:Name="textBgnmentox" VerticalAli="Top" InputScope="Search"/>

  在標準鍵盤配置上加入了智慧候選字詞的功能,另外也將 Enter 鍵改為更顯眼的瀏覽箭頭。

公式鍵盤配置

<TextBox x:Name="textBox" VerticalAlignment="Top" InputScope="Formula"/>

  在標準鍵盤配置上加入了智慧候選字詞的功能,另外也多了一個「=」鍵的按鈕,長按=鍵則會跳出更多公式中常用的符號可供選擇。

  除了以上簡紹的幾種 InputScope 之外,微軟也很貼心的幫我們把目前支援的 InpupScope 以一個列舉型別封裝好了,所以工程師們也可以輕鬆的以程式碼來作到 InputScope 的設定 ,寫法如下:

                                InputScope inputScope = new InputScope();
InputScopeName inputScopeName = new InputScopeName();
inputScopeName.NameValue = InputScopeNameValue.Chat;
inputScope.Names.Add( inputScopeName );
textBox.InputScope = inputScope;

  或是寫成:

textBox.InputScope = new InputScope();
textBox.InputScope.Names.Add( new InputScopeName { NameValue = InputScopeNameValue.Chat } );

  這樣就可以輕鬆的設定 InputScope 屬性啦 !!
  另外,對於設計師來說,直接使用 Expression Blend 4.0,也可以直接透過下拉選單來更輕鬆的設定 TextBox 的 InputScope 屬性喔 !!

額外小叮嚀:

  雖然只是一個簡單的設定屬性的動作,但是對使用者體驗來說,可是有極大影響的。在設計 App 時,除了華麗的使用者介面之外,可千萬別忽略這小小的 TextBox 和 InputScope 屬性。

  只要我們多替使用者著想,預先設定好 InputScope,就可以減少使用者在文字輸入方面可能遇到的障礙;千萬別因為偷懶或是 InputScopt 設定不當,而增加了使用者進行文字輸入時的複雜度,這樣可是得不償失的,而且很容易給使用者帶來負面的觀感喔 !!

AcceptsReturn 與 TextWrapping 屬性

  在原生的 Silverlight for Windows Phone 上面並沒有特別提供另一組可以用來輸入多行文字 (類似 HTML 中的 TextArea) 的控制項,而是一樣得透過 TextBox 一手包辦多行文字的輸入。這個時候,TextBox 的 AcceptsReturn 和 TextWrapping 這兩個屬性就顯得特別的重要。

  我們先簡單的在畫面中放一個 TextBox 如下,看看在預設的 TextBox 中輸入 超長的文字會發生什麼事:

<TextBox Name="textBox" Text="這是一個簡單的測試,在預設的情況下,文字是不會自動換行的!!"/>

  就算我們想透過虛擬鍵盤上的 Enter 鍵來達到換行的效果,也不會有任何反應。

   首先來看看 WMAppManifest.xml 的內容,這個檔案可是定義整個應用程式 相關資訊和功能的地方喔 !!

  這個時候,AcceptsReturn 這個屬性就派上用場啦 !!,我們只要簡單的將 TextBox 的 AcceptsReturn 屬性設為 True,一切就變得不一樣了 !!

<TextBox Name="textBox" Text="這是一個簡單的測試,在將 AcceptsReturn 屬性設為True 的情況下,TextBox 就可以按受換行喔 !!"  AcceptsReturn="True"/>

  那麼,前面提到的 TextWrapping 屬性呢?如果我們希望文字會依據 TextBox 的寬度自動換行的話,用它就對了 !!

<TextBox Name="textBox" Text="這是一個簡單的測試,在將 TextWrapping 屬性設為 Wrap 的情況下,TextBox 裡的文字就會自動換行喔 !!" TextWrapping="Wrap"/>

額外小叮嚀:

  AcceptsReturn 屬性和 TextWrapping 屬性可以混合使用。但是要注意的是,經由 TextWrapping 自動換行的文字,透過 TextBox.Text 屬性去取值的話,文字還是都會完整的接連在一起;但是,透過 AcceptsReturn 屬性由使用者透過 Enter 鍵進行斷行的話,去取得 TextBox.Text 的值時,裡面就真的會出現斷行字元 ("\r") 喔 !!

透過程式自動跳到下一欄位的小技巧

  Silverlight for Windows 裡的 TextBox 一樣提供了 TextChanged 事件可供我們在使用者進行文字輸入的瞬間就觸發程式的處理函式。我們可以藉由這個小技巧,來作到當使用者輸入的值符合特定條件時,自動幫使用者將目前的焦點移到另一個欄位或是控制項上。

例如:

<StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
    <TextBlock x:Name="textBlock" TextWrapping="Wrap" Text="您的帳號:"/>
    <TextBox x:Name="txtAccount" MaxLength="8" TextChanged="txtAccount_TextChanged" />
    <TextBlock x:Name="textBlock1" TextWrapping="Wrap" Text="密碼:"/>
    <TextBox x:Name="txtPassword" MaxLength="8" />
    <Button x:Name="button" Content="登入"/>
</StackPanel>

MainPage.xaml (節錄):

  MainPage.xaml.cs (節錄):
  透過以上程式碼,只要 txtAccount 輸入滿 8 個字元,控制項的焦點就會自動轉移到 txtPassword 上,很簡單吧 !!

透過程式隱藏虛擬鍵盤的小技巧

  而要透過程式來隱藏虛擬鍵盤也不是不可能的事,只要將 App 中取得焦點的控制項移到非 TextBox 的控制項上就行了 !!
承襲上個範例:

  MainPage.xaml (節錄):

<StackPanel Orientation="Vertical" VerticalAlignment="Top"> 
    <TextBlock x:Name="textBlock" TextWrapping="Wrap" Text="您的帳號:"/>
    <TextBox x:Name="txtAccount" MaxLength="8" TextChanged="txtAccount_TextChanged" />
    <TextBlock x:Name="textBlock1" TextWrapping="Wrap" Text="密碼:"/>
    <TextBox x:Name="txtPassword" MaxLength="8"  TextChanged="txtPassword_TextChanged" />
    <Button x:Name="button" Content="登入"/>
</StackPanel>

 

                                private void txtAccount_TextChanged( object sender , System.Windows.Controls.TextChangedEventArgs e )
{
    if( ( sender as TextBox ).Text.Length == ( sender as TextBox ).MaxLength )
    {
        txtPassword.Focus();
    }
}

  MainPage.xaml.cs (節錄):
也不難吧 !!?

  這次的分享就到這邊 ~ 下一次,再來與各位針對 Silverlight for Window Phone Toolkit 進行更深入的分享和介紹喔 !! 我們下次見 !!

其他相關資源:

作者:微軟最有價值專家 (MVP) – 劉耀群

Q:web 專案參考 dll,發佈置 iis 上找不到指定的檔案?

Q:Tile 的問題

A:請參考:Live Tiles in Windows Phone 7.5 or Mango phone (英文)
or Windows Phone 7 - 學習新的 Secondary Tile 與 Application Tile (中文)
★瘋芒果同樂會★
最近大家都在討論一顆神奇芒果,可以玩FB、玩遊戲、還可以幫你工作,還不認識它嗎?就快來跟我們一起認識它吧!
★開發金湯匙★
Visual Studio 2010 with MSDN 訂閱上市後空前優惠,把握良機,買到賺到!
★WP7 APP 挑戰賽★
實戰現在最熱門的 App 程式設計的 Windows Phone 7 App 挑戰賽來了,11/1 ~ 12/15 活動期間,完成指定 App 設計並通過 App Hub 審核者,就有機會得到好禮!
★Imagine cup★
如同奧運,潛能創意盃每屆的全球決賽都由不同國家舉辦,屆時將有約 400 名的全球菁英群聚於此,互相切磋與交流。這是一個代表國家角逐全球最高榮耀的機會,更是一個讓世界看到你的舞台!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Building a Mango App
Better Web Forms with HTML5
 
Windows Phone Starter Kit for WordPress
Windows Phone Starter Kit for Schools
Windows Phone 7 Connector (for Mac)-Beta
Microsoft Advertising SDK for Windows Phone
Windows Phone 開發實戰書籍
Windows 8 Will Bring Personal Cloud to Billions, Says Microsoft
超好用!Expression 學習包
Silverlight 應用程式中如何正確播放音效
Building Offline Experiences with HTML5 AppCache and IndexedDB
 
 
 
 
 

  還記得在那炎熱的夏日,小編與大家吃著冰棒閒聊芒果的日子嗎?如今,樹上的芒果都紛紛成熟,甚至有許多芒果熟透了而落了下來,就讓我們開始享用這些經過養分滋養、時光粹練,最終孕育而生的金黃色奇蹟吧!

社群整合,聯絡更便利

  在 Mango 中,只要在第一次登入你想要加入的各種帳號,上面的聯絡人、訊息、照片等等就會經由網路及雲端被同步下來,在聯絡人頁面中好端端的呈現出來。目前在 Mango 裡可以登入的帳號有 Windows Live、Facebook、Google、outlook、Yahoo Mail、Twitter、LinkedIn 及 POP3、IMAP4 帳號。 由於 MSN 是咱們微軟自家的小孩,所以使用上不需要額外安裝 MSN 的 APP,只要登入帳號就可以使用,對於小編這種懶鬼可是一大福音呢!

相片分享,標籤更快速

  路上隨手拍張照,或是在朋友聚會拍張合照、團體照,此時就會想要即時上傳到網路上與豬朋狗友,啊不是!是親朋好友分享,這時候把選項開啟就可以立即在 Facebook 上分享,或是透過訊息、郵件等等有登入的服務,如果有登入 Windows Live 帳號,還可以直接上傳到 SkyDrive。

  而我們最喜歡的 Facebook 標籤功能自然也不會少,在 Mango 中直接就可以標籤出我們的叔叔阿姨嬸嬸阿公阿罵。如果要看朋友的 Facebook 或 MSN 相簿,除了聯絡人,相片夾裡也有一個「聯絡人」的項目,點進去後你可以選擇要看的聯絡人,他就會被拉出來變成單獨一個相片磚,經常想關注的朋友的相簿(比方想追的那個女生),就可以這樣單獨處理,是不是有種 VIP 相簿的感覺阿?

文件編輯,自家最好用

  Office 的應用在 Mango 上是強項中的強項,這到是令人不意外,因為畢竟是自家的小孩,哪有不聽話的道理!(謎:小編有聽話嗎?) 哎呀!不管怎樣,如果在一封 Mail 裡有各種格式的 office 文件附件的話,可以直接下載,下載完直接開啟,比方 doc 或 excel 文件開啟後就可以編輯。經過編輯的文件,最後另存新檔,不僅可以存到手機記憶體裡,也能轉存到 SkyDriver 上。另外,如果附件是有動態的 Power Point 檔,它也可以完整的顯示出投影片的動態。

微軟雲端,芒果飛上天

  Mango 許多功能都能夠立即與線上或是雲端做整合,使用者只要登入好 Windows Live 帳號後,基本上就等於登入了 SkyDrive,進入 Office,點選 SkyDrive,就可以看到存放在上面的檔案了,接下來就可以直接下載儲存。然而在上網順暢度方面,可以說是不輸給市面上其它雙核心的系統,Mango 中的瀏覽器是內建的 IE9 手機版,跑起網頁來可以說是咻的一下;此外,之前也有提過 Mango 將不支援 Flash 瀏覽器,而獨鍾 HTML5,因此在某些網頁部分就要稍加注意。而在瀏覽網頁文章時,只要輕輕點兩下螢幕就可以讓文字自動適合頁面寬度,更方便使用者閱讀。

拍照蒐尋,翻譯好直接

  Mango 內建的搜尋引擎同樣也是自家的 Bing 搜尋,大家或許使用慣了別人家的搜尋引擎難免不習慣,但是這邊就讓小編跟大家說個好玩的東西,就是拍照搜尋的功能。只要使用者拍下一份文件,或是一段文字,Mango 就會自動辨認單字或是文字,使用者就可以將想要查詢的字或是整段進行翻譯,或是選擇起來做為關鍵字去搜尋網頁還是圖片。

  嘩!一顆外表看似簡單的芒果,其實內藏許許多多的驚喜,說的小編口水都快流下來了,在目前已經上市的除了有 HTC Radar、HTC TITAN,Nokia 也祭出 Nokia Lumia 710 與 Nokia Lumia 800 來搶攻芒果這塊大餅,而在這場芒果大戰中,究竟誰會勝出呢?小編哪管那麼多啊!反正吃芒果就對了!

 
 
 
© 2011 Microsoft Corporation. 著作權所有,並保留一切權利。 使用規定 | 商標 | 隱私權聲明 | 取消訂閱