2016-02-05 85 views
1

我的RichTextBlock中包含超鏈接。我在超鏈接的點擊事件中添加了一些代碼塊。問題是,無論何時單擊超鏈接,我的應用程序都會因「訪問衝突」異常而崩潰。只有當鍵盤可見時纔會發生這種情況。如果鍵盤被辭退,那麼我不會得到例外。此外,這隻發生在WP8.1設備而不是W10設備上。以下是我的代碼。RichTextBlock中的超鏈接導致應用程序崩潰,在我的Windows Phone 8.1應用程序中單擊

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'. 

任何幫助將不勝感激。

回答

1

我對與超鏈接的WP8.1應用程序導致訪問衝突同樣的問題。我使用HyperlinkBut​​ton而不是超鏈接來解決問題。要添加HyperlinkBut​​ton你需要包含它的一個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); 

希望這有助於你也!

+0

工程就像一個魅力。謝謝! – thatrohit

相關問題