我正在开发一项功能,要求我使用自定义的标记扩展。标记扩展由其他人开发。看看标记扩展类,它看起来像数据绑定到我(请纠正我,如果我错了请)。以下是自定义标记扩展的草图:
namespace MyNamespace;
[MarkupExtensionReturnType(typeof(BindingExpression))]
public class Lookup : MarkupExtension
{
private string name;
public Lookup(string name)
{
this.name = name;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
Binding binding = new Binding();
/*some code that involves this.name*/
return binding.ProvideValue(serviceProvider);
}
}
然后我可以在我的xaml代码中使用这个自定义标记扩展,如下所示:
<MyControl MyProperty={MyNamespace:Lookup propertyName}/>
它将调用LookUp类并传入propertyName
并返回一个值。
我的问题是我想使用这个自定义标记扩展来绑定多个值;基本上执行类似多重绑定的操作。我怎么能做到这一点?
答案 0 :(得分:0)
你的意思是这样的吗?
public override object ProvideValue(IServiceProvider serviceProvider)
{
var binding = new MultiBinding();
binding.Bindings.Add(new Binding(pathOfWhatEverOne));
binding.Bindings.Add(new Binding(pathOfWhatEverTwo));
...
/*some code that involves this.name*/
return binding.ProvideValue(serviceProvider);
}
只需将Binding
切换为MultiBinding
并添加一些子绑定