我编写了一个新的TypeExtension类,它取代了默认的System.Windows.Markup.TypeExtension来处理泛型类型。它允许Xaml以多种不同的方式处理泛型类型,例如:
<DataTemplate DataType="{ck:Type [here a generic type name]}">
这就是它的工作原理:
IXamlTypeResolver service = p.GetService( true );
_type = service.Resolve( _typeName );
因此,在.NET 3.5中,我可以解析“local‘1”这样的类型。但是现在在.NET 4中(使用WPF 4),解析方法抛出一个异常:
字符'
' was unexpected in string 'local:IConfigItemProperty
1‘。无效的XAML类型名称。
你认为.NET 4.0不再支持“”吗?
发布于 2012-02-07 12:16:05
虽然这篇文章有点老了,但我给出了其他开发人员寻找解决方案的答案。从4.0开始,他们似乎改变了Reader处理泛型的方式。IXamlTypeResolver服务缺乏对“”的支持似乎是一个缺陷,而回归则完全没有文档记录。如果您想使用泛型,您可能需要用x:TypeArguments进行切换,它列出了泛型的参数。
C#
public class GraphBase<N,L,P> : IGraph<N,L,P>
{
...
}
XAML
<?xml version="1.0" encoding="utf-8" ?>
<GraphBase
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="clr-namespace:MyGeoLive.Topology;assembly=MyGeoLive.Topology"
xmlns:System="clr-namespace:System;assembly=mscorlib"
x:TypeArguments="System:String,System:String,System:String" >
</GraphBase>
https://stackoverflow.com/questions/7594363
复制相似问题