【问题标题】:Window.Current.Bounds throws HRESULT E_FAIL has been returned from a call to a COM componentWindow.Current.Bounds throws HRESULT E_FAIL 已从对 COM 组件的调用中返回
【发布时间】:2015-07-30 15:17:09
【问题描述】:

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

var bounds = Window.Current.Bounds;

包含上述代码的“维度”类是从 App.xaml.cs 文件的App 方法实例化的(通过几个父类),现在获取当前窗口还为时过早吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 这也不会告诉你“屏幕大小”——它会告诉你窗口的大小。
    猜你喜欢
    • 2023-03-15
    • 2016-12-12
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多