RichTextBlock 中的超链接使应用程序在单击时崩溃
Hyperlink in RichTextBlock makes the application crash on clicking
在我的 Windows Phone 8.1 应用程序中,我有一个带有超链接的 RichTextBlock。我在超链接的点击事件中添加了一些代码块。问题是每当我单击超链接时,我的应用程序都会崩溃并出现 'Access Violation' 异常。这仅在键盘可见时发生。如果键盘是辞职的,那么我不会得到异常。此外,这只发生在 WP8.1 设备上,而不是 W10 设备上。下面是我的代码。
XAML
<StackPanel>
<RichTextBlock FontSize="40" x:Name="rtb"/>
<TextBox x:Name="tb"/>
</StackPanel>
代码隐藏
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
rtb.Blocks.Add(ContentForRichTextBox("9910918444"));
}
这就是我为 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 而不是超链接获得了解决方法。要添加 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);
希望这对你也有帮助!
在我的 Windows Phone 8.1 应用程序中,我有一个带有超链接的 RichTextBlock。我在超链接的点击事件中添加了一些代码块。问题是每当我单击超链接时,我的应用程序都会崩溃并出现 'Access Violation' 异常。这仅在键盘可见时发生。如果键盘是辞职的,那么我不会得到异常。此外,这只发生在 WP8.1 设备上,而不是 W10 设备上。下面是我的代码。
XAML
<StackPanel>
<RichTextBlock FontSize="40" x:Name="rtb"/>
<TextBox x:Name="tb"/>
</StackPanel>
代码隐藏
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
rtb.Blocks.Add(ContentForRichTextBox("9910918444"));
}
这就是我为 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 而不是超链接获得了解决方法。要添加 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);
希望这对你也有帮助!