如何以编程方式将窗口视图替换为WinJS应用程序中的XAML页面?

时间:2016-10-20 22:21:33

标签: windows cordova xaml uwp winjs

我有一个cordova应用程序,它有一个使用OpenGL / DirectX的插件,需要接管应用程序窗口。我一切都很好,直到我去实际设置应用程序窗口的内容。当我去实例化XAML页面时,我得到一个关于不在正确的线程上的错误:

  

RPC_E_WRONG_THREAD应用程序调用了为不同线程编组的接口。

我已经看到有些人说这是不可能的,但我觉得必须有可能在某种程度上,除非窗口是沙盒或其他东西。我还认为问题可能是XAML后端服务/框架/在WinJS应用程序中没有设置?在哪种情况下有一些方法可以手动设置它?

我很感激任何帮助,至少可以解释为什么它不可能。我对Windows编程很陌生,我很高兴知道为什么无法完成某些事情。

谢谢!

P.S。

我还试图在调度程序中运行创建XAML类的代码:

Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync

这是我的代码:

void MyComponent::doStuff(){
    if (m_directXPage == nullptr)
    {
        try
        {
            m_directXPage = ref new DirectXPage();
        }
        catch (const std::exception& e)
        {
            e.what();
        }

    }

    // Place the page in the current window and ensure that it is active.
    Window::Current->Content = m_directXPage;
    Window::Current->Activate();
}

1 个答案:

答案 0 :(得分:0)

  

当我去实例化XAML页面时,我收到一个关于没有在正确的线程上的错误。

Cordova异步执行插件。请参阅this case。因此,OpenGL / DirectX插件使用的本机代码无法访问您的UI线程。

目前没有其他方法可以加载XAML定位Windows平台。