如何使用WindowStyle = None删除WPF窗口顶部的白条?

Jog*_*hil 23 wpf

是否可以使用Window Style = None删除WPF窗口顶部的白色条带.屏幕截图中显示了XAML和Window:

在此输入图像描述

Car*_*ine 25

你在白色看到的是重新设置的边框.您可以删除它,并仍然通过设置使窗口可调整大小ResizeMode="CanResizeWithGrip" AllowsTransparency="True"

如果你根本不想调整大小,那么这样做 - ResizeMode="NoResize"再次你不会看到边框,但你不能调整大小.

<Window x:Class="HandsOnSolution.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Background="Green" WindowStyle="None" ResizeMode="CanResizeWithGrip" AllowsTransparency="True">
    <Grid>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

编辑

@devuxer的好点,如果你对拖动感兴趣,可以将这段代码添加到窗口鼠标按下事件中

<Window MouseLeftButtonDown="Window_MouseLeftButtonDown"/>

//code behind
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    DragMove();
}
Run Code Online (Sandbox Code Playgroud)

  • 很抱歉我忘了提及我不能使用 AllowsTransparency="True" 因为我的 WPF 窗口呈现 Windows 窗体控件。托管在 WPF 窗口上的 Windows 窗体不显示(请参阅其他线程)。 (2认同)

小智 13

一个非常简化的代码,仅作用于一个属性:

<WindowChrome.WindowChrome>
    <WindowChrome CaptionHeight="0"/>
</WindowChrome.WindowChrome>
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的解决方案,因为我们不想失去窗口默认阴影效果,当应用“AllowsTransparency=True”时,该效果就会丢失。谢谢! (2认同)

Yas*_*rav 8

我现在一直在寻找一个解决方案,用简单的话说这个链接就是我的疑问

虽然执行魔术的代码片段是:

<Setter Property="WindowChrome.WindowChrome">
    <Setter.Value>
        <WindowChrome CaptionHeight="0"
            CornerRadius="2"
            GlassFrameThickness="0"
            NonClientFrameEdges="None"
            ResizeBorderThickness="3"/>
    </Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)

我刚刚将上面的属性设置器添加到自定义窗口样式.

希望有帮助:)


Mat*_*ski 7

我添加了这段代码:

<WindowChrome.WindowChrome>
    <WindowChrome GlassFrameThickness="0,0,0,1" CornerRadius="0" />
</WindowChrome.WindowChrome>
Run Code Online (Sandbox Code Playgroud)

在里面<Window> paste here <Window/>,它有帮助:)