C# 启动时忽略WindowsStartUpLocation最小化

C# 启动时忽略WindowsStartUpLocation最小化,c#,.net,wpf,C#,.net,Wpf,(建议的副本处理以WindowState.Normal开头的窗口) 如果应用程序 WindowStartupLocation = WindowStartupLocation.CenterScreen; 首先是 WindowState = WindowState.Minimized; 只有到那时才有 WindowState = WindowState.Normal; 窗口不显示在屏幕中央 除了手动计算屏幕中心外,还有什么方法可以解决这个问题吗?没有。正如属性所示,它是一个启动位置,而不是在W

(建议的副本处理以
WindowState.Normal
开头的窗口)

如果应用程序

WindowStartupLocation = WindowStartupLocation.CenterScreen;
首先是

WindowState = WindowState.Minimized;
只有到那时才有

WindowState = WindowState.Normal;
窗口不显示在屏幕中央


除了手动计算屏幕中心外,还有什么方法可以解决这个问题吗?

没有。正如属性所示,它是一个启动位置,而不是在
WindowState
的每次转换中应用的位置。一旦它被显示,您就可以进行计算。

一个选项是启动窗口中心屏幕,但在它实际显示在屏幕上之前将其最小化,如下所示:

WindowStartupLocation = WindowStartupLocation.CenterScreen;
SourceInitialized += (s, e) => WindowState = WindowState.Minimized;

SourceInitialized
事件是在设置窗口位置之后,但在显示之前引发的。

考虑到属性是
WindowStartupLocation
并且您将其最小化,这对我来说是有意义的。问题的可能重复明确排除了“重复”中的任何解决方案。@Andy实际上,不,可能是标题对标题,但确实说明了OP问题的现实情况。@DonBoitnott不。名义上,这个答案假设的时间比第一次显示窗口的时间晚。我指的是第一次显示窗口。
一旦显示,您就可以计算。
-是。但我的问题是关于第一次,这毫无意义。此时将显示该窗口。启动结束。稍后设置
WindowState
后,它将不再启动,因此该属性不适用。你不能希望如此。即使你是对的,在某个窗口位于某个位置后,最小化并规范化它将再次在同一位置显示它。这应该发生在这里。