如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
How to catch own C# events in Javascript code in Win8 Metro apps?
我在谷歌上找到了如何在Javascript代码中实现C#事件的事件侦听器的例子,但不知怎么的,在我的情况下,似乎什么都不起作用。
我的C#类:
namespace Engine
{
public delegate void EventDelegate();
public sealed class MyClass;
{
public event EventDelegate nowEvent;
public void runJobs()
{
if (nowEvent == null)
{
Debug.WriteLine("What? Nobody subscribed???");
}
}
}
}
Javascript端:
WinJS.Namespace.define("App", {
myclass: new Engine.MyClass()
});
App.myclass.addEventListener("nowEvent", function onReady() {
console.error("hello");
});
App.myclass.runJobs();
将onReady函数附加到nowEvent事件并运行runJobs()后,MyClass.nowEvent为null。
在JS中订阅自己类的C#事件的工作语法是什么。有什么想法吗?
编辑:甘比特建议后:
App.myclass.addEventListener("nowevent", function onReady() {
console.error("hello");
});
事件指针不再为空,但当我触发事件时,我得到:
Engine.winmd 中首次出现类型为"System.InvalidCastException"的异常
您可能会遇到投影更改所用语言名称大小写的方式。对于Javascript,事件的约定是小写的。因此,在C#中,您将事件定义为"nowEvent",在Javascript中,您称其为"nowEvent"。
App.myclass.addEventListener("nowevent", function onReady() {
console.error("hello");
});
您可以使用WinJS.Application.queueEvent("myEvent")
函数。然后,您可以通过WinJS.Application.addEventListener("myEevent",function(){});
将事件侦听器添加到WinJS.Application
您还可以使用WinJS.Utilities eventMixin
将事件添加到类中。
WinJS.Class.mix(EventObject, eventMixin);
然后,您可以在应用了mixin的类上使用addEventListener、removeEventListener等。
相关文章:
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- 默认事件发生后,我如何执行自己的代码
- 从自己的事件中访问angular$scope
- Kendo日期选择器值方法没有't引发自己的变革事件
- 用Javascript制作我自己的事件投掷器
- 如何在 redis 中将 JS 对象传递给它自己的事件参数 - 连接事件上的哨兵
- CodeMirror 使用“信号”触发自己的事件
- JSTree 绑定我自己的点击事件
- KineticJS - 如何制作自己的事件,或者在物体移动时如何做某事
- 让扩展形状类听舞台上使用的自己的事件
- 如何访问元素's使用jQuery在其自己的事件处理程序中的数据
- 无法从我自己的事件委派系统中删除事件
- 定义我自己的React事件类型
- 从多选容器中获取所有选中的val()'s,根据它自己的click:事件
- Angular在自己的控制器中处理事件
- 在独立的函数和自己的变量中使用事件
- 嵌套列表项上的单击事件,每个都有自己的单击处理程序
- 如何在aptana3中自定义我自己的代码片段后启用键盘事件
- 单击时禁用父级事件,但允许子级维护自己的事件
- 如何使用元素检查器在网站上运行我自己的事件处理Javascript代码