Указатель выпущен на RichEditBox UWP - PullRequest
0 голосов
/ 02 марта 2019

Я хотел бы использовать событие PointerReleased в RichEditBox, но оно не работает.

Xaml:

<RichEditBox x:Name="RebText" PointerReleased="RebText_PointerReleased"/>

Xaml.cs:

private void RebText_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    throw new NotImplementedException();
}

Заранее спасибо!

1 Ответ

0 голосов
/ 03 марта 2019

Reson это не работает:

PointerRoutedEventArgs имеет Handled bool Свойство.Если какой-либо PointerEventHandler помечает это Handled как истинное, цепочка обработчика событий больше не продолжается.

Теперь разработчику элемента управления RichEditBox пришлось перехватить событие PointerReleased для некоторых очевидныхпричина, и в обработчике он должен был пометить Handled как истину.В результате обработчик, который вы добавили к событию, не будет вызван.

Это также происходит в других элементах управления.Например: вы не можете перехватить событие PointerWheelChanged для ScrollViewer, просто добавив к нему EventHandler, например:

myScrollViewer.PointerWheelChanged += Some_Handler;

Обработчик будет добавлен, но он выигралне вызываться по той же причине.

Решение:

Все UIElement имеют метод AddHandler .Этот метод также добавляет EventHandler s к событиям, как это делает оператор +=, но преимущество в том, что вы можете:

вызывать предоставленный обработчик, даже если событие обрабатывается в другом месте

Итак, вы должны сделать что-то вроде:

RebText.AddHandler(RichEditBox.PointerReleasedEvent, new PointerEventHandler(RebText_PointerReleased), true);

и затем определить RebText_PointerReleased:

private void RebText_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    // your event handling code here
}

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

Примечание: не рекомендуется обрабатывать уже обработанное событие, поскольку в качестве документаговорит:

Не просите регулярно обрабатывать перенаправленное событие, потому что это мешает планированию системы событий среды выполнения Windows для компоновки управления.

...