我正在WPF应用程序中处理Custom MarkupExtension。我见过的每个文档示例都使用XAML中的字符串参数来构造新对象。是否可以使用非字符串参数?
换句话说,我该怎么办呢?
[MarkupExtensionReturnType(typeof(Uri))]
public class RefPackUriExtension : MarkupExtension
{
object _assembly = null;
public RefPackUriExtension() { }
public RefPackUriExtension(object assembly)
{
this._assembly = assembly;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
//return an object by using the "_assembly" member somehow
}
}
答案 0 :(得分:0)
MarkupExtension
的任何参数都与CLR对象的属性具有相同的解析行为。您可以使用TypeConverter
允许用户提供转换为目标类型的string
,也可以使用其他MarkupExtension
。
作为前者的一个例子,请参阅ColorConverter
课程。作为后者的示例,请参阅RelativeSource
类(在Binding
MarkupExtension
中使用)。