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

时间:2016-07-22 22:24:34

标签: c# wpf xaml win-universal-app

我正在开发一项功能,要求我使用自定义的标记扩展。标记扩展由其他人开发。看看标记扩展类,它看起来像数据绑定到我(请纠正我,如果我错了请)。以下是自定义标记扩展的草图:

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并返回一个值。

我的问题是我想使用这个自定义标记扩展来绑定多个值;基本上执行类似多重绑定的操作。我怎么能做到这一点?

1 个答案:

答案 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并添加一些子绑定

即可