2011-02-02 9 views
3

カスタムコントロールの2つの色の間でカスタムコントロールのテキストカラーをアニメーション化する必要があります。これは、カスタムコントロールの2つのBrushプロパティから読み取られます。私のリソースは次のようになります。今テキストカラーのアニメーション

<SolidColorBrush x:Key="TextBrush">{TemplateBinding Foreground}</SolidColorBrush> 
<SolidColorBrush x:Key="AltTextBrush">{TemplateBinding ForegroundAlt}</SolidColorBrush> 

、私はColorAnimationを使用してアニメーション化しようとしています:

<ColorAnimation Storyboard.TargetName="MyControlText" Storyboard.TargetProperty="Foreground" To="{StaticResource AltTextBrush}" Duration="00:00:00.3000000" /> 

ColorAnimationではなく、私が合格しようとしていますBrushよりも、Colorオブジェクトをしたいようです。ブラシから色を得るためにIValueConverterと書くことができると思いますが、それを行う前に、簡単な方法で作業をしたいのですか?ここに私の質問があります:

- 2つのブラシリソース間でアニメーションを作成する簡単な方法はありますか、アニメーションの色を抽出する必要はありますか?

- 色を抽出する必要がある場合は、IValueConverterのベストプラクティスですか?

- 最後に、正しい道を向いているのですか、またはこの問題を解決する簡単な方法がありますか?

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

答えて

8

バインディングを使用してみました、それはここで素敵例えばXAML

<Window.Resources> 
    <SolidColorBrush x:Key="TextBrush">Black</SolidColorBrush> 
    <Storyboard x:Key="blinkAnimation" Duration="0:0:5" > 
     <ColorAnimation Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)" 
         Storyboard.TargetName="TitleTextBlock" 
         To="{Binding Source={StaticResource TextBrush}, Path=Color}" 
         AutoReverse="True" 
         Duration="0:0:2"/> 
    </Storyboard> 
</Window.Resources> 
<Grid Background="Black" Name="grid"> 
    <TextBlock x:Name="TitleTextBlock" 
       Background="Black" 
       Text="My Text" 
       FontSize="32" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Bottom" 
       Foreground="White"> 
     <TextBlock.Triggers> 
      <EventTrigger RoutedEvent="Loaded"> 
       <EventTrigger.Actions> 
        <BeginStoryboard> 
         <StaticResource ResourceKey="blinkAnimation"/> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 
     </TextBlock.Triggers> 
    </TextBlock> 
</Grid> 
+0

受入及び+1です。この

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

のように動作しているようです再度、感謝します。 –

+5

この問題を研究している他の人に:上記のソリューションは、コントロールテンプレート内を除いてどこでも動作します。コントロールテンプレート内のアニメーションにバインディングを設定することはできません。参照:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9336022f-badb-4b40-a86c-a50ab1a64ba5/ –

関連する問題