Wpf 使用IXamlTypeResolver解析泛型类型
我已经编写了一个新的TypeExtension类,它取代了默认的System.Windows.Markup.TypeExtension来处理泛型类型。它允许Xaml以多种不同的方式处理泛型类型,如:Wpf 使用IXamlTypeResolver解析泛型类型,wpf,generics,xaml,Wpf,Generics,Xaml,我已经编写了一个新的TypeExtension类,它取代了默认的System.Windows.Markup.TypeExtension来处理泛型类型。它允许Xaml以多种不同的方式处理泛型类型,如: <DataTemplate DataType="{ck:Type [here a generic type name]}"> 这就是它的工作原理: 我编写了TypeExtension类,它继承了MarkupExtension(示例中是ck:Type) 我会重写ProvideValu
<DataTemplate DataType="{ck:Type [here a generic type name]}">
这就是它的工作原理:
”。XAML类型名称无效
你认为.NET4.0不再支持“`”吗 虽然这篇文章有点陈旧,但我为任何其他寻求解决方案的开发人员提供了答案。
从4.0开始,它们似乎改变了读者处理泛型的方式。IXamlTypeResolver服务缺乏对“`”的支持,这似乎是一个缺陷,而回归根本没有文档记录。
如果要使用泛型,可能需要使用x:TypeArguments进行切换,这是泛型的参数列表
C#
公共类图形库:IGraph
{
...
}
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>
<?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>