發表文章

目前顯示的是 2010的文章

活動推薦- Imagine Cup

圖片
同學們,Imagine Cup的活動開始了喔;有興趣的千萬先萬別錯過了;詳細資料可以到下面的介紹網頁觀看 http://www.microsoft.com/taiwan/imaginecup/

在WP7 Silverlight應用程式中,要怎麼去偵測目前的主題是黑色或是白色的呢?

最近在自個瞎搞一個簡單的Rss Reader,從網路上把資料抓下來之後,在RSS的資料中,本身會帶有文章的摘要,而這個摘要的部分基本上就是HTML了,想了一些解析方式,最後根據科技始終來自於人性的最高指導原則,顯示的部分就直接餵給webbrowser來顯示了 XDD(我真是懶阿);而在實作的過程中,由於預設WP7是黑色的背景,直接叫webbrowser出來之後會白白一片,說實在挺難看的,所以就偷偷的在HTML裡面加上背景跟文字的顏色,讓顯示出來的背景變成黑的,不過問題來了;在WP7中,白色與黑色的主題是隨時都都可變更的,所以也不能固定一種顏色,那麼就必須要知道目前的主題顏色了,後來在 論壇中看到這篇文章 ,裡面有相當棒的解答,大家可以參考看看,這邊也略為做個筆記,可以利用下面的方式來偵測 //ref:http://forums.create.msdn.com/forums/p/64067/392241.aspx#392241 private bool IsLightTheme() { var visibility = (Visibility)Application.Current.Resources["PhoneLightThemeVisibility"]; return (visibility == Visibility.Visible) ? true : false; } 範例的效果可以參考下面影片

Windows Phone 7推廣用的下載按鈕圖片

圖片
今天看到Nick的Blog上面寫到 Promoting your Windows Phone 7 application 這篇文章,看了一下,原來Microsoft現在有提供Windows Phone 7 應用程式用的下載圖形,比如說下面顯示的這幾個 這些圖形可以讓您連到您的應用程式去,大家可以參考看看;而怎麼去做連結的部分呢?您可以參考MSDN上面的這篇說明(Nick的Blog上也有提到) How to: Link to Windows Phone Marketplace Content

Capability Detection Tool

圖片
在筆者先前的文章 Silverlight for Windows Phone 7:Hello Windows Phone 7 中,有提到WMAppmanifest.xml這個檔案的用途;其中Capabilities的標籤中,就是設定了應用程式會使用到那些功能,而針對這個部分,MSDN網站中也發布了一個新的工具可以來幫助開發者偵測你的應用程式中用到了那些用途,MSDN的說明可以參考 這邊 ,下面筆者簡單說明一下使用的方式。 要使用這個工具,必須要安裝 Windows Phone Developer Tools October 2010 Update 安裝完畢之後就會多了Windows Phone Capability Detection tool可以使用,這個工具是一個命令列的工具,位置在 x64: %ProgramFiles (x86)%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect x86: %ProgramFiles%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect 而使用的方式是開啟命令提示字元,切換到工具的目錄(上述的資料夾位置),輸入以下的命令 CapabilityDetection.exe Rules.xml [您的專案輸出資料夾] 專案資料夾是指定到"資料夾"就可以了,不用指定到xap檔案喔,而執行之後,在命令提示字元的視窗中就會出現檢測的結果,例如下圖這樣 依照這個結果就可以去修改您的WMAppmanifest.xml的檔案內容了。 而這麼做有什麼用處呢?全部都加進去不是最保險?筆者猜想這部分或許將來在應用程式執行時,依據設定檔不同會出現不同的訊息告知使用者,並請使用者確認之後才允許執行;而這個時候明確的告訴使用者應用程式將執行到那些功能會是比較好的方式。 另外,在MSDN中最下面有提到 In some circumstances, you may receive the ID_CAP_NETWORKING capability from the tool even if your application does not use networking. An example would be if you

Gif in Windows phone 7

圖片
今天突然想到,在以往WM5/WM6系列,在系統上是無法正常的顯示Gif圖形的,那Windows Phone 7呢?簡單測試了一下,利用下面的XAML去測試 殘念,還是無法顯示;後來搜尋了一下,幸好有好心的達人有做出相關的解決方案,在 論壇中的這篇 有提到一個方式,是使用CodePlex上的這個解決方案, .NET Image Tools ,就來測試一下吧,首先把組件下載回來之後,必須要加入相關的參考,我這邊只有用到Gif檔案,所以加入的參考是這些 之後再畫面上簡單的只放了一個按鈕,相關程式碼會像是下面這樣 using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using Microsoft.Phone.Controls; using System.IO.IsolatedStorage; using System.Windows.Media.Imaging; using ImageTools.IO.Gif; using ImageTools.Controls; namespace RunDemo { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { ImageTools.IO.Decoders.AddDecoder (); InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { ImageTools.Image img = new ImageTools.Image();

Extension Method in C#

圖片
在.Net中,有許許多多的類別可供使用,那如果想要在已有的類別上去新增自己做的Function,應該要怎麼做呢? 這個時候我們可以撰寫擴充現有類別的程式碼,例如想要幫string來新增自訂的方法,可以加入以下的類別 namespace StringExtension { public static class Extension { public static string ShowMachineName(this string str) { return Environment.MachineName; } public static string AddMessage(this string str, string msg) { return "Hello : " + msg; } } } 要特別注意的地方在下圖紅色框框的地方 要注意的地方是 自行撰寫的類別比需是 public static 的 類別中的function必須是 public static 類型 function的第一個傳入參數必須要加上 this 的關鍵字,而隨後跟著的是要擴充的類別名稱 需要傳入參數的話,則在function中的第二個參數加入想要傳入的參數型態以及名稱 這樣子,就可以幫現有的類別加上擴充方法了;有部分有沒有覺得很奇怪呢?為什麼擴充方法中,第一個傳入的參數是想要擴充的類別型態,又宣告了一個參數,但是都沒有用到阿?這參數是甚麼?這個來設個中斷點,看一下下圖應該就很清楚了 原來第一個參數的內容會是"執行個體"的內容。

ApplicationBar Demo (以XAML的方式建立)

圖片
在上一篇,有提到利用程式碼的方式來建立ApplicationBar,是不是感覺有點冗長呢?同樣的功能我們可以很輕易的用XAML Code來做到;其實在專案一建立的時候,預設就會將相關的程式碼加在XAML中,像是下圖的地方 這個時候就可以發現XAML的長處了,先來看看修改後XAML的部分 < Grid x : Name = " LayoutRoot " Background = " Transparent " > < Grid . RowDefinitions > < RowDefinition Height = " Auto " / > < RowDefinition Height = " * " / > < / Grid . RowDefinitions > < ! - - TitlePanel contains the name of the application and page title - - > < StackPanel x : Name = " TitlePanel " Grid . Row = " 0 " Margin = " 24,24,0,12 " > < TextBlock x : Name = " ApplicationTitle " Text = " ApplicationBar Demo " Style = " {StaticResource PhoneTextNormalStyle} " / > < TextBlock x : Name = " PageTitle " Text = " XAML " Margin = " -3,-8,0,0 " Style = " {St

ApplicationBar Demo (以程式碼的方式建立)

Note:目前開發工具尚未RTM,此版本使用的開發工具為Beta版本,與RTM版本可能略有差異 在Windows Phone 7的環境中,在"功能表的部分也做了變更,現在除了傳統的文字功能表之外,也加入了ICON,而今天就來看看這個部分,主要是操作ApplicationBar與ApplicationBarIconButton,而建立的方式可以由XAML的介面建立,也可以純用程式碼來做,這一篇先來看看程式碼的部分 namespace ApplicationBarDemo { public partial class MainPage : PhoneApplicationPage { TextBox tbSelectedItem = null; Button btnShowAppBar = null; // Constructor public MainPage() { InitializeComponent(); this.ApplicationTitle.Text = "ApplicationBar Demo"; //set up content grid RowDefinition RowOne = new RowDefinition(); RowOne.Height = new GridLength(100, GridUnitType.Pixel); ContentGrid.RowDefinitions.Add(RowOne); RowDefinition RowTwo = new RowDefinition(); RowTwo.Height = new GridLength(100, GridUnitType.Pixel); ContentGrid.RowDefinitions.Add(RowTwo); RowDefinition RowThree = new RowDefinition(

Tech.Days 2010

圖片
各位朋友們, Tech.Days 2010來了,有興趣的朋友記得快報名參加喔~

How to get rowindex / column of a grid control in silverlight?

圖片
這是在國外論壇上看到的一個問題,連結在 這邊 ,測試了一下之後,可以利用下面的方式來抓取;例如做了一個像是下圖的介面 項目的列表是放在Grid容器當中,XAML大致上像是這樣 在點選之後要去抓取被點選項目的相關Index,首先要去Handle Grid的滑鼠點選事件,例如 ContentGrid.MouseLeftButtonDown += new MouseButtonEventHandler(ContentGrid_MouseLeftButtonDown); 之後利用Grid.GetRow來達成,例如 void ContentGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { //throw new NotImplementedException(); int rowindex = Grid.GetRow((FrameworkElement)e.OriginalSource); }

Resource.designer.vb could not be found

今天開啟VS2008要新增Windows Service專案類型時,突然彈出一個找不到檔案的錯誤訊息,從錯誤訊息看起來,大致是說找不到resource.designer.vb相關的檔案,以至無法建立專案;就這樣,Service類型的專案離我而去.. 找了一段時間,測試過重新設定Visual Studio的環境設定,但是無效,瞎搞之下找到了這篇 Missing an item template in Visual Studio 2005? Try this... 開啟Visual Studio command prompt之後,執行 devenv /installvstemplates 讓專案樣版重新安裝一次,之後開啟Visual Studio,總算是回復了;如果有同樣症頭的朋友,可以試試是否可以解決你的問題了。

筆記-NavigationWindow

圖片
甚麼是巡覽式的應用程式呢?巡覽式的應用程式跟網頁的操作,或是跟安裝軟體的畫面過程有點像,先來看看執行起來是甚麼樣子 在上面的地方,可以看到一個像是瀏覽器『上一頁』、『下一頁』的按鈕,而主要的操作方式便是在同一個畫面中,去瀏覽各個不同的『頁面』;接下來就來看看要怎麼做出這樣子的應用程式。 首先建立一個WPF應用程式之後,在預設的狀態下,會建立一個MainWindow.xaml,裡面會有一個Window,xaml的部分會長的像是這樣 < Window x : Class = " WpfApplication1.MainWindow "         xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation "         xmlns: x = " http://schemas.microsoft.com/winfx/2006/xaml "         Title = " MainWindow " Height = " 350 " Width = " 525 " >     < Grid >             </ Grid > </ Window > 那麼首先要先將這個改成NavifationWindow,做為主要的顯示容器,修改之後像是下圖 而在後置程式碼的地方也要修改一下 namespace NavigateTest { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : NavigationWindow { public MainWindow ( ) { InitializeComponent ( ) ; } } } 主要是原先是繼承自Window,現在改為繼

簡單的PDF檔案瀏覽程式

圖片
最近在熟悉WPF相關的環境以及操作方式,而日常作業中又常常會遇到需要使用PDF檔案的情況,PDF檔案一多時(尤其是都從email進來)說實在還真不是很好整理;所以想說是不是能夠做個小程式來瀏覽這些PDF檔案呢?於是就搞了這麼一個初版的小程式。 首先是參考的資料來源, Displaying a PDF file within a WPF application ,裡面的說明相當的詳細,可以直接前往參考,下面所做的程式也是參考這篇而做的。這個做法是利用Adobe的ActiveX元件來做瀏覽的功能,所以在使用之前,目標電腦上 至少必須要安裝Adobe Reader才能夠順利執行 喔,這要特別注意一下。 接下來根據上面連結所提到的,在建立UserControler的時候在工具箱當中,要加入Adobe的原件,以方便我們將控制項拖拉到畫面上,這個部分可以在COM頁籤當中找到,像是下圖 簡單的做好UserControler之後,就要在主要的畫面(XAML檔案)加入這個UserControl了,而由於這是一個COM元件,所以必須要將他放在一個WindowsFormHost控制項當中,這可以在工具箱中找到 接下來在就是主畫面的部分,在功能的部分,我是想做到指定一個基本的資料夾,之後將該資料夾中所有的目錄列在第一層(利用Expender+StackPanel),目錄下面就列出所有PDF檔案,於是做了下面簡單的畫面 在Blend裡面UI的畫面看起來大概像下面這樣 好,接下來就來看看主要畫面的程式碼了 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windo

Application.Doevents in WPF

在以往Windows Form的應用程式中,在長時間的迴圈中需要更新UI的時候,通常會下一個Application.Doevents的指令,用意是讓程式去處理訊息迴圈中相關的訊息,而在WPF中卻已經看不到這個東東了,跑哪裡去了呢?我們可以參考下面這篇 Application.DoEvents in .NET 3.0 ? 其中有一篇MSDN的相關連結,我把相關的程式碼節錄在下面 Public Sub DoEvents() Dim frame As New DispatcherFrame() Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, New DispatcherOperationCallback(AddressOf ExitFrame), frame) Dispatcher.PushFrame(frame) End Sub Public Function ExitFrame(ByVal f As Object) As Object CType(f, DispatcherFrame).Continue = False Return Nothing End Function 或是有另一種方式,利用匯入System.Windows.Forms的命名空間來使用也是可以的。 最後;在這邊也是要提一下,水能載舟,亦能覆舟,在Doevents的使用上要小心,可以利用但是不要濫用,Doevents將控制權放出去之後,甚麼時候會再回到原先被插斷的程式碼位置,這是無法控制的;而如果程式中有過多的Doevents,程式的執行過程會相當難以預測,造成不可預期的結果的。

SQL Server 2008 R2 Express

圖片
SQL Server Express一直以來在於中小型資料庫的使用環境中,是一個非常好而且免費的選擇,而目前SQL Server Express隨著SQL Server 2008 R2的推出,也推出了SQL Server 2008 R2 Express的版本了,有興趣的朋友到 官方網頁下載 以及查看相關訊息吧。 值得特別一提的是,在先前的Express的版本,資料庫的大小上限為4GB,而這次2008 R2 Express的版本則提升到了10GB,這可是一大福音呢。

VS2010 Express

圖片
VS2010已經推出一段時間了,同樣的也有推出 Express的版本,有興趣的朋友可以下載使用;另外,MS也推出了Web platform這樣的安裝平台,可以很方便的安裝各種MS所提供的軟體平台以及工具,上次裝了.Net Nuke安裝過程還體方便的,大家可以試用看看了。 VS2010的下載位製請到 這邊

Winodws Mobile 6.5.3 DTK

圖片
在Windows Mobile 6.5推出後,在系統操作畫面以及方式做了一些更新,新增了Widgets、Gestures(手勢偵測)等功能以及MarketPlace、Myphone等服務;隨後也釋出了Mobile 6.5 DTK,而就在最近,微軟釋出了Windows Mobile 6.5.3 DTK,除了相關文件,library更新之外,在模擬器的部分也做了小改版,今天就簡單介紹一下這個新的DTK。 首先,6.5.3 DTK的下載位置是在 http://www.microsoft.com/downloads/details.aspx?FamilyID=c0213f68-2e01-4e5c-a8b2-35e081dcf1ca&displaylang=en 在下載之前,有些事項要說明一下;在下載頁面中可以看到系統需求列出了下面兩項 Visual Studio 2008 / Visual Studio 2005 (SP1 recommended) .Net compact framework SP2 而如果系統中不包含這些東西的話,在安裝時會出現像下圖的錯誤訊息 而無法繼續進行安裝。這是為甚麼呢?主要是因為在這次的DTK安裝過程中,會一併把Widgets的Visual Studio專案樣板安裝進去,所以才會有這樣的需求產生;而安裝後,原先安裝的6.5 DTK也會被取代掉(像是原先的模擬器等等),所以安裝時要考量一下自身的需求。 好,了解了注意事項後,繼續進行安裝;安裝好DTK之後,開啟Visual Studio會看到多了Widget的專案樣版,如下圖 可以看到Widget的開發功能一併的整合到Visual Studio中了,這是一個挺方便的功能,如果以往有開發過Widget的經驗,在最後的封裝動作我們是必須要手動去將相關的檔案封裝成zip擋,並且改變副檔名;而現在整合到Visual Studio中之後,就可以利用Build的功能去產生封裝擋了,這樣開發上就會變得更加的方便了 而在測試過程中,在筆者的環境出現了問題,新增專案後,在儲存專案的時,Visual Studio會詢問我們專案要儲存到那個位置,但是,不論我選擇哪個存放位置,按下儲存後都會出現下面的錯誤訊息 這實在也是怪事一樁,如果有遇到跟筆者一樣的狀況的話,也請回報一下,還是只有我的

開發 Silverlight 事前準備

最近準備要來學習一些Silverlight的東西,在學習之前要先把開發環境準備好,這篇先把開發Silverlight的相關工具列出,也給大家參考了 Visual Studio 2008 with SP1 (or Visual Studio 2010) Expression Blend 3 Silverlight Tool for Visual Studio Silverlight SDK Document Visual Studio Templates Intellisence More.. Silverlight Control Toolkit Datagrid DataPager ChildWindow TreeView More..

Device Center在Windows 7 x64無法連線

圖片
在系統由x32變成安裝x64的系統時,在跟裝置連線時,可能會遇到Device Center一直告訴你連線失敗的問題,USB連線移除重裝也是無法解決問題,這時候應該怎麼辦呢?請依照下面的步驟來進行 1.將裝置利用USB連接到PC,連接時一樣會看到連線失敗的訊息,這個時候不用去理會這個錯誤,也不要將USB連線移除 2.開啟Windows Update,像是下圖 3.點選Windows Update之後,請點選一下"檢查更新",讓Windows檢查一下,像是下圖 4.之後會看到一個重要更新項目出來   點進去詳細內容會像下面這個 5.接下來就回到安裝更新的畫面,讓Windows Update把更新安裝完畢 6.更新安裝完畢之後,請把USB連線移除,之後再把USB插上,就可以看到裝置順利的跟電腦連線了

[Bug] Visual Studio doesn't break on unhandled exception with windows 64-bit

圖片
在之前一直都是使用32bit的作業系統,加上VS2008在這個險惡的環境中奮戰;一直以來也都相安無事(除了自己手殘產生的bug..),然而為了充分利用NB上裝的4G RAM,在幾經掙扎之後,在月黑風高的夜晚,將工作機重新安裝,從原先的W7(32bit)轉換到W7(64bit),作業系統安裝完成之後,就是一連串的application了,重灌的路真是漫長。重灌完成之後趕緊開啟每天都會使用的Visual Studio,測試了簡單的功能,漂亮,果然跟以往使用沒甚麼不同,所以就安心的去睡覺,沒想到事情就這麼發生了.. 隔天回到公司繼續進行奮戰,開啟專案之後,趕緊繼續的進行除蟲作業;一個階段之後開始進行測試,程式卻不能正常運作,於是就開始利用我最愛的F8(逐步執行),來看看是在哪邊發生錯誤,怪了,在Form_load中怎麼執行到某一行程式碼之後,就直接把Form的畫面帶出來,不繼續偵錯了?而且該行下面的程式碼全部沒有執行,怎麼會這樣,我真的慌了..Orz 繼續測試之後發現該行的程式碼是有問題的,但是照理來說會顯示exception才對,但在IDE環境中,卻都沒有任何exception的錯誤訊息,趕緊做個簡單的測試程式測試一下,於是寫了下面很簡單的測試程式碼 Private Sub Form1_Load ( ByVal sender As System . Object , ByVal e As System . EventArgs ) Handles MyBase . Load Dim i As Integer = 0 Dim j As Integer = 0 MessageBox . Show ( "Message 1" ) i = 100 / j MessageBox . Show ( "Message 2" ) End Sub 執行之後,在輸出視窗中可以看到只有列印出"Message 1"的訊息,之後Form1就跑出來了,"Message 2"就這樣被拋棄了 而除以0應該要產生的OverflowException也沒有發生,真糟;詢問了一些前輩

我的Telnet跑哪去了?

圖片
如果你是使用Windows 7,在進入到命令提示字元之後,鍵入telnet指令,會發現已經沒有這個指令存在了,那怎麼辦呢? 原因是telnet並不是Windows 7預設會安裝的項目,可以到”新增疑除程式”中,”新增移除Windows元件”這邊把Telnet的功能加回來,像是下圖這邊

活動推薦:Visual Studio 2010 修練大會

圖片
各位朋友們,點部落推出了新的活動了喔;在工作之餘,也來參加比賽修練一下喔,增加戰鬥力也有機會拿獎品喔,詳情請參考下面連結 活動網址: http://www.dotblogs.com.tw/dotblogs/archive/2010/01/08/12926.aspx

利用CreateElement在前端產生的HTML,在ASP.Net後端程式碼要如何抓值呢

在撰寫前端(Client)的頁面時,有時會遇到必須要動態的去新增一些Html的Tag,例如說輸入用text等等,那麼這些動態產生的Tag,經過submit到APS.Net的程式碼中要如何去抓值呢?例如前端的HTML是下面的方式 < html xmlns = "http://www.w3.org/1999/xhtml" > < head > < title > </ title > < script type="text/javascript" > function AddEl ( ) { var newText = document . createElement ( 'input' ) ; newText . type = "text" ; newText . setAttribute ( "id" , "newID" ) ; newText . setAttribute ( "name" , "newID" ) ; newText . setAttribute ( "onkeypress" , "KeyPress()" ) ; document . getElementById ( 'content' ) . appendChild ( newText ) ; } function TextChangeEvent ( ) { document . getElementById ( 'labMsg' ) . innerText = "TextChange" ; } function KeyPress ( ) {