使用自定义标记扩展创建多重绑定

本文关键字:创建 绑定 扩展 自定义 | 更新日期: 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并添加一些子绑定