WPFアプリケーションの中で、RichTextBox のHyperlink で、NavigationUri をセットしても、Clickイベントがキックされない。
RichTextBox のHyperlink は、NavigationWindow or Frame で navigation がサポートされているときだけ
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/85171e54-7f98-425e-820d-46a17e19721e
という記事があるが、本当?
ということで、WPFアプリケーションの中で、RichTextBox のHyperlink をクリックしたときに、そのURLを開くには、MouseLeftButtonDown を使って、こんな感じ
<RichTextBox Height="100" Name="richTextBox1" Width="200" >
<FlowDocument>
<Paragraph>
<Run>Paragraph 1</Run>
<Run>Paragraph 2</Run>
<Label >hello</Label>
<Hyperlink NavigateUri="http://uchukamen.com" MouseLeftButtonDown="Hyperlink_MouseLeftButtonDown" >
<Run>http://uchukamen.com</Run>
</Hyperlink>
</Paragraph>
</FlowDocument>
</RichTextBox>
private void Hyperlink_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
System.Diagnostics.Process.Start(((Hyperlink)sender).NavigateUri.ToString());
}
=================
とするか、コードで書く場合は、
var fd = new FlowDocument();
this.RTB.Document = fd;
var p = new Paragraph();
p.Inlines.Add("ハイパーリング");
Hyperlink l = new Hyperlink();
l.Inlines.Add(http://uchukamen.com);
l.NavigateUri = new Uri("http://uchukamen.com");
l.MouseLeftButtonDown +=new MouseButtonEventHandler(l_MouseLeftButtonDown);
p.Inlines.Add(l);
fd.Blocks.Add(p);
——————————–
void l_MouseLeftButtonDown(object sender, RoutedEventArgs e)
{
System.Diagnostics.Process.Start(((Hyperlink)sender).NavigateUri.ToString());
}
大変助かりました。いつも参考にさせていただいてます。ありがとうございました。