Window.Current.Bounds throws HRESULT E_FAIL 已从对 COM 组件的调用返回

Window.Current.Bounds throws HRESULT E_FAIL has been returned from a call to a COM component

我正在构建一个 Windows 通用 SDK,它将检索用户和设备尺寸,我正在尝试从非 XAML(或相关)class。当试图获得边界时,我收到 "HRESULT E_FAIL has been returned from a call to a COM component".

var bounds = Window.Current.Bounds;

我的 'Dimensions' class 包含上述代码是从 [=20= 的 App 方法实例化的(通过几个父 classes) ] 文件获取当前 window 是否为时过早?

太快了。我不会提前缓存数据,而是在需要时查询它(实际上,您需要缓存以供非调度程序线程使用)。对于通用应用程序,您需要处理 window 大小更改和多个 windows。

如果您是特定于移动设备的,您应该能够在 OnLaunched 中获得 Window 边界,但对于 SDK 来说,处理 CoreApplication.Activated 事件会更加透明。您可以在 App 构造函数中连接它,然后在它触发时获取 window 详细信息,ActivationKind 告诉您这是一个 windowed 激活。