少し背景:私はControlPresenterを呼び出すクラスにロードするプロパティ(コントロールの種類、ラベル、余白など)のテーブルに格納されているデータベースからWPF UIを読み込みます。基本的には、ControlPresenterをContentPresenterのDataContextとして設定し、TemplateSelectorを使用してロードするコントロールのタイプを選択します。 DataTemplateは、ControlPresenterによって公開されるDependencyPropertiesからプロパティを読み込みます。"パススルー"データバインディングを実装するにはどうすればよいですか?
これはすべて非常にうまく動作します。これらのコントロールに(INotifyPropertyChangedを実装する通常のプロパティを持つ)他のプレゼンターのデータ(TextBoxのTextプロパティなど)をプレゼンターのNameプロパティにバインドしようとすると、実行している問題が発生します。コントロールのDataContextは関連するControlPresenterなので、他のプレゼンターに直接バインドすることはできず、同じ依存プロパティで2つのバインディングを設定することはできません(コントロールと希望のプレゼンタープロパティを同じDPにバインドできません) 。
考えられる解決策:
- 私は他の発表者のすべてが(継承に問題が発生することは非常に時間がかかると発生しやすい)のDPを使用するように変換することができ
- 私は、各プロパティの2つのDPを使用することができますI通過し、変更の通知
これらのいずれもが、私は他の誰かがより良いSを打ち出している願っていますので、破壊に問題となりやすいようですを通じてそれらを一緒に結び付けるために試してみたいですolution。
編集:私は、かなりうまくいく(下記参照)ソリューションを考え出しました。これを見てくれた皆さん、ありがとうございました。もしあなたが私よりも優れた方法を考え出すなら、教えてください。
ええと、3番のオプションが働くかどうかは分かります。 –