WPF WindowChrome
一、标准Window
二、WindowChrome的基本概念
若要自定义窗口,同时保留其标准功能,可以使用WindowChrome类。 WindowChrome类窗口框架的功能分离开来视觉对象,并允许您控制的客户端和应用程序窗口的非工作区之间的边界。
<WindowChrome.WindowChrome> <WindowChrome /> </WindowChrome.WindowChrome>
UseAeroCaptionButtons:表示标题栏上的那三个默认按钮是否可以命中,因为我们想要自己管理这三个按钮的样式、显示或隐藏,所以设置为False
GlassFrameThickness:用于控制边框
ResizeBorderThickness:用户可以单击并拖动以调整窗口大小的区域的宽度,设置之后则三个按钮隐藏。
CaptionHeight:指定WindowChrome的标题栏高度
IsHitTestVisibleInChrome:如果需要在标题栏放自己的按钮(或其它交互元素)需要将这个按钮的WindowsChrome.IsHitTestVisibleInChrome附加属性设置为True
示例一:
XAML代码:
<WindowChrome.WindowChrome> <WindowChrome CornerRadius="0" CaptionHeight="0" GlassFrameThickness="1" UseAeroCaptionButtons="False" NonClientFrameEdges="None" /> </WindowChrome.WindowChrome> <Grid> <Border Height="30" Background="Red" VerticalAlignment="Top"></Border> </Grid>
参考:
WindowChrome自定义Window Style:https://www.cnblogs.com/dino623/p/custom_window_style_using_WindowChrome.html
使用WindowChrome自定义Window Style:https://www.cnblogs.com/dino623/p/CustomWindowStyle.html
WPF中自定义标题栏时窗体最大化处理之WindowChrome:https://www.cnblogs.com/huaxia283611/p/wpf-maximize-windowchrome.html
WPF 窗口大小自适应:https://blog.csdn.net/weixin_34268843/article/details/89581243
WPF 设置属性使窗口不可改变大小:https://blog.csdn.net/qq_39704682/article/details/95475855
WPF的MainWindow设置背景透明仍然显示黑色Black问题
<Window ... AllowsTransparency="True" Foreground="{x:Null}" Background="{x:Null}" FocusVisualStyle="{x:Null}">
注意要设置AllowsTransparency=true,允许透明色,否则就是黑色
window 拖动
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); if (e.ButtonState == MouseButtonState.Pressed) DragMove(); }
窗口失去焦点
protected override void OnDeactivated(EventArgs e) { base.OnDeactivated(e); this.Close(); }
设置窗口内容自适应
<Window SizeToContent="WidthAndHeight"
判断项目中的某个窗体是否已经打开或者已经存在
foreach (Window item in Application.Current.Windows) { if (item is window1) return; }