2014-03-05 63 views
0

(Windows Phone項目)我嘗試創建一個場景,用戶將單擊一個文本並顯示一個xaml頁面。 該文本被稱爲「條款和條件」。XamlParerException:嘗試將文本鏈接到Xaml頁面

Event code for the text component 
private void MouseEnter_Agent(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     this.NavigationService.Navigate(new Uri("/AgentTerms.xaml", UriKind.Relative)); 
    } 

XAML中界面代碼

<TextBlock TextWrapping="Wrap" Height="30" Foreground="Red" MouseEnter="MouseEnter_Agent"> 
        <Underline> 
         <Run Text="Read JizAgent Terms and Conditions"/> 
        </Underline> 
        <LineBreak/> 
        <Run/> 
       </TextBlock> 

我得到的錯誤,當我點擊文本 - XamlParerException

+0

您正在使用哪種XAML實現(例如WPF,WinRT XAML)? –

+0

它適用於Windows Phone。 – user3302974

回答

2

您使用了錯誤的EventArgs類在事件處理程序的簽名。你應該使用MouseEventArgs。拿這個簡單的例子:

<Window x:Class="MouseEventArgs.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MouseEventArgs" Height="300" Width="300"> 

    <Grid x:Name="LayoutRoot" 
      Background="Green" 
      MouseEnter="Grid_MouseEnter" /> 
</Window> 

後面的代碼:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 

namespace MouseEventArgs 
{ 
    /// <summary> 
    /// Interaction logic for Window1.xaml 
    /// </summary> 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
     } 

     void Grid_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) 
     { 
      LayoutRoot.Background = new SolidColorBrush(Colors.Red); 
     } 
    } 

如果失敗那麼就必須在AgentTerms.xaml標記的問題。

+0

'TextBlock'可以包含多個'Inline'。由於'TextBlock'不能包含'StackPanel',所以你的標記甚至不會編譯。 –

+0

Ooops,回答已更新! –

+0

(只是爲了讓任何人閱讀時都將它放到上下文中,我最初建議在TextBlock的Content屬性中有多個對象可能會導致異常,但沒有意識到它接受多個Inline控件)! –

0
void MouseEnter_Agent(object sender, System.Windows.Input.KeyEventArgs e) 

處理程序的簽名是錯誤的。替換爲:

void MouseEnter_Agent(object sender, System.Windows.Input.MouseEventArgs e)