XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2014/06/25

如何在 Windows Store App 與 Windows Phone App上,取得裝置上的唯一 ID 代碼

如何在 Windows Store App 與 Windows Phone App上,取得裝置上的唯一 ID 代碼,相信很多在寫App的朋友都會遇到這樣的問題,我這裡整理出這兩個平台取得裝置上唯一ID代碼 ( Device ID)的方法。

Windows Phone

        public static string GetHardwareId()
        {
            string ss = HostInformation.PublisherHostId;
            return ss;
        }

其中您可以參考 MSDN 上的說明 HostInformation.PublisherHostId property

Windows Store ( WinRT )

        /// 
        /// 取得裝置的唯一識別代碼
        /// 
        /// 
        public static string GetHardwareId()
        {
            var _Token = Windows.System.Profile.HardwareIdentification.GetPackageSpecificToken(null);
            var _Id = _Token.Id;
            var _Reader = Windows.Storage.Streams.DataReader.FromBuffer(_Id);
            var _Bytes = new byte[_Id.Length];
            _Reader.ReadBytes(_Bytes);

            string ss = BitConverter.ToString(_Bytes).Replace("-", "");
            return ss;
        }

其中,在MSDN上的描述為 : HardwareIdentification.GetPackageSpecificToken 取得表示目前硬體的硬體識別項 (ASHWID)。 為每個應用程式封裝傳回的 ASHWID 會不同。換句話說,當這個應用程式開發介面由兩個來自不同封裝的應用程式呼叫時,就會傳回不同的識別項。當同一個封裝的兩個應用程式呼叫它時,它會傳回相同的識別項。

只要7天,一步一步地學會 MVC (Model view controller) 開發技術

光看字面意義,真的滿吸引人的 『Learn MVC (Model view controller) Step by Step in 7 days』,這好像是台灣在賣藥品或者保養品的廣告;只要短短7天,本商品就可以幫助您年輕10歲。

不過,師父領進門,修行在個人,再好的入門文章、技巧、教學影片、課程,若您之後不自己來修練,說真的,還是無效的。

來看看這個作者的前五天的課程規劃

Day 1: -Controllers, strong typed views and helper classes
Day 2: - Unit test, routing and outbound URLS
Day 3:- Partial views, Data annotations,Razor, Authentication and Authorization
Day 4:- JSON, JQuery, State management and Asynch controller
Day 5:- Bundling , Minification , ViewModels,Areas and Exception handling
Day 6: - Display Modes,MVC OAuth,Model Binders,Layout and Custom view engine

真的滿不錯的,若您實際有打開這些課程連結,您就會發現到作者是相當的用心,每天的課程有著 Youtube 的影片,透過影片的學習,快速地聽老師講解一遍,甚至可以看到老師對於範例的操作過程,有助於您對於 ASP.NET MVC 的觀念與作法上的了解。若您聽不太懂英文,真的有些抱歉,因為,這些影片在 Youtube 上沒有提供翻譯字幕。

最後,這是一個值得推薦的 ASP.NET MVC 課程 (免費的喔 )

可來伴奏王 App 的開發心得

去年九月,公司指派了一個案子,可來伴奏王 App ,這是一個 Windows Store 的App,從剛開始接到客戶 RFP & Wireframe 架構圖來看,困難度似乎沒有這麼高,而且 UX 的部分,也是有專門的人原來設計,我們只需要依照設計出來 UX 切圖,套用到這個 Windows Store App上。





事情如果這麼單純就好,如果是這樣,我也就不會從開發可來伴奏王 App的過程中,學習到各種不同的知識與技能,並且應用這些知識和技能,通過了微軟 MCSD:Windows Store Apps 認證;而我會想要去考 MCSD 認證,也是因為開發可來伴奏王 App過程中,發現到要能夠開發出這樣的App,幾乎用到的 WinRT 所提供的 70% 以上的API,也就是說,若您對於 WinRT生態不是十分孰悉,開發起來,必定是痛苦萬翻;不過,也不要擔心,只要您開發出來了,那麼,這些API您也就學會了。

其中這個App會與硬體廠商做到OEM內建機制,這部分也讓我吃足了苦頭,之前也有做過一的Windows Store App,也是與硬體OEM做到內建,幾乎沒有遇到太大的問題,只是一開始 K 文件比較辛苦,可是在伴奏王這個App,OEM硬體廠商卻怎麼也無法預載他們的機器中,最後,只好請微軟的人幫忙研究與分析,原來是專案中有用到資源檔案,他的檔案名稱是中文字,導致無法預載。

而這個App最為複雜的部份,就是媒體撥放器的部分,其中遭遇到了多音軌音樂不同步、音樂游標不同步、手寫筆記、互動撥放等許多功能,整個糾結再一起,說真的,有如脫韁野馬,也有如滔滔江水,綿延不決,導致一發不可收拾;很高興的是客戶相當的有耐心,與我合作一起把問題逐一解決。

當然,未來的文章中,也會將這個專案中的許多不錯的技巧與做法,寫出來與大家分享。

底下是可來伴奏王的功能說明,當然,若您有 Windows 8.1作業系統,您也可以安裝起來使用看看:
說明
「伴奏王」是一個跨世紀的音樂伴奏網絡平臺,也是一個創新的音樂伴奏工具,不論您是音樂初學者、業餘音樂人士、或是專業的演奏家,「伴奏王」能改變您對音樂練習的傳統刻板印象,「伴奏王」將讓您驚豔音樂學習時的豐富樂趣,並獲得實際又有效的練習成果。

音樂學習過程當中最難受的部分就是得忍受自己一人孤單又乏味的練習,想找人一起練習總是喬不定時間,花錢請伴奏又是一筆龐大的開銷。此時,「伴奏王」正是您所需要的音樂產品,一個能讓您隨時帶著走的專業音樂伴奏軟件。

主要功能:
*音樂伴奏 樂在其中
專業製作的高質感音樂伴奏(非一般網絡MIDI品質),讓您的音樂練習不再枯燥乏味。每一個樂器分部都可以獨立開啟與關閉,就像是使用卡拉OK一樣的簡單。如此前所未有的產品體驗,將一舉改變您的練習方式,豐富您的音樂經驗。

*「隨點即播」- 手點到哪 音樂播到哪
電子樂譜移動光標與音樂播放完全同步,無論第幾頁、第幾行或是任一小節,只要手指輕觸屏幕於想要播放的段落點,音樂便會立即跳至點選處並播放音樂,就是這麽簡單!就是這麽神奇!

*節拍器
每一首曲子均可使用音樂互動式的音樂節拍器搭配練習,即使在漸快、漸慢的段落,內建節拍器依然可以讓您輕鬆地跟隨音樂的節奏。

*自動翻頁
您不再需要擔心翻譜的問題!「自動翻頁」的功能會在每一個需要翻頁的地方跳至下一個頁面,包含樂譜上的反覆記號段落。

*樂譜光標指示器
「伴奏王」平臺的樂譜都有光標顯示的功能,光標顯示與音樂播放能完全地同步,如果您對樂曲還不是那麽熟悉,這個功能可以幫助您精準掌握樂曲的進行。當對樂譜有足夠的熟悉度之後,您也可以選擇關閉此功能。

*數位譜紙 多樣選擇
內建數種不同顏色與風格的電子數位譜,豐富您的曲目收藏,建立您的個人風格。

*樂曲搜尋 輕而易舉
使用包括作曲家、類型、風格、樂器種類、難易度、出版社..,等,多樣之交叉組合過濾搜尋方式,能輕鬆的找到您所需要的曲子。

結合全球一流的音樂出版社的專業音樂伴奏產品,「伴奏王」提供您從古典到流行,從爵士到宗教音樂,從初級到專業的音樂演奏需求。我們精心制作最優質的曲目以及最精美的電子樂譜,以提供不同樂器的多樣練習需求。
顯示較多的項目
功能
音樂伴奏 樂在其中
「隨點即播」- 手點到哪 音樂播到哪
內建節拍器
自動翻頁
樂譜游標指示器
數位譜紙 多樣選擇
樂曲搜尋 輕而易舉

芒果優格

住在我們對面的鄰居,他們在台南有種芒果,幾天前我碰到她,問她說現在芒果一斤多少錢? 她說 30元,我想說,好,若您有空,可否幫我送200元左右的芒果給我呢? 她回覆說,好的,下在我回來的時候,會拿給您。其實,我去年也有買,200元買一大袋,真的會吃到撐、吃到爆、吃到膩。

前天,鄰居送來一大袋,當天就用剩下的牛奶,不足的部分加入奶粉,打成了芒果牛奶來喝,冰冰涼涼,身心暢快,真舒服。

今天,要變個花樣,買盒優格回來,打成芒果優格冰沙來喝,酸酸甜甜,又有芒果的清香,晚餐飯後來上一杯,真是人間一大享受呀;不過,優格最好買不加糖的純優格,這樣會比較好喝。

認識許多有載種農產品的朋友,真是一大福氣,隨時都有好吃的蔬果可以享用。

2014/06/24

Visual Studio "14" CTP 與 Azure,讓您立即體驗 VS2014的新功能

微軟最近推出了下一代的Visual Studio版本,代號叫做 Visual Studio “14”,不過,想要體驗與試用這個軟體,要去下載,而且可能會與現在使用的Visual Studio 2013/2012/2010相衝突,又不想自己使用另外一台機器來安裝這樣的環境或者自己建立一個虛擬主機VM。

最近從我的 MSDN所提供的 Azure 服務中,無意間看到了 Azure 的虛擬主機 VM 服務,正好有提供一款虛擬主機,已經幫您準備好了 [Visual Studio 14 CTP 1]的環境,二話不囉嗦,馬上建立起來,看看有甚麼新功能在未來要推出的 Visual Studio 上呢?

首先,進入您的 Azure 服務網頁,選擇[虛擬主機] > [新增],此時會出現如下圖的畫面,請依序選擇 [計算] > [虛擬主機] > [從組件庫] 選項。


在出現 [建立虛擬機器] 的 [選擇映像] 畫面後,捲動可以選擇的虛擬主機映像,您會看到 Visual Studio Professional 14 CTP 1 (Windows Server 2012 R2),請選擇這個項目。

接這設定您的虛擬機器組態,這包含了虛擬機器名稱(自行決定)、層次(我使用標準)、大小(我選擇 A2 (2核心,3.5GB記憶體)、最後請輸入要登入該虛擬機器的帳號與密碼。

在第三個步驟頁面,關於設定值:雲端服務、雲端服務 DNS 名稱、區域/同質群組/虛擬網路、儲存體帳戶、可用性設定組的參數,我都是維持系統預設的。
在最後一個步驟哩,我選擇了不 [安裝 VM 代理程式],這樣就完成了這台虛擬機器的設定,稍帶一段時間,Azure VM 就建立好了。

此時在 Azure 儀表板上,可看到文字:
VulcanVS14 正在啟動 (正在佈建) Windows Azure MSDN - Visual Studio Professional

一旦虛擬主機建置完成後,馬上利用遠端桌面連上這台剛剛建立好的虛擬機器,登入完成後,在桌面,很快地看到了 [Visual Studio 14 CTP] 圖示,想當然耳的,就是馬上打開來瞧瞧囉。

第一次啟動的選擇設定,這部分似乎沒有太多的變化。
接著要稍待一段時間,做第一次的啟動。
不知道為什麼,Visual Studio Professional 14 CTP一定要我做 Sing in的動作,所以,沒有辦法,只好登入到我的 Microsoft Account Live ID了。
Sign in to Visual Studio
Visual Studio will help you play projects, collaborate with your team, and manage your code online from anywhere.

Visual Studio will automatically keep you signed in, sync your settings between devices, and connect to online developer serivces.


登入完成後,接著建立一個新的專案。
不過,觀察了一下,關於 [Store Apps]類型的專案,似乎和 Visual Studio 2013沒有太大的差異,所以,我選擇了 [Web] 類型的專案,接著選擇 [ASP.NET vNext Web Application] ,看看產生了甚麼?

好像沒有看到 Web.config了,所以,我將 config.json & HomeController.cs & Startup.cs 的內容貼出來。

[config.json]
{
    "Data": {
        "DefaultConnection": { 
            "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnetvnext-e3cd9372-49c2-4e9c-b97d-aa146a1185dd;Trusted_Connection=True;MultipleActiveResultSets=true"
        }
    }
}

[Startup.cs]
using System;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Security;
using Microsoft.AspNet.Routing;
using Microsoft.AspNet.Security.Cookies;
using Microsoft.Data.Entity;
using Microsoft.Framework.ConfigurationModel;
using Microsoft.Framework.DependencyInjection;
using WebApplication1.Models;

namespace WebApplication1
{
    public class Startup
    {
        public void Configure(IBuilder app)
        {
            // Enable Browser Link support
            app.UseBrowserLink();

            // Setup configuration sources
            var configuration = new Configuration();
            configuration.AddJsonFile("config.json");
            configuration.AddEnvironmentVariables();

            // Set up application services
            app.UseServices(services =>
            {
                // Add EF services to the services container
                services.AddEntityFramework()
                    .AddSqlServer();

                // Configure DbContext
                services.SetupOptions(options =>
                {
                    options.UseSqlServer(configuration.Get("Data:DefaultConnection:ConnectionString"));
                });
                
                // Add Identity services to the services container
                services.AddIdentity()
                    .AddEntityFramework()
                    .AddHttpSignIn();

                // Add MVC services to the services container
                services.AddMvc();
            });

            // Add static files to the request pipeline
            app.UseStaticFiles();

            // Add cookie-based authentication to the request pipeline
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
            });

            // Add MVC to the request pipeline
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default", 
                    template: "{controller}/{action}/{id?}",
                    defaults: new { controller = "Home", action = "Index" });

                routes.MapRoute(
                    name: "api",
                    template: "{controller}/{id?}");
            });
        }
    }
}

[HomeController.cs]
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNet.Mvc;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public IActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

若您有 Microsoft Azure 的帳號,可以馬上來體驗一下,若您沒有的話,那也沒關係,因為您可以馬上申請試用 Azure 服務,試用期間是不用錢的。

微軟 Azure 官方網站

Microsoft Virtual Academy (MVA) 微軟虛擬學院

Microsoft Virtual Academy (MVA) 微軟虛擬學院 是我最喜歡的微軟服務之一,MVA如同學武之人夢寐以求的九陰真經一樣,只要您有上過 MVA的課程,就會深深的愛上他這麼扎實與豐富的課程內容以及在最短的時間內可以讓您有如吃了大補丸一樣,立即越深武林前100大高手。

不過,夢想與現實終究是有些落差的,在MVA的課程內,大部分都是使用英文講解,不過,除了線上直播課程之外,錄影課程大多會有提供翻譯字幕功能;不之是幸還是不幸,大部分的字幕還是英文文字,不過,有些課程,您是可以看到已經翻譯過的中文字幕,相信對於學習是必定是大有助益的;不過,總歸一句話,有機會、有時間、有需要的話,還是要把英文練一下吧。

MVA 內的課程都是該課程內容的專家,並且透過線上影音(直播或者錄影)服務,提供您學習各種微軟相關技術,和蓋了 IT,程式設計,雲端服務等等;最重要的是,這些影音教學服務完全都是免費的,您可以放心大膽的來使用,一次看不懂,在看第二次,必定對於您的專業技術能力會有幫助的。


接下來,我們來了解一下,微軟虛擬學院 MVA 有那些功能與課程可以選擇呢?
想要進入到微軟虛擬學院 MVA,請打開這個網址 www.microsoftvirtualacademy.com ,您就會看到如下圖的畫面,若您還沒有 Microsoft 帳號,記得要去申請一個,並且使用 Micrsofot 帳號登入,如此您才能夠享受到更多的服務與功能。


MVA 中,主要提供了五大區塊功能,摘要說明如下:
[Microsoft Virtual Academy]
MVA的首頁,您可以在這裡透過不同的主題或者產品,來選擇適合您的課程;另外,也可以看到最近有哪些線上直播的課程要推出(在右上角區域,如果有興趣的話,可以點選並且報名參加),另外可以看到您的學習計畫的進度,和整個學院的全球與您所在區域的前三名學生。

[Courses]
您可以選擇不同主題或者產品相關的課程,下圖為我平常有在觀看的 C# / XAML 主題相關課程截圖。

您可以查看您所選擇的主題相關的課程,若您對某個課程有興趣,並且現在無法馬上來學習,可以使用 [Add to My Learning Plan] 將這個課程加入到我的學習計劃清單內,日後您可以從 [My Dashboard] 我的儀表板內,查看到您學習計畫中的準備要參與的課程,進而開始新的課程學習;另外,您也可以看到,每個課程都有列出不同困難度的等級 Level 100 是較入門、簡單的課程,而 Level 300,則是較專業、複雜的課程內容;下圖的每個課程最右邊有塊藍色區域,您會看到不同的點數,這代表了,一旦您參與這個課程,並且聽完了整個課程,就可以獲得多少點數,透過這些學習點數,讓您了解到您在MVA的投入程度,並且可以透過整體學習點數,與其他在 MVA 學院的同學來比較,看看您排名在哪個地方,可以用來激勵您學習力並且獲得一些成就感。


[Live Events]
線上事件,可以讓您看到有哪些準備要推出的線上課程(如下圖 Live Events部分),若您對於這些未來準備要,可以馬上報名,一旦完成報名之後,記得下載該課程的行事曆檔案,並且加入到您的Outlook內,這樣,當課程要開始的時候,就會馬上通知您(不過,您要特別注意,課程上所列出的開始上課時間,是太平洋時區的時間,不是我們台灣這裡的時區時間,您的Outlook可以顯示出不同時間的時間,這樣您就會知道實際開始上課的時間,是台灣這裡的幾月幾號幾點鐘;大部分的線上直播課程,大多是我們台灣時間的凌晨 0:0開始。

另外,若您來不急參加線上直播課程,但您想要學這這門課程,您也不用擔心,在下圖的 [Recorded Events] 清單內,您會看到有那些課程已經準備好錄影課程(通常線上直播課程結束之後的兩個星期之後,就會有該課程的錄影課程推出);選擇錄影課程有另外一個好處,那就是會有字幕出現,有些課程,會有繁體中文的翻譯字幕,是個相當貼心的服務。



[My Dashboard]
我的儀錶板,我特別喜歡這個功能,因為,我可以透過 [我的儀表板] 功能,自行調整那些課程學習進度、是否某些課程要優先學習(可以使用滑鼠點擊 上下三角形 區域,拖拉到適當的位置),

[Redeem your vouchers] 兌換優惠券功能,可以立即獲得50點左右的MVA積分,獲得方式也相當的容易,只要您有參加線上直播課程,在 [FAQ] 頁次中,您會看到這個課程的優惠劵代碼,將這個代碼複製下來,到我的儀表板頁面中,點選 [Redeem your vouchers] 兌換優惠券,並且貼上該優惠劵代碼,您就馬上可以獲得積分做為您參加線上課程的獎勵;整體的學習課程的積分會顯示在我的儀表板頁面的右上方;最重要的是,整體積分只是讓您知道您已經付出了多少努力,並沒有任何其他的意義,千萬不要為了衝積分,而做些不好的動作,這樣,反而失去了您參加 MVA活動的意義了。



[Top Students]
最優秀的學生頁面提供了全球與您所在地區的MAV學生,學習與參與度排行榜,您可以查看到 每週 (WEEKLY),每月 (MONTHLY),與累計到現在為止(ALL TIME)的學習積分排名,過高的分數都是代表的不正常的使用MVA系統,因為,這些人並沒有實際在參與、學習 MVA內的課程,完全只是在衝MVA積分;實際上,我們是要能夠透過 MVA 所提供給我們的豐富的課程,提升我們自己的能力,讓我們可以擁有更強大的競爭實力,而經過一年多來的使用與參與 MVA課程(我大多參與C# XAML ASP.NET MVC AZURE 與程式設計有關的課程),真的讓我受益匪淺,而且只要持之以恆的不斷聽 MVA 的各種課程,您的專業能力也在無形中的提升中,這就如同武俠小說中,練習內功一樣,持續修練,一旦到某個程度,您的任督二脈打通之後,您就可以擠身在武林高手之列了(當然,您也可以像我一樣,做個身居深山的傳道者)。


另外,您也可以查看 MVA 某個同學的背景與學習內容,從這裡您也許會看到有些不錯的課程,也是您想要參加的。


結論:從事 IT 行業是條不歸路,我個人是因為這是我有興趣的事情,所以,在從事這些工作的時候,並不會覺得有甚麼不適應;不過,IT業界如同時尚圈一樣,需要我們不斷的在不同時間來充實各種新知識,這樣,才不會被流行的事物給擊敗,因此,唯有不斷的學習與從工作中獲得各種實戰經驗,方可持續對您進行充電。

使用 Windows Phone 的 Facebook App 於寫狀態內容的時候,需要標記好友且好友名字為中文字的作法

當您在使用 Windows Phone 手機,打開 Facebook App,並且要寫最新狀態內容文字的時候,突然想要標記這段文字,指名您的某個 Facebook 好友;不過,若您的好友在Facebook顯示的是中文名字,此如若您輸入 @ 接著使用注音輸入法打入您好有名字的時候,卻發現無法看到自動如下圖紅色框線所標示的您的好友,當然,這個時候,您就無法透過 Facebook App 來標示您的好友了。


若想要解決此一問題,您有兩個做法,一個是使用手寫輸入法,另外一個是使用一般輸入法(如注音輸入法),不過,若您選擇後者的話,需要多幾個步驟要做。


【使用手寫輸入法】


若您的Windows phone 手機上還沒有手寫輸入法,請依照底下說明,啟用手寫輸入法。
》 點選 [設定] 功能,並且選擇 [鍵盤] 選項。
》 在 [設定] >[鍵盤] 畫面中,選擇 [新增鍵盤] 選項
》在 [新增鍵盤] 畫面中,選擇 [中文(繁體) - 手寫] 選項,並且點選最下方的 [確定] 按鈕。
》此時,您剛剛選擇的 中文(繁體) - 手寫 鍵盤就已經可以在您的Windows Phone手機上使用了。

》這個時候,您可以開啟您手機中的 Facebook App,並且點選應用程式列的 [狀態] 按鈕,開始進行輸入您最新的 Facebook 狀態;當您輸入完成您的最新狀態文字之後,可以輸入小老鼠符號 @ 接著,使用手寫輸入法,輸入您好友的名字(姓氏可以不用輸入),如下圖左上方的紅色方塊區域,我們輸入了 @大雅 有好康在這裡,表示想要通知好友 大雅 我的最新狀態。

   接著,請在您的手寫輸入法面板的左下方,如下圖的左下方紅色區域,點選 [繁] 這個按鈕。


》神奇的是,您就會看到您的 Facebook App,可以讓您選擇您好友中,所有 大雅 的好友名單,只要點選您要通知的好友項目,就完成了在寫入最新Facebook狀態內容的時候,也順便標示給您的好友。

在下圖中,我們看到我們要標示的好友為 @大雅,而Facebook App幫我找到了 李大雅 這個好友,我們點選這個好友。

就完成了在寫最新狀態的時候,順便標示好友的需求。

【使用一般輸入法】
接下來的做法,我們不需透過 手寫輸入法 ,也可以做到在更新最新狀態的時候,也可以標示好友的操作方式。

》我們在這裡使用注音輸入法作為示範,我們開啟 Facebook App,並且進入到要寫一個新的Facebook最新狀態的頁面中;接著,把我們要更新的最新狀態文字與需要標示的好友名字都寫出來(記得,只要寫好友的名字,不需要寫全名)。
》接下來,在您的好友名字前面,輸入 小老鼠 符號 @
》這個時候,請將輸入法面板關閉起來,也就是按一下手機上的回上一頁按鈕(通常位於手機顯示面板的最左下方,有個往左的箭頭符號地方)。
》這個步驟也是最神奇的操作,此時,您需要重新點選到您剛剛寫的最新狀態中的任何文字,讓文字輸入法面板可以顯示出來;不過,此時若您還是看不到如下圖畫面中紅色方塊處,您好友的資訊,請切換到英文字的輸入面板(您可以點選左下角的 [繁] 這個文字即可。

神奇的現象發生了,您就會看到您好友的資訊,原來,在注音輸入法的面板中,原本要顯示您好友的資訊的地方,被注音輸入法的智慧提示輸入文字給佔據了,所以,您會看不到您好友的資訊,只要切換到英文輸入面板,就可以看到囉。

若您點選到的文字是英文字,您可切換到數字輸入面板(輸入法面板的左下方的 [&123] 區域,點下去,就可以切換到數字輸入面板了)。

有了這個密技,下次您使用Facebook App就可以在更新您最新狀態文字內容的時候,也可以順便標示您的好友。

在 Windows Phone 多語系應用程式工具組

在您開發 Windows Phone & Windows Store (WinRT) App的時候,若您的App可以支援兩個以上的多國語言文字,必定可以有全球更多的人來認識、安裝、使用,甚至購買您的App;以往要做多國語言支援的時候,需要維護不同語言的資源檔案 .resw,處理起來相當的麻煩,而且,針對不同語系的文字,都需要自己來處理與更新這些文字的翻譯問題。

自從有了 [多語系應用程式工具組] ,這一切的夢厭都隨之煙消雲散了,透過了 [多語系應用程式工具組] ,您可以維護一組語言文字資源,其他的都透過 [多語系應用程式工具組] 幫您來處以,也可協助您使用 Bing 的翻譯工具,自動的翻譯成為不同語系文字,最重要的是,這都是免費的。

最令我激賞的是,這套 [多語系應用程式工具組] 可以支援 Windows Phone & WinRT 的App。

適用於 Visual Studio 2012 的多語系應用程式工具組

一步一腳印:一次只做一件專精的事情,並且把它做到好

這兩年重新回到了程式設計的工作領域,其實,這是我最喜歡的工作,因為,累積了許多經驗、看過許多書;不過,也許是十多年沒有接觸這方面領域,而且各方面的技術也都不斷地進步,所以,我決定回到我最孰悉的範圍,那就是 WinRT / Windows Phone App開發方面(主要針對 C# / XAML),將這兩年的一些經驗與別人經常問到的問題,透過各種不同的小Lab,說明這些需求要如何做到。

當然,首先工作,就是要蒐集那些主題是我要來寫作的對象,我想應該用一個星期的時間,可以不斷地蒐集所要寫作的主題,所以,實際的文章內容,將會從7月1日起,開始陸續寫出來。

一步一腳印,步步要扎實,過慢與過快都不是很好的,穩健地踏出第一步,之後的影色是您所無法想像的美麗。

經過 保哥 指點,我終於學會了如何使用 SyntaxHighLighter 高亮程式碼 在Google Blogger使用方法








    
        
            

                
                
            

        
    

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// 空白應用程式範本已記錄在 http://go.microsoft.com/fwlink/?LinkId=234227

namespace GridViewTest
{
    /// 
    /// 提供應用程式專屬行為以補充預設的應用程式類別。
    /// 
    sealed partial class App : Application
    {
        /// 
        /// 初始化單一應用程式物件。這是第一行執行之撰寫程式碼,
        /// 而且其邏輯相當於 main() 或 WinMain()。
        /// 
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

        /// 
        /// 在應用程式由使用者正常啟動時叫用。其他進入點
        /// 將在啟動應用程式以開啟特定檔案時使用,以顯示
        /// 搜尋結果等。
        /// 
        /// 關於啟動要求和處理序的詳細資料。
        protected override void OnLaunched(LaunchActivatedEventArgs args)
        {
            Frame rootFrame = Window.Current.Content as Frame;

            // 當視窗已經有內容時,不重複應用程式初始化,
            // 只確定視窗是作用中
            if (rootFrame == null)
            {
                // 建立框架做為巡覽內容,並巡覽至第一頁
                rootFrame = new Frame();

                if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: 從之前暫停的應用程式載入狀態
                }

                // 將框架放在目前視窗中
                Window.Current.Content = rootFrame;
            }

            if (rootFrame.Content == null)
            {
                // 在巡覽堆疊未還原時,巡覽至第一頁,
                // 設定新的頁面,方式是透過傳遞必要資訊做為巡覽
                // 參數
                if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
                {
                    throw new Exception("Failed to create initial page");
                }
            }
            // 確定目前視窗是作用中
            Window.Current.Activate();
        }

        /// 
        /// 在應用程式暫停執行時叫用。應用程式狀態會儲存起來,
        /// 但不知道應用程式即將結束或繼續,而且仍將記憶體
        /// 的內容保持不變。
        /// 
        /// 暫停之要求的來源。
        /// 有關暫停之要求的詳細資料。
        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            var deferral = e.SuspendingOperation.GetDeferral();
            //TODO: 儲存應用程式狀態,並停止任何背景活動
            deferral.Complete();
        }
    }
}
SyntaxHighLighter 3.0.83 高亮程式碼 在Google Blogger使用方法