Windows Phone 7 Tips (4)
1、Windows Phone 7 中常見的使用WebClient代碼段:
twitter.DownloadStringCompleted += new DownloadStringCompletedEventHandler(twitter_DownloadStringCompleted);
twitter.DownloadStringAsync(new Uri("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=" + TwitterNameBox.Text));
2、在Windows Phone 7 程序Deactivated的時候,我們需要處理程序的持久化數據和瞬態數據。
A、將持久化數據保存到IsolatedStroage。
B、在App.xaml.cs的Deactivated事件中處理應用程序瞬態數據,將應用程序瞬態數據保存至PhoneApplicationService.State中。
C、在頁面的OnNavigatedFrom事件中處理頁面瞬態數據,將頁面瞬態數據保存至PhoneApplicationPage.State中。
3、對于通過WebClient獲取到的XML數據源 ,我們可以使用Linq To XML 方便操作,獲取其屬性以便綁定:
TwitterList.ItemsSource = from tweet in xmlTweets.Descendants("status") select new TwitterItem{message = tweet.Element("text").Value};
4、在使用linq to xml需要注意返回的xml數據有沒有含命名空間。
這個是從tweet search wp7 項目中截取的部分返回xml數據,注意是返回xml數據中包含命名空間。
則使用linq to xml 處理數據時也需要加上命名空間,tweet search wp7 項目處理代碼如:
如果返回的數據不包含命名空間,如下:
則處理代碼如下:
5、在Visual Studio 默認并沒有NavigateToEventHandler的快捷鍵,我們可以自行定義:
選擇菜單欄--> 工具---> 選項,找到 鍵盤節點,在搜索框中輸入NavigateToEventHandler,會找到EditorContextMenus.XAMLEditor.NavigateToEventHandler,然后按快捷鍵Ctrl+G+T(當然你可以自行定義),點擊Assign:
這樣我們就可以使用快捷鍵Ctrl+G+T了,就不需要右擊選擇轉到事件處理,其實我們可以看到快捷鍵已經添加到右擊選項中了:
6、Windows Phone 7 中應用程序設計需要遵循的Three Red Threads: Personal、Relevant、Connected。
7、在Windows Phone7中取得屏幕截圖(轉自http://mxmxm.com)。
分享一個取得屏幕截圖的代碼,但是由于程序不能在后臺運行,所以只能通過按鈕或者菜單取得截圖,然后把圖片保存在相冊中。
{
WriteableBitmap bmp = new WriteableBitmap(480, 800);
bmp.Render(App.Current.RootVisual, null);
bmp.Invalidate();
MemoryStream stream = new MemoryStream();
bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 80);
stream.Seek(0, SeekOrigin.Begin);
MediaLibrary library = new MediaLibrary();
string filename = "ScreenShot_" + DateTime.Now.ToString("yyyy-MM-dd_hh:mm:ss");
library.SavePicture(filename, stream);
stream.Close();
}
8、讓我們的phone 7 震動:
vib.Start(TimeSpan.FromMilliseconds(100));
9、WPF的資源的資源包括靜態資源(StaticResource)和動態資源(DynamicResource),他們之間的區別是:
靜態資源在第一次編譯后即確定其對象或值,之后不能對其進行修改。動態資源則是在運行時決定,當運行過程中真正需要時,才到資源目標中查找其值。
10、在windows phone 7中我們只需關注靜態資源(StaticResource)