三、其他窗体相关的属性、方法、事件
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();} } }
运行效果如下图: