2011-09-13 8 views
0

私はコンバータのパラメータでバインドするための一般的な機能を持っています。私はnullを渡したいコンバータを必要としないが、それは私を聞かせていないとき、それは言う:コンバータがnullだった場合、私がチェックし、私は問題を推測コンバータの値をヌルに設定する

Cannot set MultiBinding because MultiValueConverter must be specified. 

機能でそれを割り当てる前にIMultiValueConverterは値としてnullを受け入れないということです。

これを実現するには、入力を返すコンバータまたはオーバーロードされたメソッドを作成せずに、これを達成するにはどうしますか?言い換えれば

protected MultiBinding CreateBinding(object source, IMultiValueConverter converter, object parameter, object [] dps) 
    { 
     MultiBinding multiBinding = new MultiBinding(); 
     if (converter != null) 
     multiBinding.Converter = converter; 
     multiBinding.ConverterParameter = parameter; 
     ..... 

私は上記の機能を使用して、コンバータなしで結合の直接プロパティをシミュレートします。

答えて

0

MultiBindingsは、MultiValueConverterまたはStringFormatを指定して各ソースに基づいて出力を計算する方法を定義する場合にのみ意味があります。

私はあなたが達成しようとしていることについてはわかりませんが、空のStringFormat(string.Empty)を指定するとエラーは発生しませんが、実行時には何もしません。

+0

バインディングを設定するたびに4行を入力したくない場合は、あまりにも多くの領域が必要です。私は、4つのパラメータを考慮してバインディングを作成できる汎用関数が必要です。これは、パラメータを使用した単一バインディングまたはマルチバインディングです。私はあなたがStringFormatと言っているときにあなたが何を参照しているのかわからない、あなたはそれを渡すべき値として渡すことを意味する。 – mihajlv

+0

次に、ソースが1つだけの場合はバインディングを使用し、複数のソースを持つ場合はマルチバインディングを使用します。 – alf

+0

私は、関数が単一または複数の戻り値の型を持たなければならないので、オーバーロードされたメソッドまたは2つの別々のメソッドを持つ必要があります。 – mihajlv

関連する問題