2015-08-07 2 views
4

Selon UIElement.AddHandler on MSDN, vous pouvez passer un booléen pour l'argument handledEventsToo afin que vous puissiez toujours être averti des événements gérés. Y a-t-il un équivalent XAML à cela?Existe-t-il un équivalent XAML à AddHandler dans lequel vous souhaitez capturer les événements déjà gérés?

Une autre façon de le faire est à travers le EventSetter class which also specifies that property, mais il dit spécifiquement qu'il ne devrait pas être utilisé dans XAML, bien qu'ils ne spécifient pas pourquoi, et je ne peux pas penser à une bonne raison pourquoi pas. Tout ce que je peux penser est de provoquer des ravages lors de l'initialisation du XAML qui (le plus probable) ne serait pas le cas si vous l'avez fait dans le code comme vous le feriez probablement après InitializeComponent. Cependant, c'est une supposition complète.

Je pense en fait à la sous-classe de ma propre classe EventSetter qui ajoutera cette propriété, même si je n'y ai pas encore beaucoup réfléchi, ou même si je sais si c'est possible, même si je ne vois pas pourquoi ne serait pas.

Répondre

0

Je cherchais la même chose mais malheureusement, selon la dernière MSDN documentation:

Réglage des paramètres InvokeHandledEventsToo de la façon dont seront invoquées doivent toujours être effectuées les gestionnaires d'un événement dans le code, conformément avec le principe général selon lequel il est impossible de spécifier InvokeHandledEventsToo lors de l'affectation de gestionnaires d'événements définis pour les instances directement aux événements nommés dans la syntaxe d'attribut XAML. Bien que définissant cette valeur dans XAML ne génère pas d'erreurs de compilation, le XAML résultant produira une exception d'exécution lorsque le style est utilisé.

Je pense que le but de handledEventsToo est de donner plus de flexibilité aux contrôles personnalisés où le code-behind est pas un problème, par opposition au moment où vous codez avec le motif MVVM « normal ».