2016-07-22 4 views
0

私はカスタマイズされたマークアップ拡張を使用する必要がある機能に取り組んでいます。マークアップ拡張は、他の人が開発したものです。マークアップ拡張クラスを見ると、データバインディングのように見えます(私が間違っていれば私を修正してください)。そして、私はこのような私のXAMLコードでは、このカスタマイズされたマークアップ拡張機能を使用することができカスタマイズされたマークアップ拡張を使用してマルチバインディングを作成する

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

:ここではカスタマイズされたマークアップ拡張機能のスケッチがある

<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に切り替えて、いくつかのサブバインディング

を追加します
関連する問題