2
我有一个RichTextBox
,用户可以编辑创建一个超链接(在我的情况下,到另一个页面的文档,而不是一个外部的URL)。成功创建链接后,我现在需要能够将其删除。如何删除Silverlight RichTextBox中的超链接?
我有标识,我已经得到了在当前选择的超链接代码:
TextSelection linkText = richTextBox.Selection;
if (linkText != null && !string.IsNullOrWhiteSpace(linkText.Text))
{
XElement root = XElement.Parse(linkText.Xaml);
XNamespace ns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
XElement linkElement = root.Element(ns + "Paragraph").Element(ns + "Hyperlink");
if (linkElement != null)
{
// Get here if have a Hyperlink. How do I remove or update?
}
}
不过,我现在被困在了if
测试中时,该位。如何找到超链接,以便我可以完全删除它?
我对建立超链接的代码是:
TextSelection linkText = richTextBox.Selection;
var hyperlink = new Hyperlink();
hyperlink.Inlines.Add(linkText.Text);
if (!String.IsNullOrEmpty(selectedTopic)) // A string holding the link target
{
// Setup hyperlink here
}
linkText.Insert(hyperlink);
我已经设法解决如何更新超级链接:
foreach (var block in richTextBox.Blocks)
{
Paragraph p = block as Paragraph;
foreach (var inline in p.Inlines)
{
var hyperlink = inline as Hyperlink;
if (hyperlink != null && hyperlink.NavigateUri.AbsoluteUri.Contains(currentLink))
{
hyperlink.NavigateUri = new Uri(newLink);
}
}
}
我可以用同样的方法来删除超链接,但是如何将Hyperlink
转换为正常的Inline
?
我正在寻找类似'Remove'的东西。这会将文字留在后面吗? – ChrisF
@ChrisF:使用将内容保留在原位的版本进行编辑仅删除包装超链接。 – AnthonyWJones