【问题标题】:Issue with x:TypeArguments and generic List class in XAMLXAML 中 x:TypeArguments 和泛型 List 类的问题
【发布时间】:2011-05-19 03:19:54
【问题描述】:

我为一个松散的 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 文件中使用。但是上面的代码不起作用。

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

【问题讨论】:

    标签: c# generics xaml .net-4.0 wpf-4.0


    【解决方案1】:

    我刚刚使用 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。

    【讨论】:

    • 感谢瑞克,感谢您的努力。我仍然希望找到出路。
    【解决方案2】:

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

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

    现在可以正常使用了。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多