在 Microsoft Expression Blend 应用程序中,可能需要在运行时创建一个具有非矩形形状外观的窗口。常见的例子包括桌面小程序、小组件和媒体播放器等。可以在应用程序中更改“Window”元素的一些属性,然后创建事件处理程序方法以使用户无需标题栏即可移动窗口,从而创建一个非矩形窗口。
使非矩形窗口变得透明
在“对象和时间线”面板中,选择“Window”元素,然后在“属性”面板中的“外观”下,将“WindowStyle”属性更改为“无”,以删除窗口外壳(标题栏)。按 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 键。
修改代码隐藏文件中生成的事件处理程序方法,以便事件处理程序类似于以下形式:
private void OnMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { this.DragMove(); }
Private Sub OnMouseLeftButtonDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Me.DragMove() End Sub
按 F5 运行应用程序。
可以添加更多事件处理程序方法,例如可调用代码隐藏文件中 Close() 方法的按钮 Click 事件的方法。
有关如何创建事件处理程序方法的详细信息,请参阅编写将对事件做出响应的代码。