本文介绍了两种在WPF中隐藏标题栏并实现窗口拖动的方法。方法一是通过设置AllowsTransparency和WindowStyle属性,然后自定义边框实现拖动;方法二是利用WindowChrome组件,隐藏标题栏但保留拖动功能,并解决了隐藏后按钮命中问题。对于方法一,需要注意拖动功能的实现,对于方法二,需关注IsHitTestVisibleInChrome属性的设置以确保元素可点击。
方法一
AllowsTransparency="True" WindowStyle="None"
缺点:使用该方法会导致标题栏无法被拖动,可以自我添加boder的形式来重写拖动
例如:

<Window x:Class="WpfApp.MainWindow" Title="MainWindow" Height="450" Width="800" AllowsTransparency="True"WindowStyle="None">
<Grid>
<Border Background="Yellow" MouseLeftButtonDown="Border_MouseLeftButtonDown" Height="20" VerticalAlignment="Top"/>
</Grid>
</Window>
private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
方法二
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="50" UseAeroCaptionButtons="False"></WindowChrome>
</WindowChrome.WindowChrome>
CaptionHeight 隐藏标题栏的高度
UseAeroCaptionButtons 是否让隐藏的最小化最大化关闭按钮可以点击
使用WIndowsChrome 进行隐藏,使用此方法下隐藏的标题栏只是不能看到,但还是存在的。会导致在隐藏标题栏位置的按钮无法命中。例如此状况下的button1

需要给button1添加以下属性后便可进行命中
WindowChrome.IsHitTestVisibleInChrome="True"
本文介绍了两种在WPF中隐藏标题栏并实现窗口拖动的方法。方法一是通过设置AllowsTransparency和WindowStyle属性,然后自定义边框实现拖动;方法二是利用WindowChrome组件,隐藏标题栏但保留拖动功能,并解决了隐藏后按钮命中问题。对于方法一,需要注意拖动功能的实现,对于方法二,需关注IsHitTestVisibleInChrome属性的设置以确保元素可点击。
2968

被折叠的 条评论
为什么被折叠?



