2014-03-05 23 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)