製作非矩形視窗
在某些情況中,您可能想要在 Microsoft® Expression Blend™ 應用程式中建立執行階段的視覺外觀為非矩形的視窗。這種視窗的常見範例有桌面 Applet、Widget 及媒體播放程式。建立非矩形視窗的方法是變更應用程式之視窗元素的一些屬性,然後建立可讓您不靠標題列就移動視窗的事件處理常式方法。
使非矩形視窗變成透明
- 按一下 [檔案] 功能表上的 [新增項目],建立名稱為 Window1.xaml 的新視窗文件。在 [新增項目] 視窗中,確認已選取 [包含程式碼檔案] 核取方塊,才能為 Window1.xaml 產生相符的程式碼後置檔案。
- 在 [互動] 面板的 [物件與時間軸] 下,選取 [Window] 元素,然後在 [屬性] 面板的 [外觀] 下,將 [WindowStyle] 屬性變更為 [None] 來移除視窗殼層 (標題列)。按 F5 查看視窗在沒有預設殼層時的外觀。請注意,標準的 [最小化]、[最大化]、[還原] 或 [關閉] 按鈕再也不會顯示。也請注意您無法再拖曳視窗。
按 ALT+F4 關閉視窗。
如需其他 WindowStyle 選項的相關資訊,請參閱 MSDN 之<Windows Presentation Foundation 視窗概觀>主題中的 WindowStyle (英文)。 - 在 [屬性] 面板的 [外觀] 下,選取 [AllowsTransparency ] 核取方塊。請注意,視窗框線現已不再顯示。
- 若要在視窗中增加透明區域,可以在 [屬性] 面板的 [筆刷] 下將 Window 元素的 [Background] 屬性設為 [沒有筆刷]
。此外,若要讓使用者能夠按視窗的透明區域,可以將 [Background] 屬性設為 [單色筆刷]
,然後將背景筆刷的 [Alpha] 屬性設為 1。這樣視窗的可按區域仍然會存在,但是呈現隱形狀態。 - 最後,在 [物件與時間軸] 下,按兩下 [LayoutRoot] 來啟動該元素,然後將元素從 [工具箱] 新增至畫板。您可以對元素設定 [OpacityMask] 筆刷來建立各種效果。(如需相關資訊,請參閱建立不透明度遮罩。)您也可以使用繪圖工具 (例如 [橢圓形]
和 [畫筆]
) 來新增圖形與繪製的路徑,然後將元素移至其他元素後 (以滑鼠右鍵按一下元素,然後按一下 [順序])。LayoutRoot 的內容會有效定義應用程式的外框。 - 再按一次 F5 查看視窗現在的外觀。請注意,您仍無法拖曳視窗。按 ALT+F4 關閉視窗。
新增能讓人在執行階段拖曳視窗的程式碼
在視窗變成透明後,實際上會因沒有標題列而無法移動視窗。若要使視窗能再移動,您必須在視窗中新增一個事件處理常式,然後在相關的程式碼後置檔案中新增一些程式碼。
- 按一下 [檔案] 功能表上的 [全部儲存],將專案儲存至硬碟。這是因為您無法在從未儲存過的專案中新增事件處理常式方法。
- 選取 [物件與時間軸] 下方的 Window 元素,按一下 [屬性] 面板的 [事件]
按鈕。 - 在 MouseLeftButtonDown 旁鍵入 "OnMouseLeftButtonDown",然後按 ENTER 鍵。
- 如果已安裝 Microsoft® Visual Studio® 2005 Standard Edition 或更新版本,則按 ENTER 鍵後產生的事件處理常式程式碼會自動新增程式碼後置檔案 (Window1.xaml.cs),並在 Visual Studio 中開啟程式碼後置檔案供您編輯。
- 如果未安裝 Visual Studio,則會將事件處理常式方法的程式碼複製到剪貼簿,以便讓您貼入程式碼後置檔案中。在 [專案] 面板中按兩下程式碼後置檔案來開啟該檔案。
將產生的事件處理常式方法程式碼,貼到程式碼後置檔案中最後一個結尾大括弧的正前方 (如果您的程式碼後置檔案使用 C#);或 End Class 陳述式正前方 (如果您的程式碼後置檔案使用 VB.NET)。
如果在 Expression Blend 的 [專案] 面板按兩下無法開啟程式碼後置檔案,可能是沒有應用程式與程式碼後置檔案副檔名 (.cs or .vb) 關聯,因此 Windows 不知道如何開啟檔案。如需將 .cs 與 .vb 檔案和像是記事本之類的編輯器關聯的相關資訊,請參閱編輯程式碼後置檔案。
- 將產生之事件處理常式方法的下列程式碼 (紅色) 新增到程式碼後置檔案,您的事件處理程式看起來就會和下列類似:
- 若為 C#
private void OnMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { this.DragMove(); } - 如果是 Visual Basic .NET
Private Sub OnMouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Me.DragMove() End Sub
- 若為 C#
- 按 F5 執行應用程式。
您可以新增其他的事件處理常式方法,例如按鈕的 Click 事件方法,該方法會呼叫您程式碼後置檔案中的 Close() 方法。 如需建立事件處理常式方法的詳細資訊,請參閱事件處理。


