在WPF应用程序中使用WinRT API进行方向化(Windows 8.1,VS问题)

时间:2015-05-28 07:17:33

标签: c# wpf windows-8 windows-runtime microsoft-metro

我已关注this tutorial。 我的第一个问题是,当我想添加对Windows的引用时,我有一个完整的引用列表enter image description here

正如您所看到的,我将所有内容添加到我的项目中以使其工作,以及本教程的其他参考。 但我的应用程序不会编译:(

我有这个错误:

未实施(例外情况HRESULT:0x80004001(E_NOTIMPL))

这一个

无法解析对Windows运行时类型的依赖关系' Windows.Foundation.Metadata.PlatformAttribute'。使用ReflectionOnly API时,必须通过ReflectionOnlyNamespaceResolve事件按需解析相关的Windows运行时程序集。'

我见过this post但似乎作者遇到的问题与我的问题不一样,因为他将它用于运行时(异常抛出),而我必须编译时。

有人知道如何继续吗?

有关信息:这样做的主要目的是访问Windows.Devices.Sensor以获得屏幕方向,因为我们有一个应用程序从WPF中的WebCam拍照,当我们在Surface平板电脑上使用它时,屏幕上的图片显示没有跟随平板电脑的方向,这使得图片很难拍摄。

全部谢谢

1 个答案:

答案 0 :(得分:1)

这对我来说很好 - 不确定为什么要获取运行时元数据(每个顶级命名空间一个winmd)而不是设计时元数据(单个winmd)。这就是我在8.1机器上所做的:

  1. 文件 - >新项目 - > C#WPF
  2. 卸载项目并进行编辑
  3. 在现有<TargetPlatformVersion>8.1</TargetPlatformVersion>元素
  4. 的正下方添加<TargetFrameworkVersion>4.5</TargetFrameworkVersion>
  5. 参考文献 - &gt;添加参考 - &gt; Windows - &gt;核心 - &gt;视窗
  6. 然后我将以下代码添加到MainWindow.InitializeComponent

    var sos = Windows.Devices.Sensors.SimpleOrientationSensor.GetDefault();
    Debug.WriteLine(sos == null ? "No sensor" : sos.GetCurrentOrientation().ToString());
    

    它编译并正确运行,但我的桌面上没有传感器,因此打印“无传感器”。

    如果您无法通过参考用户界面向您显示设计时元数据,请浏览至C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral\Windows.winmd