如何在 UWP RichEditBox 中捕获超链接点击?
How to catch hyperlink clicks in UWP RichEditBox?
我正在尝试在 UWP 自定义组件中使用 RichEditBox,该组件将通过 XamlIslands 添加到 WPF 应用程序中:
<RichEditBox x:Name="editor" PointerPressed="editor_PointerPressed" Tapped="editor_Tapped" PointerReleased="editor_PointerPressed">
我通过以下方式添加 hyperlinks:
editor.Document.Selection.Link = "\"[the link]\"";
它工作正常,当 Ctrl+Click 时它会在浏览器中打开 link,但是我怎样才能捕捉到那个点击事件?
None 的回调是触发的,我在 RichEditBox 中将其定义为参数,因此根本不会触发 PointerPressed、PointerReleased 和 Tapped 事件。
我是这样做的:
public class CustomRichTextBox: RichEditBox
{
protected override void OnTapped(TappedRoutedEventArgs e)
{
base.OnTapped(e);
var tappedPoint = e.GetPosition(this);
var textRange = Document.GetRangeFromPoint(tappedPoint, PointOptions.ClientCoordinates);
textRange.StartOf(TextRangeUnit.Link, true);
var mylink = textRange.Link;
}
}
我正在尝试在 UWP 自定义组件中使用 RichEditBox,该组件将通过 XamlIslands 添加到 WPF 应用程序中:
<RichEditBox x:Name="editor" PointerPressed="editor_PointerPressed" Tapped="editor_Tapped" PointerReleased="editor_PointerPressed">
我通过以下方式添加 hyperlinks:
editor.Document.Selection.Link = "\"[the link]\"";
它工作正常,当 Ctrl+Click 时它会在浏览器中打开 link,但是我怎样才能捕捉到那个点击事件?
None 的回调是触发的,我在 RichEditBox 中将其定义为参数,因此根本不会触发 PointerPressed、PointerReleased 和 Tapped 事件。
我是这样做的:
public class CustomRichTextBox: RichEditBox
{
protected override void OnTapped(TappedRoutedEventArgs e)
{
base.OnTapped(e);
var tappedPoint = e.GetPosition(this);
var textRange = Document.GetRangeFromPoint(tappedPoint, PointOptions.ClientCoordinates);
textRange.StartOf(TextRangeUnit.Link, true);
var mylink = textRange.Link;
}
}