我使用以下构造(名称已更改)定义了自定义路由事件:
public class MyRoutedEventArgs:RoutedEventArgs {...}
public delegate void MyRoutedEventHandler(Object sender,MyRoutedEventArgs args);
public static readonly RoutedEvent MyEvent;
MyClass.MyEvent = EventManager.RegisterRoutedEvent(“MyEvent”,RoutingStrategy.Tunnel,typeof(MyRoutedEventHandler),typeof(MyClass));
接下来,我正在创建一个CLR事件包装器:
公共事件MyRoutedEventHandler MyEvent { 添加{AddHandler(MyEvent,value); } remove {RemoveHandler(MyEvent,value); } }
问题是当我如上所示定义它时,XAML intellisense不能用于自动生成处理程序方法体。我注意到,如果你改变你的CLR事件包装器使用通用的RoutedEventHandler类型,一切正常!但是在这种情况下,自动生成的方法获得一个通用的RoutedEventArgs(好吧,正确地对应于RoutedEventHandler),这迫使我手动将其重写为MyRoutedEventArgs。
答案 0 :(得分:1)
我认为这是你必须忍受的限制。但是,您需要做的就是,一旦自动生成泛型类型的事件处理程序,就更改生成方法的签名以使用MyRoutedEventArgs而不是RoutedEventArgs。虽然仍然很难看(我们不应该被迫这样做)但我认为这不是一个大问题。
有人试过VS 2010吗?