我正在创建一个WPF应用程序,并希望我的窗口无边框,也可以从顶部调整 的大小。
我最初认为这样可行:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Width="200" Height="150"
WindowStyle="None"
ResizeMode="CanResize"
AllowsTransparency="True"
BorderThickness="0,5,0,0"
BorderBrush="Black">
<Grid Background="Gray" />
</Window>
我做只获得一个带有顶部边框的窗口,但我无法调整它的大小。
然后我使用WindowChrome.ResizeGripDirection="Top"
尝试ResizeMode="CanResizeWithGrip"
。
<Window ...
WindowStyle="None"
ResizeMode="CanResizeWithGrip"
AllowsTransparency="True"
WindowChrome.ResizeGripDirection="Top"
BorderThickness="0,5,0,0"
BorderBrush="Black">
...
</Window>
这也不起作用(无法从顶部边框调整大小),并且夹点甚至不会出现在顶部。它保持在右下角(尽管如此,我可以调整大小)。
This answer似乎应答者最初可能会这样做,但代码不可用。
然后有this answer:
这种方法出错:
<Window ...
WindowStyle="None"
ResizeMode="CanResizeWithGrip"
AllowsTransparency="False">
<Grid Background="Gray" />
<Setter Property="WindowChrome.WindowChrome">
<Setter.Value>
<WindowChrome CornerRadius="0"
GlassFrameThickness="1"
UseAeroCaptionButtons="False"/>
</Setter.Value>
</Setter>
</Window>
属性“内容”设置不止一次。
代码落后:
<Window ...
WindowStyle="None"
ResizeMode="CanResize"
AllowsTransparency="False">
<Grid Background="Gray" />
</Window>
在构造函数中:
WindowChrome chrome = new WindowChrome();
chrome.CornerRadius = new CornerRadius(0);
chrome.GlassFrameThickness = new Thickness(0, 1, 0, 0);
chrome.UseAeroCaptionButtons = false;
这给了我:
这可以从各个方向调整大小。我只 希望它能够从顶部调整大小。 (惊喜:我甚至没有将新的chrome
对象分配给任何东西。这是怎么回事?这是我猜的另一个问题。
如何制作 无边框 窗口, 可以使用 >顶部边框 ? (如果我只能使用可以改变颜色的顶部边框来做到这一点,那就最好了。)
答案 0 :(得分:1)
您可能已成功设置WindowChrome.ResizeBorderThickness
属性以删除除顶部以外的所有边框,例如ResizeBorderThickness="0, 5, 0, 0"
。
这可能不是实现结果的最简洁方法,但我已经在这里调整答案取得了一些成功:http://www.eidias.com/blog/2014/1/27/restyle-your-window(这是我发现让WindowChrome
工作的最简单方法):
在ResourceDictionary
:
<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>
这应该会生成一个看起来像最后一个的窗口,但只能从顶部调整大小(只能抓取顶部调整大小的句柄)。