C# 向RichTextBox动态添加超链接

C# 向RichTextBox动态添加超链接,c#,wpf,hyperlink,richtextbox,C#,Wpf,Hyperlink,Richtextbox,我正在尝试使用WPF和C动态地向RichTextBox添加一些超链接,但没有太大成功。我的代码摘要如下: FlowDocument doc = new FlowDocument(); richTextBox1.Document = doc; richTextBox1.IsReadOnly = true; Paragraph para = new Paragraph(); doc.Blocks.Add(para); Hyperlink link = new Hyperlink(); link.

我正在尝试使用WPF和C动态地向RichTextBox添加一些超链接,但没有太大成功。我的代码摘要如下:

FlowDocument doc = new FlowDocument();
richTextBox1.Document = doc;
richTextBox1.IsReadOnly = true;

Paragraph para = new Paragraph();
doc.Blocks.Add(para);

Hyperlink link = new Hyperlink();
link.IsEnabled = true;
link.Inlines.Add("Hyperlink");
link.NavigateUri = new Uri("http://www.google.co.uk");
link.Click += new RoutedEventHandler(this.link_Click);
para.Inlines.Add(link);

....

protected void link_Click(object sender, RoutedEventArgs e) {
    MessageBox.Show("Clicked link!");
}
当我运行此程序时,RichTextBox会显示链接,但它是灰色的,我无法单击它?有人能指出我哪里出了问题吗


谢谢。

默认情况下,
RichTextBox
中的
文档
处于禁用状态,请将
RichTextBox设置为
IsDocumentEnabled
true

这是一种读取
RichTextBox
文本并将其转换为链接的简单解决方案:

richTextBox.IsDocumentEnabled = true;

TextPointer t1 = richTextBox1.Document.ContentStart;
TextPointer t2 = richTextBox1.Document.ContentEnd;
TextRange tr = TextRange(t1,t2);
string URI = tr.Text;

Hyperlink link = new Hyperlink(t1, t2);

link.IsEnabled = true;
link.NavigateUri = new Uri(URI); 
link.RequestNavigate += new RequestNavigateEventHandler(link_RequestNavigate);


private void link_RequestNavigate(object sender,RequestNavigateEventArgs e)
{
    System.Diagnostics.Process.Start(e.Uri.AbsoluteUri.ToString());
}

为什么默认情况下不启用此选项?