三、其他窗体相关的属性、方法、事件

WPF窗体的详细的属性、方法、事件请参考MSDN,有很多的属性、方法、事件与Windows应用程序中System.Windows.Forms.Form类相同或近似,其中常用的一些属性、方法、事件有:

· 窗体边框模式(WindowStyle属性)和是否允许更改窗体大小(ResizeMode属性)

· 窗体启动位置(WindowStartupLocation属性)和启动状态(WindowState属性)

· 窗体标题(Title属性)

· 始终在最前(TopMost属性)

· 是否显示在任务栏(ShowInTaskbar

四、定义异形窗体

使用异形窗体,可以将窗体的背景设置为透明,边框设置为空,然后利用控件做出异形的窗体,例如:

XAML

<Window x:Class="WpfWindow.CustomerWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="NonRectangularWindowSample" SizeToContent="WidthAndHeight"

MouseLeftButtonDown="NonRectangularWindow_MouseLeftButtonDown"

WindowStyle="None"

AllowsTransparency="True"

Background="Transparent">

<Canvas Width="200" Height="200" >

<Path Stroke="DarkGray" StrokeThickness="2">

<Path.Fill>

<LinearGradientBrush StartPoint="0.2,0" EndPoint="0.8,1" >

<GradientStop Color="White" Offset="0"></GradientStop>

<GradientStop Color="White" Offset="0.45"></GradientStop>

<GradientStop Color="LightBlue" Offset="0.9"></GradientStop>

<GradientStop Color="Gray" Offset="1"></GradientStop>

</LinearGradientBrush>

</Path.Fill>

<Path.Data>

<PathGeometry>

<PathFigure StartPoint="40,20" IsClosed="True">

<LineSegment Point="160,20"></LineSegment>

<ArcSegment Point="180,40" Size="20,20" SweepDirection="Clockwise"></ArcSegment>

<LineSegment Point="180,80"></LineSegment>

<ArcSegment Point="160,100" Size="20,20" SweepDirection="Clockwise"></ArcSegment>

<LineSegment Point="90,100"></LineSegment>

<LineSegment Point="90,150"></LineSegment>

<LineSegment Point="60,100"></LineSegment>

<LineSegment Point="40,100"></LineSegment>

<ArcSegment Point="20,80" Size="20,20" SweepDirection="Clockwise"></ArcSegment>

<LineSegment Point="20,40"></LineSegment>

<ArcSegment Point="40,20" Size="20,20" SweepDirection="Clockwise"></ArcSegment>

</PathFigure>

</PathGeometry>

</Path.Data>

</Path>

<Label Width="200" Height="120" FontSize="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">Drag Me</Label>

<Button Canvas.Left="155" Canvas.Top="30" Click="closeButtonRectangle_Click">

<Button.Template>

<ControlTemplate>

<Canvas>

<Rectangle Width="15" Height="15" Stroke="Black" RadiusX="3" RadiusY="3">

<Rectangle.Fill>

<SolidColorBrush x:Name="myAnimatedBrush" Color="Red" />

</Rectangle.Fill>

</Rectangle>

<Line X1="3" Y1="3" X2="12" Y2="12" Stroke="White" StrokeThickness="2"></Line>

<Line X1="12" Y1="3" X2="3" Y2="12" Stroke="White" StrokeThickness="2"></Line>

</Canvas>

</ControlTemplate>

</Button.Template>

</Button>

</Canvas>

</Window>

代码文件:

namespace WpfWindow

{ public partial class CustomerWindow : Window

{

public CustomerWindow()

{InitializeComponent(); }

void NonRectangularWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

{ this.DragMove(); }

void closeButtonRectangle_Click(object sender, RoutedEventArgs e)

{ this.Close();} } }

运行效果如下图:

WPF窗体(5)下_形状按钮