【问题标题】:XAML Storyboard for Background ImageBrush背景 ImageBrush 的 XAML 故事板
【发布时间】:2012-11-18 19:41:33
【问题描述】:

我有以下 XAML 网格:

 <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>

我想以编程方式启动“淡出”动画并从 ImageBrush 更改图像,然后启动“淡入”动画,如下所示:

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

但是图像在没有任何动画的情况下发生变化。我想问题在于我如何访问 ImageBrush 的“不透明度”属性。我尝试了以下语法 TargetProperty 属性:

(Control.Background).(ImageBrush.Opacity)

如 msdn 所示:http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.animation.storyboard.settargetproperty.aspx 但它似乎不起作用。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: xaml windows-8 windows-store-apps


    【解决方案1】:

    解决方案是创建一个图像控件,而不是使用 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 2012-07-29
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多