我创建一个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>
这不工作,要么(无法从顶部边框来调整),以及抓地力甚至没有出现在上面。 它停留在右下角(我可以抓地调整,虽然)。
这个答案似乎是回答者可能一开始这样做了,但代码是不可用的。
- 这个答案有一个链接到一个博客帖子 ,我也不是太渴望尝试它,因为我想后面没有代码的解决方案。
再有就是这个答案 :
我得到这种方法的错误:
<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
。?对象的任何东西是怎么做的工作,这是另一个问题,我猜)。
题
如何让我只能与上边框来调整一个无国界的窗口? (这是最好的,如果我能做到这一点,只有一个顶部边框,其颜色可以改变)。
您可能有成功设置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>
这应该产生看起来像你的最后一个窗口,但只能从上(只有前调整手柄可以抢下)调整。