2012年12月7日 星期五

自定對話框按鍵內容

在 Windows Phone 上面若想要顯示訊息對話框,常常會遇到沒辦法自訂按鍵文字的限制,這在對話框的文案設計過程會造成困擾,我們必須設計答案為 "確定"、"取消" 的這種疑問句,或是寫出 "喜歡狗請按 OK,喜歡貓請按 Cancel" 這種不合常理的操作流程。

2012年12月1日 星期六

用過會上癮的 async 與 await

在 C# 5.0 加入了 async 與 await 兩個 Keyword,基本用途是拿來修飾非同步的 Method,只要加上 async 的 Method 包括 Lambda 皆會被當作非同步方法來執行,想起來好像很簡單,用起來還真的也很簡單。

2012年11月30日 星期五

Windows Phone 快速回復

Windows Phone 8 SDK 上新增了一個名為 Fast App Resume 的功能,這個功能主要是開放由開發者決定「當在用戶從動態磚點選已開啟的應用程式時」應用程式要重新開啟一個新的實體或回復原本狀態的方法,在 MSDN 上面有範例可以參考:Fast app resume backstack sample
此篇簡單的記錄一下這個範例的重點,

2012年11月18日 星期日

利用 PowerShell 安裝 appx

如果我們需要在沒有安裝開發環境的裝置上安裝 WinRT 應用程式套件該怎麼做呢?
這篇簡單的記錄一下利用 Windows PowerShell 安裝的方式。

2012年10月25日 星期四

自訂 List 排序規則

如果我們有一個資料結構,成員有 ID、標題、內容文字,
接著我們可以利用 List.Sort 的方法來針對多個物件做排序,
假設我們想要讓用戶可以依照筆劃、注音等方式自行選擇排序規則,
以下是個簡單的範例

2012年10月24日 星期三

字串比較規則

在應用程式中,若可條列出來的資料量不少,通常會幫用戶做排序的動作,
如果是以字串比對排序大小的方式常常會使用 CString.Compare()
但 CString.Compare() 比對大小時,規則是以 Unicode 來比較兩個字串的大小,
在這種情況下,很有可能會發生一種不直覺的現像如下

2012年10月19日 星期五

在以 C# 撰寫的 Metro 應用程式中使用 SQLite

使用 C++ 開發的開源資料庫 SQLite 其實已經支援 Windows Runtime 一段時間了,
但從原始碼編譯出 dll 的過程有不少難關要突破,一位在微軟工作的大大提供了編譯流程的影片,
請參考:http://timheuer.com/blog/archive/2012/06/05/howto-video-using-sqlite-in-metro-style-app.aspx

2012年10月18日 星期四

使用 Facebook C# SDK

Windows Phone 實在是個被大多數廠商冷落的平台,
知名遊戲不做、知名應用軟體的團隊也不願意做,或是做半套意思意思就好,
連 Facebook 也沒有官方的 SDK 可以用,
如果在 Windows Phone 上面想要介接 Facebook 的服務,目前沒有官方 SDK 可以用,
最辛苦的方式就是自己接 Facebook API,再來偷懶一點可以選擇 Facebook C# SDK

2012年9月14日 星期五

取得 Page 的返回值

在應用程式的寫作流程上,難免有些情況必須用到 Dialog 這種對話視窗,
但 Windows Phone 上僅能用 PhoneApplicationPage 的方式來製作對話流程,
傳統上 Dialog 在被關閉後是可以做傳回值的,或是在其被釋放之前可以繼續調用需要的值,

2012年9月12日 星期三

在 Windows Phone Splash 頁面加入控制項

通常 Windows Phone 應用程式的 Splash 頁面只會顯示 SplashScreenImage.jpg
市集上有些應用程式可以在顯示圖片 1、2 秒後在同一頁跑 Progressing 動畫,
這當然也是用很硬做的方式做出來的,目前有幾套做法,

2012年8月25日 星期六

BackgroundAudioPlayer.Volume 設值時機

之前使用 MediaElement 時常常很習慣在建構之後立即設定音量,
例如在擁有 MediaElement 的 Class 建構式中撰寫 mediaElement.Volume = 1.0;

2012年8月18日 星期六

使用 WriteableBitmap.SaveJpeg 需注意壓縮問題

事情的經過是這樣子的,我們有時後會想要從網路上抓一些圖片下來,
並且寫了一支程式定期去檢查是不是換了新的圖片,若已更換圖片,就把新圖也存成檔案,
是不是換了新的圖最簡單的識別方法就是比較已存檔的最新圖片與網路圖片的 MD5

2012年8月11日 星期六

自訂 SettingsPane

在撰寫 Windows Metro App 時需注意一點,
所有與分享、搜尋、設定的入口都要做在 Charms 上面,
簡單的範例 MSDN 上都有,以分享、搜尋來說客製化 Layout 的需求不高,
但設定頁的需求就高得不得了嘍,特別寫篇來記錄如何自訂 SettingsPane Layout

2012年8月3日 星期五

ToastNotification

通常沒有很重要的提示訊息,用 MessageBox 還要用戶自己關閉就太擾人了,
在 Android 上有個 Toast 可以用來通知用戶簡單的訊息,
Windows Phone 上也有 ToastNotification,但必須由背景觸發,頗麻煩,
好在 Windows  8 的 ToastNotification 不論 App 在前景、背景都可以正常顯示。

2012年8月2日 星期四

TW Weather 與 PeriodicTask

從 TW Weather 1.2 版支援動態磚的版本上架後,
差不多再過個一個月左右,開始持續有用戶寄信來告知動態磚更新失敗,
但一直沒有抽出時間好好的檢查原因與改版,

2012年7月31日 星期二

打亂一個 ArrayList

之前想打亂一個 ArrayList 總是用笨笨沒效率的方式…
突然就上網找一下大家都怎麼寫…於是找到這個易懂效率也不錯方式…
以 C# 記錄一下…

2012年7月13日 星期五

GridView + VariableSizedWrapGrid

使用 XMAL 撰寫 Windows 8 Metro Style App 的人應該可以試試看…
若想要寫出像 Windows Store 那樣可變尺寸項目組成的 GridView 是不容易的…

2012年6月24日 星期日

取出 WebView 中的原始碼

手上的 Android 專案需碰到一種使用不太方便的會員認證機制…
某公司開發的會員認證機制是提供我們一個網頁…
用戶自行輸入帳號密碼按了確定後…網頁再經過一連串的 Redirect
最後將資訊直接印在網頁的 body 裡面並做 hidden 處理…

2012年6月6日 星期三

在 Metro App Splash 上加入控制項

在 Windows 8 Metro App 中的設定檔可以指定 Splash 圖片…
除圖片之外還可設定背景顏色…倒是圖片的尺寸有嚴格規定為 620*300
乍看之下會認為 Splash screen 就只能是一張閃過去的 App 圖片…
但像內建的 store 等 App 在 Splash 時會顯示 ProgressRing 又是怎麼辦到的呢…

2012年5月31日 星期四

改用 HttpClient 的理由

之前在寫 WPF、Silverlight 時若是要去某些 REST API 往往是用 HttpWebRequest
這次撰寫 Windows 8 Metro App 時很自然的把之前寫的 class 搬過來用…
卻發現在某些 REST API 取資料時發生怪異現像…

重要的 NavigationCacheMode

在 Windows RT 上做頁面的切換通常會利過 Frame 這個類別…
方法為 Frame.Navigate(typeof(NextPage));

解析網址利器 AfxParseURL

有時後我們會需要從一個很長的 URL 內取出 Host 的部份…
在 MFC 底下不用自己寫…AfxParseURL 是個非常好用的函式…

2012年5月26日 星期六

Debug Certificate expired

最近必須把某個很久沒碰的 Android App 做些小改版…
從 Git 上拿下來立刻編譯看看…結果發生 Debug Certificate expired 錯誤…

2012年5月17日 星期四

Metro App 下使用 Json.Net 的取代方案…

從開始在 Windows Phone 的專案上處理 Json 資料時就一直使用 Json.Net
使用上都沒遇到什麼問題…效率方面也很好…
但最近在寫 Windows 8 Metro Style App 時卻發生一件詭異的事…

2012年4月29日 星期日

Dispatcher.BeginInvoke 取代方案

在舊一點的 Windows 框架上例如 Win32 API、MFC 上面…
如果在背景執行序中想做 UI 的改變…常常會用 PostMessage 等方式…
在 WPF、Silverlight 上是用 Dispatcher.BeginInvoke 等方式

2012年4月28日 星期六

Stream.Read 的限制

在早期寫 WinForm 時…這一、兩年接觸 WPF、Silverlight 時…
如果從網路上取回的資料量在幾 K 之內…
我個人在讀取 Stream 時經常是一次整串讀完…
也就是說我習慣宣告一個長度為 Stream.Length 的 Byte Array

Beans - Windows Phone App

剛完成的 Windows Phone App
一個玩法很簡單的益智類遊戲…

2012年4月24日 星期二

在 WriteableBitmap 上繪製 Image

最近需要利用程式流程產生合適的圖片並儲存成 jpg 檔案…
平常寫 C++/MFC 其實有很大部份時間都是在做畫圖這種事…
用 C#/WPF or Silverlight 還是頭一次…方法大不同…蠻新鮮的體驗…

2012年4月23日 星期一

BackgroundAudioPlayer、MediaElement 共存的注意事項

如果你的 Windows Phone App 同時使用了這兩種播放器…
在 7.1 的機器上可能會發現當 BackgroundAudioPlayer 在 paly 狀態時…
再使用 MediaElement 播放影片或音樂會發生 crash 等不明狀況…

crash when MediaPlayer.Stop()

在 Windows Phone 7.1 SDK 出現後…大家多了 BackgroundAudioPlayer 可以用…
但似乎微軟也對本來的 MediaElement、XnaMediaPlayer 做了一些改變…

2012年4月7日 星期六

台灣統一發票 Windows Phone App

一週前丟了支查詢發票號碼的 App 到 Marketplace 上…
既然寫了…就稍微提一下吧…

Visual Studio 11 Beta Crash

在使用 Visual Studio 11 Beta 編輯 XAML 時…
大概每打幾個字就跳出因 Crash 而要求 Report 的 Dialog…
大概就是這類的訊息 visual studio xaml ui designer ran into a problem

2012年3月31日 星期六

BOXING - Windows Phone App

這是某次睡不著躺在床上亂想之間產生的一個小想法所延伸出來的產物…
實作起來不難…倒是花在畫圖的時間比寫程式的時間多了幾倍…

2012年3月25日 星期日

自訂 Panorama Title 樣式

開發 Windows Phone App 時很常用到 Panorama 元件…
但 Panorama 本身的設計會刻意讓 Title 的上面被遮掉一些些…
前陣子在寫台灣天氣時…正好因為這個特性…讓台灣天氣變成台灣大氣…

2012年3月22日 星期四

TW Weather 台灣天氣 - Windows Phone App

今年年初立下一些年度目標…
其中一個是希望在 Windows Phone 與 Android 上能有些屬於自己的 App

2012年3月19日 星期一

MessageBox 的行為差異

Windows Phone如何在Screen Locked環境運行 這則文章中…
我提到了 ApplicationIdleDetectionMode 屬性的運用…
但設定這個屬性卻可能讓你的 App 發生 Crash

2012年3月16日 星期五

以 Mutex 管理 App 與 BackgroundAgent

Windows Phone 7.1 SDK 以後提供了幾個非常難用的類別…
就先統一稱作 BackgroundAgent 吧…

BackBackgroundImage 顯示本機圖片

在 MSDN 上有特別提到若想在 Tile 的背面顯示本機圖片時的注意事項如下
Tiles Overview for Windows Phone