You can use Regex with a value converter in such situation.
Use this for your requirements (original idea from here):
private Regex regex =
new Regex(@"[as+href='(?<link>[^']+)'](?<text>.*?)[/a]",
RegexOptions.Compiled);
This will match all links in your string containing links, and make 2 named groups for each match : link
and text
Now you can iterate through all the matches. Each match will give you a
foreach (Match match in regex.Matches(stringContainingLinks))
{
string link = match.Groups["link"].Value;
int link_start = match.Groups["link"].Index;
int link_end = match.Groups["link"].Index + link.Length;
string text = match.Groups["text"].Value;
int text_start = match.Groups["text"].Index;
int text_end = match.Groups["text"].Index + text.Length;
// do whatever you want with stringContainingLinks.
// In particular, remove whole `match` ie [a href='...']...[/a]
// and instead put HyperLink with `NavigateUri = link` and
// `Inlines.Add(text)`
// See the answer by Stanislav Kniazev for how to do this
}
Note : use this logic in your custom ConvertToHyperlinkedText
value converter.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…