0

ブログの記事Silverlight MultiBinding solution for Silverlight 4のコードのConverterプロパティは依存プロパティではないため、コンバータとバインドすることはできません(技術的理由から、ユーザコントロールの一部としての単純な静的リソースではなく、アプリケーションの早い段階でのUnityインジェクションの使用)。Silverlightのマルチバインディングへのコンバータのバインド

バインドされたコンバータを受け入れるように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); 

が、私は

たDependencyProperty System.Windows.Data.IMultiValueConverterを得た:私は依存関係プロパティ作ってみました。コンバータは... Binding.MultiBinding型のオブジェクトに設定できません。

、これは実行可能な選択肢ではない場合、どのように私はConverterParameterプロパティをバインドまたはMultiBindingに、コンバータのバインディングをシミュレートするために何かを得ることができますか?

+0

なぜデータをマルチバインディングにもバインドしないのはなぜですか?マルチバリューコンバータにデータがあり、データが変更された場合でもコンバータが起動します。 – punker76

+0

@ punker76、私はあなたに従うか分からない。たとえば、ビュー・モデルの3つのプロパティーがマルチ・バインドですが、ビューで適切にフォーマットするためにコンバータを実行する必要があります。コンバータ自体は(私が知る限り)静的なリソースではありません。なぜなら、* it *はそのコンストラクタに依存性が注入されているからです。 – Kit

+0

Mh、なぜあなたはコンバータをバインドしたいのですか? – punker76

答えて

0

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

+0

私はこの贅沢をまだ持っていませんが、ここに興味のある人のためのSL5ソリューションです:http://www.codeproject.com/KB/silverlight/SilverlightMultiBinding.aspx?display=Mobile – Kit

関連する問題