2016-07-22 91 views
0

我正在研究一项需要我使用自定义标记扩展的功能。标记扩展由其他人开发。看看标记扩展类,它看起来像数据绑定到我(纠正我,如果我错了请)。这里是定制标记扩展的草图:使用自定义标记扩展创建多重绑定

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}/> 

而且它会调用的查找类,并传递propertyName并返回一个值。

我的问题是,我想使用此自定义标记扩展绑定到多个值;基本上执行像多重绑定的东西。我怎么能做到这一点?

回答

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); 
     } 

只需切换到BindingMultiBinding添加一些子绑定