C# RichTextBlock中的超链接使应用程序在单击时崩溃

C# RichTextBlock中的超链接使应用程序在单击时崩溃,c#,windows-phone-8.1,winrt-xaml,richtextblock,C#,Windows Phone 8.1,Winrt Xaml,Richtextblock,在我的Windows Phone 8.1应用程序中,我有一个带有超链接的RichTextBlock。我在超链接的单击事件中添加了一些代码块。问题是,每当我点击超链接时,我的应用程序就会崩溃,出现“访问冲突”异常。这仅在键盘可见时发生。如果键盘是辞职,那么我没有得到例外。此外,这只发生在WP8.1设备上,而不是W10设备上。下面是我的代码 XAML 这就是我为RichTextBox构建内容的方式 public Paragraph ContentForRichTextBox(string plain

在我的Windows Phone 8.1应用程序中,我有一个带有超链接的RichTextBlock。我在超链接的单击事件中添加了一些代码块。问题是,每当我点击超链接时,我的应用程序就会崩溃,出现“访问冲突”异常。这仅在键盘可见时发生。如果键盘是辞职,那么我没有得到例外。此外,这只发生在WP8.1设备上,而不是W10设备上。下面是我的代码

XAML

这就是我为RichTextBox构建内容的方式

public Paragraph ContentForRichTextBox(string plainString)
{
    Paragraph richContent = new Paragraph();
    try
    {
        string[] plainStringSplit = plainString.Split(' ');
        foreach (var word in plainStringSplit)
        {
            var number = new Hyperlink();
            number.Foreground = new SolidColorBrush(Colors.DarkBlue);
            number.Inlines.Add(new Run { Text = word });
            number.Click += (s, e) =>
            {
                try
                {
                    Windows.ApplicationModel.Calls.PhoneCallManager.ShowPhoneCallUI(word, "Some dude");
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine("Exception HelperMethod   number.Click : " + ex.ToString());
                }
            };
            richContent.Inlines.Add(number);

            //add a space
            if (plainStringSplit.Last() != word)
            {
                richContent.Inlines.Add(new Run { Text = " " });
            }
        }
    }
    catch (Exception ex)
    {
        System.Diagnostics.Debug.WriteLine("Exception HelperMethod ContentForRichTextBox : " + ex.ToString());
    }
    return richContent;
}
每当我点击超链接并且我的文本框处于焦点时,应用程序就会崩溃,只有一个例外

The program '[2992] App5.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.

任何帮助都将不胜感激。

我在WP8.1应用程序上遇到了同样的问题,超链接导致访问冲突。我使用am HyperlinkButton而不是Hyperlink来解决问题。要添加HyperlinkButton,您需要以以下方式将其包含在inlineUIContainer元素中:

InlineUIContainer uiContainer = new InlineUIContainer();
HyperlinkButton b = new HyperlinkButton();
b.Content = runText.Text;
b.NavigateUri = uri;
b.Tag = uri;
b.Click += (s, args) =>
{
    //Your click logic here.
};
uiContainer.Child = b;
paragraph.Inlines.Add(uiContainer);

希望这对你也有帮助

工作起来很有魅力。谢谢
The program '[2992] App5.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.
InlineUIContainer uiContainer = new InlineUIContainer();
HyperlinkButton b = new HyperlinkButton();
b.Content = runText.Text;
b.NavigateUri = uri;
b.Tag = uri;
b.Click += (s, args) =>
{
    //Your click logic here.
};
uiContainer.Child = b;
paragraph.Inlines.Add(uiContainer);