0

ボタン内にカスタム コントロールがあります。コントロールのテンプレートには、四角形とテキスト ブロックがあります。ボタンが押されると、テキスト ブロックに伝達されるボタンの "(Button.Foreground).(SolidColorBrush.Color)" プロパティが VSM によってアニメーション化され、テキストの色が変化します。

長方形の塗りつぶしプロパティを同じブラシに設定するにはどうすればよいですか?

「{TemplateBinding Foreground}」、「{Binding Path=Foreground、RelativeSource={RelativeSource Self}}」を試し、さらにコードでバインディングを作成しようとしました (OnApplyTemplate で) - まったく機能しないか、最初に設定された色が機能しませんアニメ化。また、四角形の Fill プロパティを TextBlock の Foreground プロパティにバインドする要素間のバインドを試しましたが、同じ結果になりました (初期の色は問題ありませんが、色のアニメーションは異なります)。

前もって感謝します。

4

1 に答える 1

0

WP 7.1 のバグだと思います。

回避策を見つけました。すべてを機能させるには:

  • カスタム コントロール テンプレートで、次を指定します。Fill="{TemplateBinding Foreground}"
  • ボタン テンプレートの 内<VisualState x:Name="Normal">で、通常状態の前景色を設定します。

初期の Foreground 値が<Setter Property="Foreground" ...ボタンのスタイルから取得され、Visual State Manager が前景値をアニメーション化すると、TextBlock オブジェクトは新しい値を受け取りますが<Rectangle Fill="{TemplateBinding Foreground}"、古い色でペイントされたままになります。

Visual State Manager から初期値が取得されると、VSM が色の変化をアニメートするときに、カスタム コントロール テンプレート内の四角形が新しいプロパティ値を正しく受け取ります。

于 2012-09-02T00:14:09.873 に答える