發表文章

目前顯示的是 6月, 2011的文章

如何安裝與使用Code Snippet

在昨天的研討會中,Live Demo的部分,為了節省Key程式碼的時間,我把常用的WP7.1 API部分的功能整理成了Code Snippet(程式碼片段),這是Visual Studio中非常貼心的設計,讓開發人員的創作速度大增,且相對提高了Coding的正確性。 研討會中Demo的WP7.1的CodeSnippet整理如下:[ 下載 ] 使用方法教學影片:

微軟 Microsoft Developer Day 2011 ...

很感謝大家今天熱情參與微軟 Microsoft Developer Day 2011 ... 今天提到的Mango SDK可從 此處 下載。 今天的投影片可從 此處 下載。 相關的範例展示影片可參考 此頁面 。

Visual Studio 中,VB開發人員熟悉的Shift-F2與Ctrl-Shift-F2

圖片
如果你和我一樣,過去是寫了很多年的VB開發人員(雖然現在多半寫C#, 但我還是很熱愛VB),你應該很熟悉兩個hot key, Shift-F2(跳入特定的Method), 以及Ctrl-Shift-F2(返回原位置),這兩個Hot key對於程式開發的效率有著莫大的幫助。 到了C#開發環境,這兩個Hot-Key不見了,找了一陣子,終於發現這兩個HotKey分別是 Edit.GoToDefinition: 與View.NavigateBackward, 透過VS2010的Option->Environment->Keyboard就可以設定了。

Silverlight 4 ListBox Gesture 手勢捲動功能

圖片
由於最近我們公司,配合下半年度平板電腦的火熱上市,整個將透過Silverlight開發的產品或功能都一律加上Gesture的支援。這讓Silverlight所開發出來的App,跑在目前坊間的Win7平板上所呈現出的效果比起iPad或Android上的App一點都不遜色且有過之而無不及。 然而Silverlight 4不像WP7那麼好命,每一個ListBox或具有卷軸的控制項(例如ScrollViewer)都內建支援Gesture的功能,因此即便跑在平板電腦上,ListBox都需要用卷軸拖曳的方式來捲動,但明明Silverlight就支援Gesture,不能用手勢捲動ListItem似乎有些遜色。 因此我在網路上找到了這組好用的Behavoir... http://lighttouch.codeplex.com/ 下載之後,在你的專案中引用底下幾個.dll即可。 Wintellect.Touch.dll System.Windows.Interactivity.dll System.Windows.Input.Manipulations.dll 如果你想要將ListBox加上Gesture功能,只需要把ListBoxTouchScrollBehavior拖曳到ListBox上: 接著,幫ListBox設計一個ItemPanel,例如(關鍵在GestureListener),完成後大致如下: 最後,幫ListBox的設計一個包含GestureListener Behavior的ItemTemplate即可: 你可以從底下這邊看到預覽的效果: blog.studyhost.com/BlogData/20110611/SilverlightApplication9TestPage.html   你會發現,如果你有支援Multi-Touch的顯示器或是Win7平板電腦,整個手勢拖曳的動作非常順暢,即便你沒有多點觸控設備,這個.dll也支援用滑鼠模擬Gesture,算是挺不錯的設計。 完整的範例程式碼可參考 這裡 。 分享

Windows Phone 7 - Mango (sdk 7.1 beta) First Look - secondary Tile 自訂動態方塊磚

新的Mango,有許多好用的新功能,當然,承襲著Windows Phone 7獨樹一格的UI設計,動態磚早已深受好評,而Mango SDK中動態磚的控制功能當然就是開發人員期待已久的。 過去動態磚之所以這麼命名,就是因為他能動,但過去要能動,似乎要耍點特權,我們第三方應用程式,不僅動態磚非得配合Notification,而且還沒有那種很炫的動態效果,似乎有點差強人意。 在這個版本, 終於,我們可以寫出會動的方塊磚了,而且,還可以一次產生多個,我們甚至可以讓每一個動態磚,在被點選的時候帶入不同的參數到我們所撰寫的程式中: 怎麼做的呢? 主要的API在Microsoft.Phone.Shell命名空間,開發人員可以透過底下的程式碼來建立自己的方塊磚: //方塊磚資料 StandardTileData NewTileData = new StandardTileData { BackgroundImage = new Uri("/Images/People.png", UriKind.Relative), Title = "方塊磚", Count = int.Parse(textBox2.Text), BackTitle = "參數是" + this.textBox1.Text, BackContent = "方塊磚的背面", BackBackgroundImage = new Uri("/Images/PeopleSay.png", UriKind.Relative) }; // 建立方塊磚 ShellTile.Create(new Uri("/MainPage.xaml?TileID="+this.textBox1.Text, UriKind.Relative), NewTileData); 方塊磚依照Create()方

還真的有Bug...

故事是這樣的... 我們公司寫的Silverlight應用程式在正式上線後,客戶用得很開心,對於這個技術和開發人員的努力頗有好評,正當我們被客戶讚的輕飄飄,準備明天跟客戶端的老大demo的時候,前線傳來一個令人錯愕的消息... 用我們寫應用程式的電腦會當...在客戶端3台不同的電腦測試,就像機器得了機瘟一樣,早上還OK,突然間下午全當了,只要進入某一個畫面之後, IE就當給你看,Chrome也死給你看,FireFox就懶得測了。 Demo在即,碰到這種事情,非出面不可了...詭異的是,在家裡連到客戶端的網站,一切OK,我們公司沒有一台機器有問題,都算是很順,只好去客戶那邊看看。到了客戶端,正如客戶所說,沒有一台電腦能夠正常執行,而且客戶強調,早上還OK,就到下午,全不能動了...>_< 這...也太誇張了吧。 測試結果正如客戶所說,很清楚明顯的Run Silverlight的瀏覽器就是卡在那邊不動。 那...到底在run什麼呢? 看不太出來,因為我們知道程式碼只是call一個WCF Services,並且把一堆字串傳到用戶端。當然,我們懷疑過字串的大小,但經過測試,其實才幾十k,比圖片小多了。況且早上都還OK,怎麼下午就不能動了,碰到網路傳輸瓶頸也不會這樣才對。 更詭異的是,如果有資料傳輸的瓶頸,那為何在我們公司OK呢? CPU / RAM / GPU / intranet performance 都測過之後,突然間想到,似乎客戶端所有的PC都是XP,而我們公司所有的PC都是Win7... 果然,在客戶端換了Win7之後,一切正常,回公司換了XP之後,IE當掉。同樣的一段code,怎麼會這樣呢?到底是什麼code有這麼大的魔力...答案如下: if(arg.Result.IndexOf("Info")==0) return; arg.Result是一個string, 如果有經驗的Silverlight developer應該猜的到,這是WCF Services的回傳值,很單純,內容就是字串。 那為何會讓XP當掉呢?又為何Win7沒事呢...答案是...我也不知道...不過好在我不是第一個碰到這個問題的人...請參考底下... http://connect.microsoft.com/Visua

LinqToSql 範例

前幾天在上課的時候,提到了微軟的ORM技術,當然談到了LinqToSql和ADO.NET EF。 過去習慣在.NET 2.0開發應用程式的學員們,自然對Linq語法不是很熟悉,但坦白說,一開始我也很不習慣,但改用Linq一段時間之後,開發速度確實提高了很多,很自然的,現在幾乎不管寫哪一種Code(SL, ASP.NET, class...etc)我依舊都會用到Linq... 連去學校上課也都捨棄ADO.NET直接教Linq,原因是,大一大二的學生,在具備了基本的OO概念之後,要存取資料庫,以Linq搭配ORM,可以省去了學習SQL語法的動作。 前幾天學員問到了Linq的語法實在不是很熟,例如Join怎麼下呢? 如何取得Max或avg呢?,有沒有可以參考的網頁,當然有,就在這裡了... http://msdn.microsoft.com/en-us/vcsharp/aa336746  (C#) http://msdn.microsoft.com/en-us/vbasic/bb688085  (VB) 分享