整理一下最近用的wpf小知识。
1、WindowStyle=none,无边框窗口拖拽:
本方法最完美最简洁.
为自绘的标题栏添加MouseLeftButtonDown事件,并在事件中写入this.DragMove();
代码:
代码如下 | 复制代码 |
private void logo1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) |
2、禁止缩放(放大缩小)窗口
只需要设置
ResizeMode="NoResize"
3、Wpf窗口自适应: 利用WPF中的ViewBox容器空间。ViewBox是一个容器空间,它会自动缩放容器中的子空间以填满自身,同时它只能有一个子控件。不过,我们可以把Canvas控件作为ViewBox控件的子控件。然后在Canvas控件中布局其他的控件。
代码:
代码如下 | 复制代码 |
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPFTest" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" SizeToContent="Manual" Width="400" Height="300"> |
说明:
最外面的是Window容器,设置了标题(WPFTest)和大小(400×300),它也只能有一个子控件。
Window的子控件是DockPanel容器,是自动停靠容器控件。设置LastChildFill="True",表示最后一个子控件自动填充剩余的空间。没有设置大小,默认大小是Window的客户区大小。
DockPanel控件有三个子控件
Menu控件:菜单控件,自动停靠在容器的顶端
StatusBar控件:状态栏控件,自动停靠在容器的底部
ViewBox控件:容器控件,自动填充DockPanel剩余的控件。没有设置大小,为填充的大小。设置填充的模式为Fill,表示子控件填充自身的容器的大小
在ViewBox中放置了一个Canvas控件,设置了大小(注:一定要设置大小,否则默认时会产生各种不可思议的效果),设置了背景色
在Canvas中放置了一个Button控件。只是示例,Canvas中还能放置其他的控件
4、去掉自带的最大化 最小化。自定义最大化 最小化。
屏蔽掉WPF窗口自带的最大、最小、关闭等设置Window的属性 windowStyle=“none”
自定义自己的按钮:
代码如下 | 复制代码 |
Click="WindowsMin_Click" private void WindowsMin_Click(object sender, RoutedEventArgs e) |
注意:WPF的close是关闭不了进程的。需要用 Application.Current.Shutdown();