none
XAML文件在IE9中运行失败 RRS feed

  • 问题

  • 我按书上所说将一个WPF项目的XAML文件改写为可在浏览器中查看的XAML文件。单独运行此文件时,IE9浏览器报错

    您正在使用的应用程序中出现错误。

    System.Windows.Markup.XamlParseException: “Class”属性不存在于 XML 命名空间 "http://schemas.microsoft.com/winfx/2006/xaml" 命名空间中。 

    请高人指点

    2012年1月22日 4:28

答案

  • 所谓能在浏览器中直接运行查看的XAML文件我们叫做 Loose XAML (关于它的定义 http://msdn.microsoft.com/en-us/library/aa480223.aspx#wpfandwbas_topic6), 首先它不能有相应的C#/VB.Net 等后台代码 (很自然,因为IE不会编译.Net 代码的)。然后他也不能有其他交互操作的标签。只能有一些内建在 http://schemas.microsoft.com/winfx/2006/xaml http://schemas.microsoft.com/winfx/2006/xaml/presentation 里面的标签。 所以你肯定要移去你的C#代码和x:Class才可以。

    最后能在IE中直接显示的一般都是Page类型的XAML,(因为IE不会创建一个Windows 系统的床体的,也不会创建用户自定义控件,所以Window UserControl都没用)

    如同下面这个文件:

    <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          Title="TestPage">
    
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Content="Button no click event"/>
        <Border BorderBrush="Blue" BorderThickness="2" CornerRadius="5" Margin="10" Grid.Row="1">
          <Ellipse Fill="Red" Width="100" Height="200"/>
        </Border>
      </Grid>
    </Page>
    
    




    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年1月23日 8:30
    版主

全部回复

  • 所谓能在浏览器中直接运行查看的XAML文件我们叫做 Loose XAML (关于它的定义 http://msdn.microsoft.com/en-us/library/aa480223.aspx#wpfandwbas_topic6), 首先它不能有相应的C#/VB.Net 等后台代码 (很自然,因为IE不会编译.Net 代码的)。然后他也不能有其他交互操作的标签。只能有一些内建在 http://schemas.microsoft.com/winfx/2006/xaml http://schemas.microsoft.com/winfx/2006/xaml/presentation 里面的标签。 所以你肯定要移去你的C#代码和x:Class才可以。

    最后能在IE中直接显示的一般都是Page类型的XAML,(因为IE不会创建一个Windows 系统的床体的,也不会创建用户自定义控件,所以Window UserControl都没用)

    如同下面这个文件:

    <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          Title="TestPage">
    
      <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Content="Button no click event"/>
        <Border BorderBrush="Blue" BorderThickness="2" CornerRadius="5" Margin="10" Grid.Row="1">
          <Ellipse Fill="Red" Width="100" Height="200"/>
        </Border>
      </Grid>
    </Page>
    
    




    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年1月23日 8:30
    版主
  • 谢谢。我把x:Class语句删掉就好使了。
    2012年1月23日 10:19