1

同じスタイルにしたいコントロール (ボタン、トグルボタン) のセットがあるので、「ButtonFillBrush」、「ButtonFillMouseOverBrush」など、ResourceDictionary で通常/無効/有効状態のグラデーション ブラシをいくつか作成しました。グローバルな再利用可能なブラシ リソースとして定義されます。

状態内のアニメーションでグラデーションの個々のストップを変更できることはわかっています。たとえば、次のようになります。

<VisualState x:Name="MouseOver">
   <Storyboard>
      <ColorAnimation Duration="0" To="#FF041D06" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="path" d:IsOptimized="True"/>
      <ColorAnimation Duration="0" To="#FF118519" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
    </Storyboard>
</VisualState>

これで、VisualState Manager で次のようなことができることがわかりました。

<VisualState x:Name="MouseOver">
   <Storyboard>
      <ColorAnimation Duration="0" To="ButtonFillMouseOverBrush" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
    </Storyboard>
</VisualState>

ありがとう!

更新: StaticResource の参照に関する回答とその他の検索を使用: http://wildermuth.com/2008/07/18/Animating_Brushes_with_ObjectAnimationUsingKeyFrames

<VisualState x:Name="MouseOver">
  <Storyboard>
    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backgroundRectangle"                      
Storyboard.TargetProperty="Fill">
      <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ButtonFillMouseOverBrush}" />
    </ObjectAnimationUsingKeyFrames>
  </Storyboard>
</VisualState>

それで、BrushAnimationか何かがあればいいのですが...

ロジェ

4

1 に答える 1

0

リソース ディクショナリとその使用に関する詳細については、こちらを参照してください。ただし、カラー アニメーションに関する質問については、Silverlight アニメーション (カラー アニメーションを含む) に関する多くの情報がこのリンクにあります。Silverlight アニメーション クイックスタート

于 2011-01-03T13:14:40.950 に答える