我试图用WindowStyle="None" 创建一个无边框窗口,但是当我测试它时,顶部似乎出现了一个白条,经过一些研究,它似乎是“调整边框大小”,这是一张图片(我黄色标注):
在互联网上进行了一些研究,以及许多困难的非 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。
我使用了Window的WindowChrome属性,如果你使用这个,白色的“调整大小边框”就会消失,但是你需要定义一些属性才能正常工作。
CaptionHeight: 这是标题区域(标题栏)的高度,允许 Aero 捕捉、双击行为,就像普通标题栏一样。将此设置为 0(零)以使按钮起作用。
ResizeBorderThickness: 这是窗口边缘的厚度,您可以在此处调整窗口大小。我设置为 5 是因为我喜欢这个数字,而且如果设置为零,则很难调整窗口大小。
使用此短代码后,结果如下:
现在,没有使用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>
谢谢!