2009-12-07 2 views
1

je définissais un événement routé personnalisée correctement pour routés personnalisés pas avec les constructions suivantes (noms modifiés):WPF XAML IntelliSense ne gestionnaires d'événements

MyRoutedEventArgs public class: RoutedEventArgs {...}

délégué public void MyRoutedEventHandler (expéditeur d'objet, arguments MyRoutedEventArgs); Public static readonly RoutedEvent MyEvent;

MyClass.MyEvent = EventManager.RegisterRoutedEvent ("MyEvent", RoutingStrategy.Tunnel, typeof (MyRoutedEventHandler), typeof (MyClass));

Ensuite, je crée une enveloppe d'événement CLR:

événement public MyRoutedEventHandler MyEvent {{ add AddHandler (MyEvent, valeur); } remove {RemoveHandler (MyEvent, valeur); } }

Le problème est que lorsque je le définis comme indiqué ci-dessus, IntelliSense XAML ne fonctionne pas pour générer automatiquement le corps de la méthode gestionnaire. Ce que j'ai remarqué est que si vous changez votre wrapper d'événement CLR pour utiliser le type générique RoutedEventHandler, tout fonctionne! Cependant dans ce cas, la méthode générée automatiquement obtient un RoutedEventArgs générique (bien, correspondant correctement à RoutedEventHandler), ce qui me force à le réécrire manuellement en tant que MyRoutedEventArgs.

Répondre

1

Je pense que c'est actuellement une limite avec laquelle vous devez vivre. Mais tout ce que vous avez à faire est, une fois que le gestionnaire d'événement pour le type générique a été généré automatiquement, changez la signature de la méthode générée pour utiliser MyRoutedEventArgs au lieu de RoutedEventArgs. Bien que toujours moche (nous ne devrions pas être obligés de le faire), je pense que ce n'est pas un gros problème.

Quelqu'un a essayé avec VS 2010?

+0

N'a pas essayé sur VS 2010. La chose étrange est que pour les propres événements de cadre avec des gestionnaires non génériques (tels que MouseDown, etc.) il fonctionne parfaitement bien. – user226150