0

Converterブログ記事Silverlight MultiBinding solution for Silverlight 4のコード内のプロパティは依存関係プロパティではないため、コンバーターにバインドできません (技術的な理由から、アプリケーションの初期段階で Unity インジェクションの一部としてインスタンス化する必要があります)。ユーザーコントロールの一部としての単純な静的リソースとしてではなく)。

MultiBindingバインドされたコンバーターを受け入れるようにコードを変更するにはどうすればよいですか? 私はそれを依存関係プロパティにしようとしました:

public IMultiValueConverter Converter { get { return (IMultiValueConverter)GetValue(ConverterProperty); } set { SetValue(ConverterProperty, value); } }
public static DependencyProperty ConverterProperty = DependencyProperty.Register("Converter", typeof(IMultiValueConverter), typeof(IMultiValueConverter), null);

しかし、私は得ました

System.Windows.Data.IMultiValueConverter. コンバーターは、型 ...Binding.MultiBinding のオブジェクトには設定できません。

これが実行可能なオプションでない場合、どうすればConverterParameterプロパティをバインドしたり、何かを取得してコンバーターのバインディングをシミュレートしたりできますMultiBindingか?

4

1 に答える 1

0

「シミュレートされたバインディング」ルートを使用してこれを解決しましたが、誰かが別の答えを持っている場合、それは私の好みではありません。私が代わりに行ったのは、依存関係の挿入を介してコンバーターを構築することではなく、サービスの場所を使用して必要な依存関係を取得することでした。一般的に、サービスの場所よりも依存性注入を好みます。「サービスの場所」は、Unity コンテナーをアプリケーションのグローバル リソースに格納するという問題でした。そこから必要なものを手に入れるのは難しくありません。

于 2011-12-06T23:06:37.100 に答える