Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF XAML Intellisense不';无法为自定义路由事件处理程序正常工作_Wpf_Xaml_Intellisense - Fatal编程技术网

WPF XAML Intellisense不';无法为自定义路由事件处理程序正常工作

WPF XAML Intellisense不';无法为自定义路由事件处理程序正常工作,wpf,xaml,intellisense,Wpf,Xaml,Intellisense,我使用以下构造定义了自定义路由事件(名称已更改): 公共类MyRoutedEventArgs:RoutedEventArgs {…} 公共委托无效MyRoutedEventHandler(对象发送方,MyRoutedEventTargets参数) 公共静态只读RoutedEvent MyEvent MyClass.MyEvent= EventManager.RegisterRoutedEvent(“MyEvent”,RoutingStrategy.Tunnel,typeof(MyRoutedEv

我使用以下构造定义了自定义路由事件(名称已更改):

公共类MyRoutedEventArgs:RoutedEventArgs {…}

公共委托无效MyRoutedEventHandler(对象发送方,MyRoutedEventTargets参数)

公共静态只读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。

我认为这是当前您必须接受的限制。但您所要做的就是,一旦泛型类型的eventhandler自动生成,将生成的方法的签名更改为使用MyRoutedEventArgs而不是RoutedEventArgs。尽管仍然丑陋(我们不应该被迫这样做),我认为这不是一个大问题


有人用VS 2010试用过吗?

我认为这是目前你必须接受的限制。但您所要做的就是,一旦泛型类型的eventhandler自动生成,将生成的方法的签名更改为使用MyRoutedEventArgs而不是RoutedEventArgs。尽管仍然丑陋(我们不应该被迫这样做),我认为这不是一个大问题


有人在VS 2010上试用过吗?

没有在VS 2010上试用过。奇怪的是,对于框架本身带有非泛型处理程序(如MouseDown等)的事件,它可以正常工作。还没有在VS2010上试用过。奇怪的是,对于框架本身带有非泛型处理程序(如MouseDown等)的事件,它可以正常工作。