▪ 前言
在用 .Net 4.0 开发 WPF 软件时,我们可能需要禁用或者隐藏窗口右上角的 最小化、最大化或关闭 按钮(当然同时可能也伴随着需要固定窗口尺寸的要求)。
好在 WPF 已经为我们提供了非常方便的方法,利用 Window
标签的 ResizeMode
属性,我们可以按需设置自己想要的效果:
<Window x:Class="CarSensorMelexis.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CarSensorMelexis"
Width="500" Height="200" ResizeMode="CanMinimize">
ResizeMode="NoResize"
隐藏 最小化 和 最大化 按钮,显示 关闭 按钮(同时能固定窗口尺寸)ResizeMode="CanMinimize"
显示 最小化 和 关闭 按钮,禁用 最大化 按钮(同时能固定窗口尺寸)
▪ 重现 BUG
上面的代码中你可能很难察觉出哪里有BUG,那么我们修改一下代码,将 ResizeMode
的实现放到 C# 的窗口代码里:
# xaml
<Window ... Title="MainWindow" Width="300" Height="100">
<Button Content="禁用最大化" Click="Button_Click"></Button>
</Window>
# cs
private void Button_Click( object sender, RoutedEventArgs e )
{
this.ResizeMode = ResizeMode.CanMinimize;
}
将上面的代码在 VS 里面编译启动,然后关闭软件。
接着进入项目所在的文件夹,在 bin/Debug/
下双击 exe
文件打开软件,然后点击按钮 “禁用最大化”,此时你会发现最大化按钮禁用了,但是窗口的尺寸好像改变了:
在上图中,我们可以很明显看到禁用最大化按钮后的窗口尺寸变大了,而且标题栏高度变小了。
结论:启用了 ResizeMode="NoResize"
、ResizeMode="CanMinimize"
等属性值后,窗口标题栏高度减少,窗口尺寸增大
▪ 解决方法
以上的 BUG 目前测试过来发生在 .Net 4.0 版本,升级到 4.5 即可解决该BUG