XAML 中的 x:TypeArguments 和泛型列表类的问题
本文关键字:列表 问题 泛型 中的 TypeArguments XAML | 更新日期: 2023-09-27 17:56:59
我为松散的 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时,我收到此错误:
标记"List"在XML命名空间"clr-namespace:System.Collections.Generic;assembly=mscorlib"中不存在。行"7"位置 2"。
如您所知,XAML 中的泛型是 XAML 2009 中的一项功能,并且在大多数情况下只能在松散的 XAML 文件中工作。 但是上面的代码不起作用。
任何线索为什么会发生此错误以及如何纠正问题?提前谢谢。
我刚刚用Internet Explorer 9测试了你的样本。 IE9 使用PresentationHost.exe
在我的系统(Windows 7 SP1 x64)上呈现内容,通过检查实际加载了哪些程序集,我确认它使用的是不支持 XAML 2009 的 v3.0 框架。
该文档描述了对于 XBAP 它选择要加载的框架版本,因此它显然能够使用 v4.0 框架,该框架确实支持 XAML 2009 的松散 XAML。 但是,不幸的是,文档没有说明它将为松散 XAML 而不是 XBAP 选择哪个版本的框架。
根据经验,至少在您的示例中,我可以确认PresentationHost.exe
选择了 v3.0 框架。 我找不到任何方法来覆盖此选择,例如以某种方式注释 XAML。
问题已解决。我需要在标记中包含以下命名空间映射以启用泛型。
xmlns:v4="http://schemas.microsoft.com/netfx/2009/xaml/presentation"
现在它工作正常。