即使设置了 WindowChrome 也会出现默认标题栏
Posted
技术标签:
【中文标题】即使设置了 WindowChrome 也会出现默认标题栏【英文标题】:Default Title bar appearing even with WindowChrome set 【发布时间】:2021-08-25 10:33:48 【问题描述】:我正在使用 WindowChrome,并自定义了我的应用程序的边框和标题栏,它在大多数情况下都可以正常工作:
但是,由于某种原因,当我在某个虚拟机(在本例中是使用 VMware 的德语)上运行时,会出现一个白色边框和标题栏(尽管没有标题),并覆盖我的自定义标题栏:
奇怪的是,我曾尝试使用 Snoop 检查应用程序,即使在 VM 上,Snoop 似乎也不承认存在此栏。例如将鼠标悬停在不同的 WPF 组件上,如果我使用 Snoop 的“放大”功能,标题栏会正确显示!
这个标题栏可能来自哪里以及如何摆脱它?
下面是一个简单应用程序的 XAML 代码,它表现出同样的问题:
<Window x:Class="XamlMessing.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:XamlMessing"
mc:Ignorable="d"
Title="MainWindow" Height="298" Width="399" Background="#FF590B0B">
<Window.Resources>
<WindowChrome x:Key="MyWindowChrome">
<WindowChrome.CaptionHeight>48</WindowChrome.CaptionHeight>
</WindowChrome>
<Style x:Key="MyWindowStyle" TargetType="x:Type Window" BasedOn="StaticResource x:Type Window">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="ResizeMode" Value="NoResize" />
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="UseLayoutRounding" Value="True" />
<Setter Property="TextOptions.TextFormattingMode" Value="Display" />
<Setter Property="WindowState" Value="Normal" />
<Setter Property="WindowStyle" Value="SingleBorderWindow" />
<Setter Property="WindowChrome.WindowChrome" Value="StaticResource MyWindowChrome"/>
</Style>
</Window.Resources>
<Window.Style>
<StaticResource ResourceKey="MyWindowStyle"/>
</Window.Style>
<Grid Margin="0,0,81,107">
<TextBlock HorizontalAlignment="Left" Margin="125,89,0,0" TextWrapping="Wrap" Text="Hello, World" VerticalAlignment="Top" Height="61" Width="175" FontSize="24" Foreground="#FFDAE463"/>
</Grid>
</Window>
【问题讨论】:
【参考方案1】:好的,它似乎可以通过设置来修复...
<WindowChrome.GlassFrameThickness>0</WindowChrome.GlassFrameThickness>
但我仍然想知道是什么导致它首先出现,因为除了 VM 之外的设备不需要该设置...
【讨论】:
以上是关于即使设置了 WindowChrome 也会出现默认标题栏的主要内容,如果未能解决你的问题,请参考以下文章
Spring CSRF:即使在设置请求标头后,Ajax 也会出现 403 错误
有没有办法设置一个选项,即使有错误也会导致 PostgreSQL 脚本继续?