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

时间:2015-05-19 00:06:39

标签: c# windows-phone-8.1 screen dimensions win-universal-app

我正在构建一个Windows通用SDK,它将检索用户和设备维度,并且我试图从非XAML(或相关)类中获取设备的屏幕大小。当我尝试获取边界时,我收到“HRESULT E_FAIL已从调用COM组件返回”。

var bounds = Window.Current.Bounds;

包含上述代码的''Dimensions'类是从App.xaml.cs文件的App方法实例化的(通过几个父类),这对于获取当前窗口来说太快了吗?

1 个答案:

答案 0 :(得分:2)

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

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