2011-02-03 8 views
2

私は2つのテキストカラー、ColorAとColorBでカスタムコントロールを作成しています。 ColorAはコントロールのForegroundプロパティに接続され、ColorBはForegroundAltというカスタム依存プロパティに接続されます。どちらのプロパティもBrushオブジェクトです。コントロールのXAMLは、このマークアップを使用してプロパティ値を取得します:XAML:ブラシをカラーに変換しますか?

<SolidColorBrush x:Key="BrushA" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" /> 

<SolidColorBrush x:Key="BrushB" Color="{Binding Path=ForegroundAlt, RelativeSource={RelativeSource TemplatedParent}}" /> 

私はコントロールテンプレートに2つの色の間SMEのテキストをアニメーション化する必要がある、と私は問題に実行しているところです。

通常、私は単純に次のように、各Brush.Colorプロパティにデータバインディングを作成します。

To="{Binding Source={StaticResource BrushB}, Path=Color}" 

しかし、それは、ここでは動作しません。それはyou can't use bindings on an animation inside a control templateであることがわかります。

回避策として、私はブラシのリソースと一緒に行くためにColorリソースのペアを作成したいと思います:

<Color x:Key="ColorA" ??? /> 
<Color x:Key="ColorB" ??? /> 

Colorリソースは、それに対応するブラシの色を持っている必要があります。私は静的リソースとして色を参照し、アニメーション内からデータをバインドする必要がありません。

だから、ここに私の質問は以下のとおりです。

- どのように私はColorリソースを宣言するのでしょうか?

- ジョブを簡単に行う方法はありますか?

ありがとうございました。

答えて

0

私がこれを正しく理解していれば、あなたが試みていることはうまくいかないでしょう。色をリソースとして定義したとしても、それらをブラシリソースにバインドする必要があり、正方形に戻ってきます!

解決策の1つは、テンプレートではなくコードで実行することです。カスタムコントロールを作成しているので、デザインを壊さずにコードを後ろに追加するのは簡単です。

+0

アニメーション内でデータバインディングを使用しない限り、動作すると思います。しかし、私は、第2のリソースのペアを避けるより良いアプローチに取り組んでいます。それが動作すれば私はここに投稿します。 –

関連する問題