Вы можете использовать класс Hyperlink . Это FrameworkContentElement, так что вы можете использовать его в TextBlock или FlowDocument или в любом другом месте, где вы можете встраивать контент.
<TextBlock>
<Run>Text</Run>
<Hyperlink NavigateUri="http://stackoverflow.com">with</Hyperlink>
<Run>some</Run>
<Hyperlink NavigateUri="http://google.com">hyperlinks</Hyperlink>
</TextBlock>
Возможно, вы захотите использовать RichTextBox как часть вашего редактора. Это будет размещать FlowDocument, который может содержать контент, такой как гиперссылки.
Обновление: есть два способа обработки кликов по гиперссылке. Одним из них является обработка события RequestNavigate . Это маршрутизируемое событие , поэтому вы можете либо прикрепить обработчик к самой гиперссылке, либо привязать его к элементу выше в дереве, например Window или RichTextBox:
// On a specific Hyperlink
myLink.RequestNavigate +=
new RequestNavigateEventHandler(RequestNavigateHandler);
// To handle all Hyperlinks in the RichTextBox
richTextBox1.AddHandler(Hyperlink.RequestNavigateEvent,
new RequestNavigateEventHandler(RequestNavigateHandler));
Другой способ - использовать команду , задав для свойства Command в гиперссылке реализацию ICommand . Метод Executed в ICommand будет вызываться при нажатии на гиперссылку.
Если вы хотите запустить браузер в обработчике, вы можете передать URI в Process.Start :
private void RequestNavigateHandler(object sender, RequestNavigateEventArgs e)
{
Process.Start(e.Uri.ToString());
}