WPF 实现无边框窗口两种方法(本文只介绍两种):
方法1:使用网上常用的方法,设置AllowsTransparency="True"和WindowStyle="None",将窗口的背景设为透明Background="Transparent",
实现代码如下:
<Window x:Class="Window1"
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"
mc:Ignorable="d"
Title="SetPageY" WindowStyle="None" ResizeMode="CanMinimize" AllowsTransparency="True" Background="Transparent">
<Border Margin="10" MouseLeftButtonDown="Window_MouseLeftButtonDown">
<Border.Effect>
<DropShadowEffect BlurRadius="10" Color="#FF486DAA" ShadowDepth="11"/>
</Border.Effect>
</Border>
</Window>
因为要显示阴影Border需要设置边距.窗口的拖拽功能也需要手动实现同时后台添加:
if (e.ButtonState == MouseButtonState.Pressed)
{
this.DragMove();
}
此方法因为要用到 AllowsTransparency="True"非系统原生用法,资源利用低,不推荐!
方法:2 应该方法是得用Window自带窗口属性,可以拖拽,支持鼠标双击,无需添加后台代码.同时设置ResizeMode="CanResizeWithGrip",还可以实现鼠标的窗口的大小拖拽.
<WindowChrome.WindowChrome>
<WindowChrome CornerRadius="2" GlassFrameThickness="10" />
</WindowChrome.WindowChrome>
该方法用的是窗口原生效果,资源利用高效,但阴影的颜色不可整改.如果要更改阴影的颜色需要重写Window的Template.