我们正在使用JavaScript(WinJS)构建一个WinRT应用程序,该应用程序通过C#WinRT组件库访问REST / JSON Web服务。在组件库中,我们有一个Logon控件(很像WebAuthenticationBroker),它允许我们在我们的REST服务中使用ACS登录。
应用层:
问题:当尝试创建登录控件时,即使我通过Windows.UI.Core调用它,WinRT也会抛出“HRESULT:0x8001010E(RPC_E_WRONG_THREAD)”异常(进入UserControl的构造函数时) .CoreWindow.GetForCurrentThread()。Dispatcher (在MSDN article I found about WinJS/C++ component中推荐)。
如果我从Xaml / C#客户端调用它,代码可以使用或不使用Windows.UI.Core.CoreWindow.GetForCurrentThread()。Dispatcher.RunAsync()。
我试图谷歌这个,并阅读所有UserControl,Dispatcher和WinJS文档,但我没有找到任何相关的。这是一个已知问题吗?有人可以提出解决方法吗?
由于我是第一次发表海报,请保持温和:-)非常欢迎任何帮助!
答案 0 :(得分:3)
Xaml-based WinRT controls cannot be used in Javascript-based WinRT projects.您可以使用任何WinRT类库,但不能使用其中的Xaml控件。
如果您仍想将HTML-Javascript与Xaml结合使用,我建议您创建一个基于Xaml的项目,并将HTML UI包装在WebView control中。
答案 1 :(得分:2)
我不希望在HTML / WinJS应用程序中使用WinRT / XAML UI。您可能需要使用一些回调来请求在WinJS应用程序/组件库而不是XAML库中创建UI。