gpt4 book ai didi

c# - 为什么 (WPF) 窗口不是 0.0 像素宽?

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:44 24 4
gpt4 key购买 nike

从一个空白的 WpfApplication 开始并将其粘贴到 App 类中:

protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

var w = new Window
{
ResizeMode = ResizeMode.NoResize,
WindowStyle = WindowStyle.None,
Background = Brushes.Transparent,
};

Console.WriteLine(w.Width);

w.Width = 0.0;
//w.MinWidth = 0.0; // makes no difference

Console.WriteLine(w.Width);

w.Show();

Console.WriteLine(w.Width);
}

这只是创建了一个新的空窗口(一条黑线)。

但为什么只是显示窗口将其宽度增加到2
输出:

NaN  
0
2

可能是一些与 Windows 相关的限制,但我在哪里可以找到它的文档,例如msdn?

这是 AvalonDock 中窗口位置计算错误的根源,我想知道我是否可以对“2”进行硬编码。

最佳答案

“2”的来源可能 SystemMetrics :

[DllImport("user32.dll")]
static extern int GetSystemMetrics(int smIndex);
...
var SM_CXBORDER = 5; // source http://referencesource.microsoft.com/#UIAutomationClientsideProviders/MS/Win32/NativeMethods.cs
...
Console.WriteLine(GetSystemMetrics(SM_CXBORDER));

输出为“1”

所以:

1 左边框 + 1 右边框 = 2.

关于c# - 为什么 (WPF) 窗口不是 0.0 像素宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36624838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com