C# 运行Javascript+;C上通用windows应用程序的WinJS代码#
不久前,我们开始在Javascript+WinJS上为Win8.1/Win10开发应用程序(我没有决定使用Javascript,但很好,已经完成了)。半年后,我们将产品发布到Windows应用商店,几个月后,我们意识到我们无法在Javascript上实现我们想要的所有功能。所以现在我们决定切换到C#/XAML。但是,我们已经在Javascript+WinJS上编写了相当大的代码库。我们可以在C#上构建新的应用程序(UI,新功能),但也可以重用当前的JS代码。我读过很多MSDN,就我所知,在C#上创建类库并从JS中使用它是可能的,但我们的情况正好相反——我需要将JS+WinJS封装在一些“组件”中,并从新的C#应用程序中使用它。可能吗?我甚至没有在VisualStudio中看到像“通用应用程序Javasctipt库”这样的项目类型 事情可能没那么糟,我们的应用程序是纯JS的(我总是可以把WebView放到表单上并评估一些JS代码)。但是WinJS在WebView中不起作用C# 运行Javascript+;C上通用windows应用程序的WinJS代码#,c#,winjs,windows-10,win-universal-app,C#,Winjs,Windows 10,Win Universal App,不久前,我们开始在Javascript+WinJS上为Win8.1/Win10开发应用程序(我没有决定使用Javascript,但很好,已经完成了)。半年后,我们将产品发布到Windows应用商店,几个月后,我们意识到我们无法在Javascript上实现我们想要的所有功能。所以现在我们决定切换到C#/XAML。但是,我们已经在Javascript+WinJS上编写了相当大的代码库。我们可以在C#上构建新的应用程序(UI,新功能),但也可以重用当前的JS代码。我读过很多MSDN,就我所知,在C#上
所以我不能将我们的JS+WinJS代码用作“类库”,也不能在WebView中运行它。我是否有可能使用其他方法?WinJS只是一个JS库,它不与任何Windows运行时API绑定。WinJS甚至可以用于web开发() standart WinJS应用程序模板处理
应用程序.Activated
事件,并在处理程序中调用WinJS.UI.processAll()
。只要您在WebView
控件中托管代码,Application.Activated
事件不会触发,因为应用程序已经激活
问题很容易解决,只需显式调用WinJS.UI.processAll()
:
<script>
WinJS.UI.processAll();
</script>
WinJS.UI.processAll();
WinJS只是一个JS库,它不与任何Windows运行时API绑定。WinJS甚至可以用于web开发()
standart WinJS应用程序模板处理应用程序.Activated
事件,并在处理程序中调用WinJS.UI.processAll()
。只要您在WebView
控件中托管代码,Application.Activated
事件不会触发,因为应用程序已经激活
问题很容易解决,只需显式调用WinJS.UI.processAll()
:
<script>
WinJS.UI.processAll();
</script>
WinJS.UI.processAll();
事实上,WinJS本身甚至可以在浏览器中运行。但是,我们的JS+WinJS应用程序也使用WinRT类型(Windows.Media、Windows.Storage、Windows.Security等),我无法从运行在WebView中的JS创建这些类型的对象。@Ezh我担心从WebView使用WinRT的唯一方法是通过ScriptNotify
。事实上,WinJS本身甚至可以在浏览器中运行。但是,我们的JS+WinJS应用程序也使用WinRT类型(Windows.Media、Windows.Storage、Windows.Security等),我无法从运行在WebView中的JS创建这些类型的对象。@Ezh恐怕从WebView使用WinRT的唯一方法是通过ScriptNotify
。