2012-11-18 8 views
2

나는 다음과 같은 XAML 그리드 있습니다XAML의 스토리 보드

내가 프로그래밍 "페이드 아웃"애니메이션을 시작하고 ImageBrush와의 이미지를 변경하려면
<Grid Style="{StaticResource LayoutRootStyle}" x:Name="mainGrid"> 
    <Grid.Resources> 
     <Storyboard x:Name="FadeOut"> 
      <DoubleAnimation Duration="3" To="0.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="gridBackgroundImageBrush" d:IsOptimized="True"/> 
     </Storyboard> 
     <Storyboard x:Name="FadeIn"> 
      <DoubleAnimation Duration="3" To="0.35" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="gridBackgroundImageBrush" d:IsOptimized="True"/> 
     </Storyboard> 
    </Grid.Resources> 

    <Grid.Background> 
     <ImageBrush x:Name="gridBackgroundImageBrush" ImageSource="{Binding BackgroundImage}" Opacity="0.35"> 
     </ImageBrush> 
    </Grid.Background> 

, 다음 "FadeIn"애니메이션을 시작, 같은를 :

private void t_Tick(object sender, object e) 
    { 
     try 
     { 
      FadeOut.Begin(); 
      this.DefaultViewModel["BackgroundImage"] = BackgroundImage; 
      FadeIn.Begin(); 
     } 
     catch { } 
    } 

그러나 이미지는 애니메이션없이 변경됩니다. 문제는 ImageBrush의 "불투명도"속성에 액세스하는 방법에 관한 것입니다. http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.animation.storyboard.settargetproperty.aspx하지만이 작동하지 않는 것 : MSDN 같은

(Control.Background).(ImageBrush.Opacity) 

여기 보여줍니다 나는 TargetProperty 속성에 대해 다음 구문을 시도했다. 누군가이 문제를 도와 줄 수 있습니까?

답변

2

용액 페이딩 시각적 상태를 형성 한 다음 ImageBrush와 함께 이미지를 드로잉하고보다는 화상 제어를 만들 수 있었다 :

<Grid Style="{StaticResource LayoutRootStyle}" x:Name="mainGrid"> 
    <Image Grid.RowSpan="2" x:Name="gridBackgroundImageBrush" Source="{Binding BackgroundImage}" /> 
</Grid> 
<VisualStateGroup x:Name="FadeStates"> 
     <VisualState x:Name="FadeOutState"> 
      <Storyboard> 
        <DoubleAnimation Duration="{Binding fadeDuration}" From="0.5" To="0.0" x:Name="fadeOutAnimation" 
            Storyboard.TargetProperty="Opacity" 
            Storyboard.TargetName="gridBackgroundImageBrush" /> 
      </Storyboard> 
     </VisualState> 
     <VisualState x:Name="FadeInState"> 
      <Storyboard> 
        <DoubleAnimation Duration="{Binding fadeDuration}" From="0.0" To="0.5" x:Name="fadeInAnimation" 
            Storyboard.TargetProperty="Opacity" 
            Storyboard.TargetName="gridBackgroundImageBrush" /> 
      </Storyboard> 
     </VisualState> 
</VisualStateGroup>