我想创建一个没有边框的窗口,可以使用
WindowStyle="None"
,但是测试时发现在顶部出现了一个白色条,经过一些研究发现它是一个"调整大小的边框",这里是图片(我用黄色标出来):
![The Challenge](https://istack.dev59.com/3hM09.webp)
在互联网上进行了一些研究,并且找到了许多非 XAML 的解决方案,但所有的解决方法都是使用 C# 的代码实现的,代码很长。最终我在这里间接地找到了解决方案:
Maximum custom window loses drop shadow effect。
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="0"
ResizeBorderThickness="5" />
</WindowChrome.WindowChrome>
注意:您需要使用.NET 4.5框架,或者如果您使用的是旧版本,请使用WPFShell,只需引用shell并使用Shell:WindowChrome.WindowChrome
即可。
我使用了窗口的WindowChrome
属性,如果您使用它,白色的“调整大小边框”将消失,但您需要定义一些属性才能正常工作。
CaptionHeight:这是标题区域(标题栏)的高度,允许像普通标题栏一样进行Aero快照、双击行为。将其设置为0(零)以使按钮起作用。
ResizeBorderThickness:这是窗口边缘处的厚度,您可以在那里调整窗口大小。我将其设为5,因为我喜欢这个数字,而且因为如果你把它设为0,调整窗口大小就很困难。
使用这个简短的代码后,结果如下所示:
![解决方案](https://istack.dev59.com/3Etie.webp)
现在,白色边框消失了,而不需要使用ResizeMode="NoResize"
和AllowsTransparency="True"
,也在窗口中显示了阴影。
稍后我将解释如何使用简单而短小的代码轻松地使按钮工作(我没有使用按钮的图像),我很新,认为我可以发布到codeproject,因为在这里我找不到发布教程的地方。
也许还有另一种解决方案(我知道有些对于像我这样的新手来说是困难和复杂的解决方案),但这适用于我的个人项目。
这是完整的代码:
<Window x:Class="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:Concursos"
mc:Ignorable="d"
Title="Concuros" Height="350" Width="525"
WindowStyle="None"
WindowState="Normal"
ResizeMode="CanResize"
>
<WindowChrome.WindowChrome>
<WindowChrome
CaptionHeight="0"
ResizeBorderThickness="5" />
</WindowChrome.WindowChrome>
<Grid>
<Rectangle Fill="#D53736" HorizontalAlignment="Stretch" Height="35" VerticalAlignment="Top" PreviewMouseDown="Rectangle_PreviewMouseDown" />
<Button x:Name="Btnclose" Content="r" HorizontalAlignment="Right" VerticalAlignment="Top" Width="35" Height="35" Style="{StaticResource TempBTNclose}"/>
<Button x:Name="Btnmax" Content="2" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,35,0" Width="35" Height="35" Style="{StaticResource TempBTNclose}"/>
<Button x:Name="Btnmin" Content="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,0,70,0" Width="35" Height="35" Style="{StaticResource TempBTNclose}"/>
</Grid>
谢谢!