我正在尝试在XAML中获取一个类型对象。
x:Type={...}
但我意识到Silverlight不支持它。我试图在以下问题中使用它(在EnumerationExtension
类中):
Databinding an enum property to a ComboBox in WPF
如何在XAML中传递类型?C
答案 0 :(得分:1)
如果SL 5则自定义MarkupExtension
其他Binding
与Converter
一起返回value.GetType()
我的例子:
public class TypeExtension : IMarkupExtension<Type>
{
public string TypeName { get; set; }
public TypeExtension() { }
public TypeExtension(string typeName)
: this()
{
if (typeName == null) throw new ArgumentNullException("typeName");
TypeName = typeName;
}
public Type ProvideValue(IServiceProvider serviceProvider)
{
var typeResolver = (IXamlTypeResolver)serviceProvider.GetService(typeof(IXamlTypeResolver));
var type = typeResolver.Resolve(TypeName);
return type;
}
}
请注意,SL 5中不支持构造函数,因此您需要在XAML中使用属性名称:
{me:Type TypeName=local:SomeClass}
答案 1 :(得分:0)
你可以create a Custom Markup Extension(自Silverlight 5起可用)
或者你可以use this one