TextBlock有70%的时间拒绝制作超链接

本文关键字:超链接 拒绝 时间 TextBlock | 更新日期: 2023-09-27 18:28:22

真的很奇怪的问题,简而言之,我正在对文本块中的每个单词进行foreach,如果这个单词以"@"开头,我想用它创建一个用户名超链接。然而,在大约70%的情况下,它会很好地替换文本,但它不会变成超链接。

部分代码:

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    var kaas = Tweet.Split(' ');
    foreach (string a in kaas)
    {
        if (a.StartsWith("@"))
        {
            Hyperlink uname = new Hyperlink();
            uname.NavigateUri = new Uri("http://twitter.com/" + "xarinatan");
            uname.RequestNavigate += new RequestNavigateEventHandler(Hyperlink_RequestNavigateEvent);
            uname.Inlines.Add("ASDAS");
            TweetBlock.Inlines.Add(uname);
            //TweetBlock.Inlines.Add(Username(a));
            TweetBlock.Inlines.Add(" ");
        }
    }
}

上面的代码将所有以"@"开头的实例转换为"ASDAS",但大多数时候都无法将其正确转换为超链接,尽管有时会将其转换。我完全无法理解它是如何有时工作的,而不是一直工作或根本不工作。

欢迎所有建议!

edit:为了澄清,它总是用"ASDAS"替换文本,但在70%的情况下,它不会变成超链接。

TextBlock有70%的时间拒绝制作超链接

我的朋友找到了答案。以字符串形式添加的内联会导致偶发行为,因此必须以"Run"形式添加内联。

可以在此处找到修复程序:https://github.com/zahndy/o3o/commit/68b50f8c0ea106bcc709d3f69658b28da9c8a9d4#diff-3

谢谢大家的建议!