2014-04-01 24 views
0

我想爲ContentControl的Foreground顏色設置動畫效果。WinRT前景動畫

<VisualStateGroup 
x:Name="SelectionStates"> 
<VisualState 
    x:Name="Unselected"> 
    <Storyboard> 
     <DoubleAnimation 
      Duration="0" 
      Storyboard.TargetName="UnselectedContent" 
      Storyboard.TargetProperty="Opacity" 
      To="1" /> 
     <DoubleAnimation 
      Duration="0" 
      Storyboard.TargetName="Content" 
      Storyboard.TargetProperty="Opacity" 
      To="0" /> 
    </Storyboard> 
</VisualState> 
<VisualState 
    x:Name="Selected"> 
    <Storyboard> 
     <DoubleAnimation 
      Duration="0" 
      Storyboard.TargetName="Content" 
      Storyboard.TargetProperty="Opacity" 
      To="1" /> 
     <DoubleAnimation 
      Duration="0" 
      Storyboard.TargetName="UnselectedContent" 
      Storyboard.TargetProperty="Opacity" 
      To="0" /> 
    </Storyboard> 
</VisualState> 

<ContentControl 
    x:Name="Content" 
    ContentTemplate="{TemplateBinding ContentTemplate}" 
    Foreground="{StaticResource CalendarDayForegroundSelected}" 
    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
    Margin="{TemplateBinding Padding}" 
    IsTabStop="False" > 
    <ContentControl.Content> 
     <TextBlock Text="{TemplateBinding Content}" /> 
    </ContentControl.Content> 
</ContentControl> 
<ContentControl 
    x:Name="UnselectedContent"        
    ContentTemplate="{TemplateBinding ContentTemplate}" 
    Foreground="{StaticResource CalendarDayForeground}" 
    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
    Margin="{TemplateBinding Padding}" 
    IsTabStop="False" > 
    <ContentControl.Content> 
     <TextBlock Text="{TemplateBinding Content}" /> 
    </ContentControl.Content> 
</ContentControl> 

這是我做的方式。不幸的是,我需要兩次使用不同名稱的ContentControl。有沒有更好的方法來做到這一點?

我用ColorAnimation嘗試過,但沒有成功。

感謝 達尼

回答

0

你不能直接設置控件的使用ColorAnimation「前景」屬性。你可以,但是,通過顯式設置在XAML畫筆,給它一個名稱設置它的前景畫筆的顏色:

<ProgressBar x:Name="ProgressBar" Grid.Row="1" VerticalAlignment="Bottom" Value="{TemplateBinding Progress}"> 
<ProgressBar.Foreground> 
    <SolidColorBrush x:Name="ProgressBrush" Color="Orange"/> 
</ProgressBar.Foreground> 

現在,你必須控制的前景畫筆屬性的引用(」 ProgressBrush「),您可以使用」彩色動畫「對其進行動畫處理。

<ColorAnimation Storyboard.TargetName="ProgressBrush" Storyboard.TargetProperty="Color" 
           To="Black" Duration="0:0:0.25" EnableDependentAnimation="True"/> 

希望這有助於! 參考:How to: Animate the Color or Opacity of a SolidColorBrush