原文: Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)
系統: Win7sp1 32位
IDE: Microsoft VisualStudio 2013 Ultimate
Blend 2013
工程: .Net Framework4.5.1
工具: Photoshop CS6
================================
首先明确一點,ToggleButton實際上是CheckBox的變形,分為了三種狀态Checked、Unchecked、Indeterminate

1、制作PSD模闆檔案,如下圖,背景删除有利于後續控件制作。
2、啟動Blend2013,其他版本亦可。建立一個WPF Application工程,然後如圖所示導入PSD檔案
導入PSD檔案後如圖所示
圖中我進行了标記:
① PSD模闆中ToggleButton的Checked狀态
② PSD模闆中ToggleButton的Unchecked狀态
③ PSD檔案中對應圖層儲存的格式:Editable content--這個是我們需要的格式,這樣導入後的圖形可以編輯,例如填充顔色,改變描邊等等;Flattened bitmap -- 這個就是儲存成為一張普通的圖檔,如果是做個按鈕的貼圖還可以,在此例中我們不需要
④ 可能你也會看到這樣的提示,提示表明Photoshop中使用的一些特效在Blend中不支援,不要緊隻管導入,有什麼問題我們後面可以處理。
至于需要導入的模闆,我隻勾選了OFF組裡面的3個(就是②對應的那個圖),當然你也可以選擇ON組裡面的,個人喜好了,那個bg就不要勾選了,就是個白色背景,我們需要的是透明背景。選擇好了後點OK。
Blend導入完成後的狀态如圖所示,應該隻有紅框中的一個按鈕
注:btn_07為ToggleButton在Checked狀态下顯示的綠色對勾。這個是我用PS中切片切出來的,因為我勾選的白色OFF狀态下的模闆,是以我需要通過代碼做出Checked狀态下(ON模闆)的模樣。可能你導入後的圖形顔色會有丢失情況,那是因為Photoshop中使用的一些特效Blend中不支援,不要緊,我們可以在PS中做切片把圖檔切出來。例如我的off icon.png這個檔案導入後就變成了黑色的,在PSD模闆中應該是紅色的。
3、導入PSD模闆完成後,應如圖所示。應該隻有OFF_Copy這一個畫布(Canvas)
然後我們做如圖中黃色的那部分操作,把這個畫布(Canvas)轉成一個UserControl,點選後會彈出一個讓你起名字的對話框,
輸入自定義的名稱後會在工程中生成一個UserControl控件。如圖所示:
接下來,我們需要做一個控件的模闆(Template),把控件相關的Path、Image等等的控件都包含進去。
這樣做是因為我們需要把這個自定義的控件轉換成ToggleButton,
如果不做這步,直接把節點UserControl改成ToggleButton會有問題滴,至于什麼問題可以自己進行嘗試,反正我是試過了。步驟如圖所示:
點選建立空模闆後會彈出一個給模闆起名字的視窗,如圖所示:
① 模闆的名稱
② 和③其實這兩個是一起的,如果選擇② ,那麼自定義的這個模闆就會放置在App.xaml中,可以将來做為其他控件的模闆,本例中我們隻有這一個控件,那麼就選擇③了。
點選OK後,你會發現Design區域的控件不見了,隻有一個藍色的空白框在那裡。此時我們來看代碼,如圖所示:
我們需要把包括Grid節點在内的代碼替換UserContro.Resources節點下的Grid,替換完成後又看到了我們自定義的控件了,不再是一個空白的藍色框了。
因為我們做的這個控件需要Checked、Unchecked事件,并且最好還是個按鈕,是以ToggleButton正好符合我們的條件,那麼我們就把節點UserControl改成ToggleButton,這樣這個控件就繼承了ToggleButton的屬性。