问题是Windows 10边框太厚了。
如果您没有看到下面的屏幕截图,那么请点击此处:
如何制作像Google Chrome(或Windows 10&n;资源管理器)这样的1px边框?负1px不好用,它使边框变白并且它仍然很厚。
Framework是.NET Framework 4.6.2。
代码:
<Window
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:AnotherOffice"
xmlns:System="clr-namespace:System;assembly=mscorlib" x:Name="window" x:Class="AnotherOffice.MainWindow"
mc:Ignorable="d"
Title="AnotherOffice Text v0.0.1 - New document" Height="720" Width="1280" Background="{x:Null}" WindowState="Maximized" Margin="0" BorderThickness="8">
<Window.Style>
<Style TargetType="{x:Type Window}">
<Setter Property="WindowChrome.WindowChrome">
<Setter.Value>
<WindowChrome
GlassFrameThickness="8,40,8,8"
ResizeBorderThickness="2"
CornerRadius="0"
CaptionHeight="32"
UseAeroCaptionButtons="True"
/>
</Setter.Value>
</Setter>
</Style>
</Window.Style>
<local:AnotherOfficeTextBase Margin="0,32,0,0"/>
</Window>
UPD:试图使用此代码:
if (SystemParameters.IsGlassEnabled)
{
WindowChrome winChrome = new WindowChrome();
winChrome.CaptionHeight = 32;
winChrome.CornerRadius = new CornerRadius(0);
winChrome.GlassFrameThickness = new Thickness(8, 32, 8, 8);
winChrome.ResizeBorderThickness = new Thickness(1);
winChrome.UseAeroCaptionButtons = true;
WindowChrome.SetWindowChrome(this, winChrome);
InitializeComponent();
} else
{
MainWindowNoGlass fallback = new MainWindowNoGlass();
fallback.Show();
Close();
}
而且......没有效果。
答案 0 :(得分:1)
这是我想出的最简单的解决方案:
摆脱与边框厚度,窗口铬等有关的所有代码。 在主窗口的xaml内容区域的顶部,粘贴:
<WindowChrome.WindowChrome>
<WindowChrome GlassFrameThickness="0.5,28,0,0.5" NonClientFrameEdges="Right"/>
</WindowChrome.WindowChrome>
<Window.Template>
<ControlTemplate>
<ContentPresenter Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, Path=Content}"/>
</ControlTemplate>
</Window.Template>
这将处理一切。您可以在非客户区域中轻松绘制内容,窗口看起来正常(足够)。如果您确实需要背景为白色,则可以将GlassFrameThickness
设置为-1
,并在底部和左侧绘制0.5个单位边框。否则,您只需绘制一个大的白色矩形。