使用自定义标记扩展创建多重绑定
本文关键字:创建 绑定 扩展 自定义 | 更新日期: 2023-09-27 17:58:21
我正在开发一个需要使用自定义标记扩展的功能。标记扩展由其他人开发。查看标记扩展类,它看起来像是对我的数据绑定(如果我错了,请纠正我)。这是定制标记扩展的草图:
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
并返回一个值。
我的问题是,我想使用这个自定义的标记扩展绑定到多个值;本质上执行类似多重绑定的操作。我怎样才能做到这一点?
你的意思是这样的吗?
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
并添加一些子绑定