从空白的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);
}
这只会创建一个新的空窗口(黑线)。
但为什么只是Show
窗口增加了它的' Width
到2
?
输出:
NaN
0
2
可能是Windows相关的一些限制,但我在哪里可以找到这样的限制,例如: MSDN?
它是AvalonDock中窗口放置计算中的错误来源,我想知道我是否可以硬编码" 2
"。
答案 0 :(得分:0)
“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
。