如何仅从顶部调整无边框 window 的大小?

How to resize a borderless window from top only?

我正在创建一个 WPF 应用程序并希望我的 window 是无边界的,并且还可以调整大小 从顶部开始。

到目前为止我尝试了什么


问题

如何制作无边框window,仅 可以用 上边框 调整大小? (如果我可以只使用颜色可以更改的顶部边框来做到这一点,那就最好了)。

您可能已成功设置 WindowChrome.ResizeBorderThickness 属性 以删除除顶部以外的所有边框,例如ResizeBorderThickness="0, 5, 0, 0".

这可能不是获得结果的最简洁方法,但我在此处调整答案方面取得了一些成功:http://www.eidias.com/blog/2014/1/27/restyle-your-window(这是我发现让 WindowChrome 工作的最简单方法):

ResourceDictionary 中创建自定义 window 样式:

<ResourceDictionary x:Class="WpfApplication.WindowStyle"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style x:Key="CustomWindowStyle" TargetType="{x:Type Window}">
        <Setter Property="WindowChrome.WindowChrome">
            <Setter.Value>
                <WindowChrome CaptionHeight="30"
                              CornerRadius="4"
                              GlassFrameThickness="0"
                              ResizeBorderThickness="0, 5, 0, 0"
                              UseAeroCaptionButtons="False" />
            </Setter.Value>
        </Setter>
        <Setter Property="Window.BorderThickness" Value="0, 5, 0, 0" /
    </Style>
</ResourceDictionary>

在需要的地方引用字典(我把它放在App.xaml):

<Application x:Class="WpfApplication1.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:WpfApplication1"
         StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary Source="WindowStyle.xaml" />
    </Application.Resources>
</Application>

参考所需的样式Window:

<Window x:Class="WpfApplication1.MainWindow"
    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"
    xmlns:local="clr-namespace:WpfApplication1"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525"
    Style="{StaticResource ResourceKey=CustomWindowStyle}">
    <Grid>
    </Grid>    
</Window>

这应该会产生一个 window 看起来像你的最后一个,但只能从顶部调整大小(只能抓住顶部调整大小手柄)。