[英]Pointer Released On RichEditBox UWP
我想在RichEditBox中使用PointerReleased事件,但是它不起作用。
XAML:
<RichEditBox x:Name="RebText" PointerReleased="RebText_PointerReleased"/>
Xaml.cs:
private void RebText_PointerReleased(object sender, PointerRoutedEventArgs e)
{
throw new NotImplementedException();
}
提前致謝!
共振這是行不通的:
PointerRoutedEventArgs
具有Handled
bool
屬性。 如果有任何PointerEventHandler
將此Handled
標記為true,則事件處理程序鏈不再繼續。
現在, RichEditBox
控件的設計器由於某些明顯的原因而不得不掛接PointerReleased
事件,並且在處理程序中,他必須將Handled
標記為true。 結果,您添加到事件的處理程序將不會被調用。
在其他控件中也會發生這種情況。 一個示例是:您不能僅通過向其添加EventHandler
來鈎住ScrollViewer
的PointerWheelChanged
事件:
myScrollViewer.PointerWheelChanged += Some_Handler;
該處理程序將被添加,但出於相同的原因將不會被調用。
解:
所有UIElement
都有一個AddHandler方法。 就像+=
運算符一樣,此方法還向事件添加EventHandler
,但是好處是,您可以:
即使事件在其他地方處理,也要調用提供的處理程序
因此,您應該做的是:
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運行時事件系統用於控件合成的預期設計。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.