2009-12-07 75 views
1

正常工作,我定義具有以下結構的自定義路由事件(名稱變更):WPF XAML IntelliSense不自定義路由事件處理程序

公共類MyRoutedEventArgs:RoutedEventArgs {...}

public delegate void MyRoutedEventHandler(Object sender,MyRoutedEventArgs args);

public static readonly RoutedEvent MyEvent; EventManager.RegisterRoutedEvent(「MyEvent」,RoutingStrategy.Tunnel,typeof(MyRoutedEventHandler),typeof(MyClass));

接下來,我創建一個CLR事件包裝:

公共事件MyRoutedEventHandler MyEvent { 加{的AddHandler(MyEvent,值); } remove {RemoveHandler(MyEvent,value); } }

問題是,當我如上所示定義它時,XAML intellisense不能用於自動生成處理程序方法主體。我注意到,如果你改變你的CLR事件包裝器來使用通用的RoutedEventHandler類型,那麼一切正常!然而,在這種情況下,自動生成的方法獲得了一個通用的RoutedEventArgs(很好,正確地對應於RoutedEventHandler),這迫使我手動將其重寫爲MyRoutedEventArgs。

回答

1

我認爲這是目前您必須忍受的限制。但是你所要做的就是,一旦泛型類型的事件處理器被自動生成,將生成方法的簽名更改爲使用MyRoutedEventArgs而不是RoutedEventArgs。 Allthough仍然醜陋(我們不應該被迫這樣做),我認爲這不是一個大問題。

任何人試過VS 2010?

+0

VS 2010上沒有嘗試過。奇怪的是,對於非泛型處理程序(如MouseDown等)的框架自己的事件,它可以正常工作。 – user226150 2009-12-07 19:57:01