指针在RichEditBox UWP上发布

时间:2019-03-02 16:47:11

标签: uwp richeditbox

我想在RichEditBox中使用PointerReleased事件,但是它不起作用。

Xaml:

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

Xaml.cs:

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

谢谢!

1 个答案:

答案 0 :(得分:0)

无法正常工作:

PointerRoutedEventArgs具有Handled bool属性。如果有任何PointerEventHandler将此Handled标记为true,则事件处理程序链不再继续。

现在,RichEditBox控件的设计者由于某些明显的原因不得不钩住PointerReleased事件,并且在处理程序中,他必须将Handled标记为true。结果,您添加到事件的处理程序将不会被调用。

这在其他控件中也会发生。一个示例是:您不能仅通过向其添加PointerWheelChanged来钩住ScrollViewer的{​​{1}}事件,例如:

EventHandler

将添加处理程序,但出于相同原因将不会调用该处理程序。

解决方案:

所有myScrollViewer.PointerWheelChanged += Some_Handler; 都具有AddHandler方法。就像UIElement运算符一样,此方法也将EventHandler添加到事件中,但是好处是,您可以:

  

即使事件被处理,提供的处理程序也会被调用   其他地方

因此,您应该做的是类似

+=

然后定义RebText.AddHandler(RichEditBox.PointerReleasedEvent, new PointerEventHandler(RebText_PointerReleased), true);

RebText_PointerReleased

第三个参数是您指定要调用此处理程序的位置,即使该事件被标记为已处理。

注意:,处理已处理的事件不是一个好习惯,因为,正如文档所说:

  

请勿常规地请求重新处理路由事件,因为它会干扰   Windows Runtime事件系统的预期设计   控制合成。