8

我为松散的 XAML 文件创建了以下标记。

<StackPanel 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:sys="clr-namespace:System;assembly=mscorlib"
  xmlns:scg="clr-namespace:System.Collections.Generic;assembly=mscorlib">
    <scg:List x:TypeArguments="sys:String">
        HelloWorld
    </scg:List>
</StackPanel>

但是当我在 IE 中运行松散的 XAML 时出现此错误:

XML 命名空间“clr-namespace:System.Collections.Generic;assembly=mscorlib”中不存在标记“List”。第 '7' 行位置 2'。

如您所知,XAML 中的泛型是 XAML 2009 中的一项功能,并且大多数情况下只能在松散的 XAML 文件中使用。但是上面的代码不起作用。

任何线索为什么会发生此错误以及如何纠正该问题?提前致谢。

4

2 回答 2

3

我刚刚使用 Internet Explorer 9 测试了您的示例。IE9 用于PresentationHost.exe在我的系统(Windows 7 SP1 x64)上呈现内容,并通过检查实际加载了哪些程序集,我确认它使用了 v3.0 框架,而支持 XAML 2009。

该文档描述了对于 XBAP,它选择加载哪个框架版本,因此它显然能够使用支持 XAML 2009 的 v4.0 框架来实现松散的 XAML。但是,不幸的是,文档没有说明它将为松散的 XAML 而不是 XBAP 选择哪个版本的框架。

根据经验,至少以您的示例,我可以确认PresentationHost.exe选择 v3.0 框架。我找不到任何方法来覆盖此选择,例如以某种方式注释 XAML。

于 2011-05-19T04:44:52.427 回答
2

问题已解决。我需要在标记中包含以下命名空间映射以启用泛型。

xmlns:v4="http://schemas.microsoft.com/netfx/2009/xaml/presentation"

现在它工作正常。

于 2011-05-23T03:26:06.003 回答