网站域名有效期,wordpress 特别慢,小型公众号开发,网站建设合同范本大全常规的无边框方法设计
常规的WPF无边框设计方法都是通过AllowsTransparency=True和WindowStyle=“None”,并且使用WindowChrome样式来实现,但是这样会有问题就是,窗体最大化的时候将底部任务栏给挡住了,另外最大化的时候不能拖动窗体。参考这个大佬的设计@ 若…常规的无边框方法设计
常规的WPF无边框设计方法都是通过AllowsTransparency="True"和WindowStyle=“None”,并且使用WindowChrome样式来实现,但是这样会有问题就是,窗体最大化的时候将底部任务栏给挡住了,另外最大化的时候不能拖动窗体。参考这个大佬的设计@ 若汝棋茗 WPF制作无边框窗体、圆角窗体、支持改变大小、拖动分屏等(一) 但是感觉好麻烦啊。
比较完美的无边框设计
参照这个大佬的设计:梦机器工作室。保留了原改生的最小化、最大化、关闭、拖拽、伸缩窗体大小等操作。 可以看到在设计器内还是保留了默认的WindowStyle。
运行效果 完整的源码。
资源字典
ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp1"Style x:Key="BorderlessButton" TargetType="Button"Setter Property="Template"Setter.ValueControlTemplate TargetType="Button"Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Background="{TemplateBinding Background}"Border x:Name="bg" Background="{StaticResource TransparentColor}" /Path x:Name="content"Width="{TemplateBinding local:Icon.Width}"Height="{TemplateBinding local:Icon.Height}"Data="{TemplateBinding local:Icon.Geometry}"Fill="{TemplateBinding Foreground}"Stretch="Fill"UseLayoutRounding="True" //GridControlTemplate.TriggersTrigger Property="IsMouseOver" Value="True"Setter TargetName="bg" Property="Background" Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(local:Mouse.OverBackColor)}" //TriggerTrigger Property="IsPressed" Value="True"Setter Property="Opacity" Value="0.8" //Trigger/ControlTemplate.Triggers/ControlTemplate/Setter.Value/Setter/Style!--#region 系统窗口--Style x:Key="BorderlessWindowStyle" TargetType="{x:Type local:BorderlessWindow}"Setter Property="Template"Setter.ValueControlTemplate TargetType="{x:Type local:BorderlessWindow}"Border Background="{TemplateBinding Background}"BorderBrush="{TemplateBinding BorderBrush}"BorderThickness="{TemplateBinding BorderThickness}"SnapsToDevicePixels="True"Grid Margin="{TemplateBinding Padding}"Grid.RowDefinitionsRowDefinition Height="Auto" /RowDefinition //Grid.RowDefinitionsAdornerDecorator x:Name="content" Grid.Row="1"ContentPresenter //AdornerDecoratorResizeGrip x:Name="ResizeGrip"Grid.Row="1"Margin="0,0,5,5"HorizontalAlignment="Right"VerticalAlignment="Bottom"IsTabStop="False"Visibility="Collapsed"WindowChrome.ResizeGripDirection="BottomRight" /Grid Background="{TemplateBinding CaptionBackground}"Grid.ColumnDefinitionsColumnDefinition /ColumnDefinition Width="Auto" //Grid.ColumnDefinitionsContentPresenter Content="{TemplateBinding TitleContent}" /StackPanel Grid.Column="1" Orientation="Horizontal" WindowChrome.IsHitTestVisibleInChrome="True"!-- 最小化按钮 --Button x:Name="ButtonMin"Width="{TemplateBinding SystemButtonSize}"Height="{TemplateBinding SystemButtonSize}"local:Icon.Geometry="F1M0,6L0,9 9,9 9,6 0,6z"local:Icon.Height="3"local:Mouse.OverBackColor="{TemplateBinding SystemButtonOverColor}"Background="{TemplateBinding SystemButtonColor}"Command="SystemCommands.MinimizeWindowCommand"Foreground="{TemplateBinding SystemButtonForeground}"IsTabStop="False"Style="{StaticResource BorderlessButton}" /!-- 最大化按钮 --Button x:Name="ButtonMax"Width="{TemplateBinding SystemButtonSize}"Height="{TemplateBinding SystemButtonSize}"local:Icon.Geometry="F1M0,0L0,9 9,9 9,0 0,0 0,3 8,3 8,8 1,8 1,3z"local:Mouse.OverBackColor="{TemplateBinding SystemButtonOverColor}"Background="{TemplateBinding SystemButtonColor}"Command="SystemCommands.MaximizeWindowCommand"Foreground="{TemplateBinding SystemButtonForeground}"IsTabStop="False"Style="{StaticResource BorderlessButton}" /!-- 恢复按钮 --Button x:Name="ButtonRestore"Width="{TemplateBinding SystemButtonSize}"Height="{TemplateBinding SystemButtonSize}"local:Icon.Geometry="F1M0,10L0,3 3,3 3,0 10,0 10,2 4,2 4,3 7,3 7,6 6,6 6,5 1,5 1,10z M1,10L7,10 7,7 10,7 10,2 9,2 9,6 6,6 6,9 1,9z"local:Mouse.OverBackColor="{TemplateBinding SystemButtonOverColor}"Background="{TemplateBinding SystemButtonColor}"Command="SystemCommands.RestoreWindowCommand"Foreground="{TemplateBinding SystemButtonForeground}"IsTabStop="False"Style="{StaticResource BorderlessButton}" /!-- 关闭窗口按钮 --Button x:Name="ButtonClose"Width="{TemplateBinding SystemButtonSize}"Height="{TemplateBinding SystemButtonSize}"local:Icon.Geometry="M453.44 512L161.472 220.032a41.408 41.408 0 0 1 58.56-58.56L512 453.44 803.968 161.472a41.408 41.408 0 0 1 58.56 58.56L570.56 512l291.968 291.968a41.408 41.408 0 0 1-58.56 58.56L512 570.56 220.032 862.528a41.408 41.408 0 0 1-58.56-58.56L453.44 512z"local:Mouse.OverBackColor="{TemplateBinding SystemButtonCloseOverColor}"Background="{TemplateBinding SystemButtonColor}"Command="SystemCommands.CloseWindowCommand"Foreground="{TemplateBinding SystemButtonForeground}"IsTabStop="False"Style="{StaticResource BorderlessButton}" //StackPanel/Grid/Grid/BorderControlTemplate.TriggersTrigger Property="FitSystemWindow" Value="True"Setter TargetName="content" Property="Grid.Row" Value="0" /Setter TargetName="content" Property="Grid.RowSpan" Value="2" //TriggerTrigger Property="WindowState" Value="Maximized"Setter Property="Padding" Value="8" /Setter TargetName="ButtonMax" Property="Visibility" Value="Collapsed" /Setter TargetName="ButtonRestore" Property="Visibility" Value="Visible" //TriggerTrigger Property="WindowState" Value="Normal"Setter TargetName="ButtonMax" Property="Visibility" Value="Visible" /Setter TargetName="ButtonRestore" Property="Visibility" Value="Collapsed" //TriggerTrigger Property="ResizeMode" Value="NoResize"Setter TargetName="ButtonMin" Property="Visibility" Value="Collapsed" /Setter TargetName="ButtonMax" Property="Visibility" Value="Collapsed" /Setter TargetName="ButtonRestore" Property="Visibility" Value="Collapsed" //TriggerTrigger Property="ResizeMode" Value="CanMinimize"Setter TargetName="ButtonMax" Property="Visibility" Value=