Есть ли XAML-эквивалент AddHandler, в котором вы хотите перехватывать уже обработанные события?

Согласно UIElement.AddHandler на MSDN, вы можете передать логическое значение для handledEventsToo аргумент, так что вы все еще можете получать уведомления об обработанных событиях. Есть ли эквивалент XAML для этого?

Еще один способ сделать это - через класс EventSetter, который также определяет это свойство, но в нем, в частности, говорится, что его не следует использовать в XAML, хотя они не указывают почему, и я не могу придумать вескую причину, почему нет.

Единственное, о чем я могу думать, это то, что это вызывает хаос при инициализации XAML, что (скорее всего) не будет иметь место, если вы сделаете это в коде, как вы, скорее всего, сделаете это после InitializeComponent. Однако это полное предположение.

На самом деле я подумываю о создании подкласса моей собственной версии класса EventSetter, которая добавит это свойство, хотя я еще не придал этому большого значения или даже не знаю, возможно ли это, хотя я не понимаю, почему это не будет,

1 ответ

Я искал то же самое, но, к сожалению, согласно последней документации MSDN:

Установка в InvokeHandledEventsToo характеристик того, как будут вызываться обработчики событий, всегда должна выполняться в коде в соответствии с общим принципом, согласно которому нельзя указывать InvokeHandledEventsToo при назначении определенных обработчиков событий для экземпляров непосредственно именованным событиям в синтаксисе атрибута XAML. Хотя установка этого значения в XAML не приводит к ошибкам во время компиляции, результирующий XAML выдаст исключение во время выполнения при использовании стиля.

Я думаю, что цель handledEventsToo заключается в предоставлении большей гибкости настраиваемым элементам управления, где выделение кода не является проблемой, в отличие от того, когда вы кодируете с помощью "нормального" шаблона MVVM.

Другие вопросы по тегам