2016-07-22 130 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添加一些子綁定