簡體   English   中英

指針在RichEditBox UWP上發布

[英]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來鈎住ScrollViewerPointerWheelChanged事件:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM