2011-10-27 6 views
0

私は1つのかなり些細な問題(最初の一見)に立ち往生しました。WPF、コントロール。依存関係プロパティの値のスタック

私は複数のBackground(例えば)色SAME Controlに適用されると(条件により)そのうちの一部だけをクリアできるようにしたい:私の状況の 簡易版は、次のようになります。 WPFはこのような機能を提供していないので、DPごとに1つの値しか設定できません。

だから、私は(他の一方で、Greenをresetingする背景Redを残し)を順次ControlオブジェクトへYellowその後、Greenその後、Red色を適用し、[コントロールがGreen背景となるようRedをリセットできるようにしたいです。かなりシンプルに見えますが、コントロール用のDecoratorを作成したことがありますか? DPはそのような振る舞いを内部的に使用していますが、公開APIはありません。

、トリガーや条件DP設定の任意の他の種類を使用することをお勧めしません、私は本当に、単一DPに複数の値を設定すると

答えて

1

そのない」と言うのは良いアイデアをそれらを管理できるようにする必要がありますWPFはこれをしません。値precendenceですが、このListは固定されていますが、理由のために間に別のレイヤーを追加することはできません。システム全体がそれに依存しています。それ以外の場合は、1つの値を設定することはできず、トリガーを使用してその値を上書きし、値をリセットする必要はありません。人々がこのリストを使いこなすようになると、アニメーション、スタイル継承などは不可能です。

トリガーのアイデアが好きではない...なぜですか?そのためです 好きではない場合、Background1Background2などの添付プロパティの追加はどうですか?また、Backgroundを添付プロパティとして継承可能にすることもできます。アタッチされた振る舞いをしたり、プロパティの変更を聞いたり、背景色を変更することができます。 MultiBindingまたはPriorityBindingを使用することができます。 明白な解決策が望ましくない場合、うまくいっている可能性があります:)

+0

実装の詳細のためにトリガーを使用できないため、私はそれらを提案しないように頼んでいます: –

+0

あなたの番号データコンテキストでは、値コンバーターを使用して数値を定義済みの色のリストに変換して、コンバーターが必要な色を返すようにします。それはそれを解決するための一つの方法です。 – dowhilefor

+0

色の数は制限されていませんが、私はそのような解決策について考えるでしょう、ありがとう –

関連する問題