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 文件中工作。 但是上面的代码不起作用。

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

XAML 中的 x:TypeArguments 和泛型列表类的问题

我刚刚用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"

现在它工作正常。