Solved this by changing the event to a PreviewLeftMoseButtonDown
:
<RichTextBox.Resources>
<Style TargetType="Hyperlink">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="Hyperlink_PreviewMouseLeftButtonDown" />
</Style>
</RichTextBox.Resources>
Code behind:
private void Hyperlink_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl))
{
var hyperlink = (Hyperlink)sender;
Process.Start(hyperlink.NavigateUri.ToString());
}
}
This results in the cursor changing to hand on Ctrl down and the web browser firing the link on mouse button click. I'm using the Extended WPF ToolBox RTB in WPF .NET4.5 & with the RTB formatting to Rtf to results may differ with other tools.