發表文章

Silverlight toolkit中的Theme控制項

圖片
先前我們曾經提到過,Silverlight的所有控制項,都可以透過Style的方式來替換呈現的外觀樣式,當然這些樣式你必須自行設計,不過在Silverlight Toolkit當中,已經內建了數種樣式可以讓開發人員直接使用,同時Silverlight Toolkit當中也提供了相對應的Theme控制項,讓您可以很方便的動態切換外觀樣式如果你安裝了Silvelright toolkit,可以在場景中最下層墊一個Theme控制項: <!--在Grid控制項外墊一個Theme--> <toolkit:Theme Name="theme1" > <!--Grid中的控制項可以自由佈置--> <Grid > <Button Margin="19,79,0,0" Content="ShinyBlue" Name="Button1" Click="Button1_Click" /> <sdk:Calendar Name="calendar1" /> <sdk:DatePicker Name="datePicker1" /> <ProgressBar Name="progressBar1" /> <Button Content="RainierOrange" Name="button2" Click="button2_Click" /> </Grid> </toolkit:Theme> 接著,請在Button上撰寫底下的指令碼: private void Button1_Click(object sender, RoutedEventArgs e) { //切換成ShinyBlue theme1.ThemeUri = new Uri("/System.Windows.Controls.Theming.ShinyBlue;component/Theme.xaml", UriKind.RelativeOrAbsolu...

Silverlight Data Binding中的Static Resources Binding

圖片
最近我在上課中曾經提到,Silvelright的Data Binding機制是如何地與過去ASP.NET和WinForm不同,這一部分一直是我非常熱愛Silverlight技術的原因,從最簡單的Data Binding機制,到Validation然後是data annotation,接著是Element to Element Binding,各式各樣精彩豐富的資料處理機制和效果,全部都藉著Data Binding技術來實現,連MVVM裡面都有Data Binding的影子... 而Silvelright技術的Data Binding又和ASP.NET/WebForm如此的不同,叫人又愛又恨,愛的是它功能之強大,幾乎可以說是貫串整個Silverlight開發架構,而讓人討厭的則是他和過去ASP.NET與WinForm時代的data Binding有那麼些許的不同。 然而,不管怎麼說,學習Silverlight時Data Binding絕對是你無法忽視的一大塊重要領域。這也是我Silvelright 4.0新書中花了將近萬把字很認真很努力的把Data Binding說個仔細的原因。雖然如此,我最喜歡的還是在課堂上和學員們分享Silverlight的Data Binding技術,上一期 課程 的學員應該可以很明顯的感受到,我們在Data Binding和N-tier架構概念的介紹所花的時間與精力。 原因都只有一個,因為Silverlight的data Binding非常、非常重要! 同時間由於VS2010開始支援Silvelright的所視即所得設計,你會發現我們可以在VS2010中點選某個UI物件,物件的幾乎每一個屬性都可以設定Binding,而除了Element To Element Binding之外,讀者一定常常看到在微軟官網介紹的Silvelright應用程式中,常常利用Data Binding技術Bind到一個或多個Static Resources。 這種場合相當特別,一般來說,我們在ASP.NET/WinForm是沒有這種概念的,Data Binding 繫結到的資料來源都是後面(後端,例如DB)傳過來的,但Silverlight的Data Binding由於是Bind到一個Object,所以可以寫程式new一個Object,然後Bind起來。 可是,往往我...

MSDN Flash專訪

接受MSDN Flash專訪, 有興趣的朋友們可以參考底下網址: http://msdn.microsoft.com/zh-tw/cc524082.aspx#a5

關於Silverlight的Style機制與ResourceDictionary

前幾天在 FaceBook專頁 上 明城 提到了關於Silverlight中的Style機制,才恍然想起在先前的Blog和書上幾乎都完全沒有提到ResourceDictionary這個在SL3之後被加進來的物件,因此趁著SL4的書籍在做最後階段的整理,順便在Blog上提一下這個物件。 ResourceDictionary讓我們可以在宣告Resource時,以Dictionary的方式來建置,例如: 這樣有一個好處,ResourceDictionary是繼承自Dictionary類別的物件,當Resource非常多的時候,或是Resource是動態載入的時候,開發人員可能無法記得或熟知每一個Resource的名稱,我們可以透過底下這樣的程式碼在ResourceDictionary中確認某一個資源設定是否存在: //判斷TextBoxStyle1是否存在 if (this.RD1.Contains("TextBoxStyle1")) { … } 因此,當資源被放置在ResourceDictionary中之後,我們也可以透過程式碼來動態的設置樣式,例如: private void button1_Click(object sender, RoutedEventArgs e) { //判斷TextBoxStyle1是否存在 if (this.RD1.Contains("TextBoxStyle1")) { //套用Resource this.TextBox1.Style = RD1["TextBoxStyle1"] as Style; this.TextBox2.Style = RD1["TextBoxStyle1"] as Style; this.TextBox3.Style = RD1["TextBoxStyle1"] as Style; } else { MessageBox.Show("找不到此資源"); } } private void button2_Click(ob...

以擴充方法替Canvas, Grid...等容器建立淡入淡出效果

圖片
從.NET的語言導入的擴充方法之後,我一直覺得它是一個挺方便的技術。 而開發環境的配合,也讓擴充方法的便利性更加的高。 舉個例子來說,我們寫了一段以程式碼動態為按鈕建立滑鼠移過時的淡入淡出效果,透過擴充方法,我們可以在主程式當中這樣使用: 圖中的ButtonPanel是繼承自Panel的Canvas物件,當然,Canvas物件是沒有registerFadeEffect方法的,但由於我們替Panel建立了擴充方法: public static class MyEffects //改為靜態類別, 以適用擴充方法 { //註冊事件處理函式(擴充方法版) public static void registerFadeEffect(this Panel container) { //設定先為0.1 container.Opacity = 0.1; //如果滑鼠進入 container.MouseEnter += container_MouseEnter; //如果滑鼠離開 container.MouseLeave += container_MouseLeave; } 使得VS2010可以直接在ButtonPanel後面帶出該擴充方法,呼叫起來相當便利。 請注意建立擴充方法的關鍵在其所屬的類別為靜態類別,且方法中第一個參數前加上this, 就表示該方法要提供給該參數所屬型別的所有物件使用。 程式碼下載請參考[ CodeStorage ]。

CodeStorage最新下載排行

圖片
CodeStorage最新下載排行(2010/7/1~2010/7/20) 想看看大夥對什麼比較有興趣? 請點選[ 這裡 ]。

ASP.NET AJAX中的HTML編輯器

圖片
HTML Editor是在最近這幾個版本的ASP.NET AJAX Control tooklit當中被加入的,不管是APS.NET 3.5或4.0都可以使用。實際上使用的時候和坊間一般的ASP.NET HTML編輯器如出一轍,相當簡單: 可以透過content屬性設定或取得HTML值: protected void Button1_Click(object sender, EventArgs e) { //取得HTML碼 this.Literal1.Text= this.Editor1.Content; } 但請留意,不要將HTML值填入TextBox控制項中,會不work,也有安全性的顧慮。另外使用前請記得先引用AJAX Control Toolkit套件,並從工具箱中將Editor拖曳到頁面中,請務必設定其width與height屬性。 範例下載請至codeStorage:[ 下載 ]

透過ASP.NET AJAX 4 Client Libraries實現 Modal Popup Window

現在很多網站都導入了AJAX技術,透過AJAX技術在網頁上實現類似Windows的強制回應視窗(Modal Popup Window)效果,像FaceBook、Google都有廣泛的使用這些功能。 底下連結的這個範例介紹如何透過ASP.NET AJAX Client Libraries,不需要引用特定.dll,只需要參考MS CDN即可輕鬆在網頁上建立這樣的凸顯式強制回應視窗功能。 程式碼約莫如下: Sys.debug = true; Sys.require([Sys.components.watermark, Sys.components.modalPopup], function () { $("#Button1").modalPopup({ PopupControlID: "window", //視窗物件名稱 OkControlID: "buttonOK", //設定OK鈕物件 CancelControlID: "buttonCancel", //設定OK鈕物件 OnOkScript: okayWasClicked, //按下Cancel鈕要做的事情 OnCancelScript: cancelWasClicked, //按下Cancel鈕要做的事情 BackgroundCssClass: "modalBackground" //背景顏色 }); $("#UserName").watermark(" ", "watermark"); $("#Pwd").watermark(" ", "water...

ASP.NET的顏色選擇器範例

圖片
這個範例是以ASP.NET AJAX 4 Client Libraries中所提供的ColorPicker機制建立的顏色選擇器,開發環境中不需要安裝任何套件,只需要引用微軟CDN當中的Javascript Libraries即可,相當方便好用。[ 下載 ]

三個ASP.NET小範例

我在Code Storage上放了幾個ASP.NET的範例,分別是: ●以Cookies記憶登入帳號:[ 下載 ] 這個範例展示如何類似Google或是一般入口網站以Cookies紀錄登入者帳號,在一定時間內不需要重登入的機制,以仿Forms驗證的方式來進行。 ●AJAX Client Templates與遠端資料存取:[ 下載 ] 這個範例透過了AJAX Client Templates和Web Services遠端資料存取的技術,讓頁面上的UI可以經由Services直接Bind(繫結)到遠端的資料。其中也使用到了ADO.NET Entity Framework與LINQ等技術。這個機制讓ASP.NET的Data Binding有機會在前端完成,不經過後端的C#/VB指令碼也可進行。 ●浮水印文字方塊(Waterwark textBox):[ 下載 ] 這個範例使用了ASP.NET AJAX 4的Client Libraries,以pure JavaScript方式(不需要引用ASP.NET AJAX Controls Toolkit的.dll)在頁面上建立出具有浮水印的文字方塊(Waterwark textBox),並且利用了微軟CDN(Content delivery network)讓網站的效能更好,管理上也更加簡潔。如果只想要在網站尚設計出簡單的AJAX效果,但不希望引用一整個ASP.NET AJAX程式庫時相當好用。