首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于背景ImageBrush的XAML Storyboard

用于背景ImageBrush的XAML Storyboard
EN

Stack Overflow用户
提问于 2012-11-19 03:41:34
回答 1查看 2.3K关注 0票数 2

我有以下XAML网格:

代码语言:javascript
复制
 <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>

我想以编程方式启动"FadeOut“动画,并更改ImageBrush中的图像,然后启动"FadeIn”动画,如下所示:

代码语言:javascript
复制
private void t_Tick(object sender, object e)
    {
        try
        {
            FadeOut.Begin();
            this.DefaultViewModel["BackgroundImage"] = BackgroundImage;
            FadeIn.Begin();
        }
        catch { }
    }

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

代码语言:javascript
复制
(Control.Background).(ImageBrush.Opacity)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-19 22:27:05

解决方案是创建一个图像控件,而不是使用ImageBrush绘制图像,然后定义淡入淡出的视觉状态:

代码语言:javascript
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13443854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档