如何使添加淡入/淡出动画的基础上的ViewModel属性值? [英] How to make add a fade-in/fade-out animation based on ViewModel property value?

查看:230
本文介绍了如何使添加淡入/淡出动画的基础上的ViewModel属性值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个视图模型暴露出字符串属性的 PageToolBarVisible 它可以真正

 私人字符串_pageToolBarVisible;
公共字符串PageToolBarVisible
{
    得到
    {
        返回_pageToolBarVisible;
    }    组
    {
        _pageToolBarVisible =价值;
        OnPropertyChanged(PageToolBarVisible);
    }
}

然后在我的查看我有这样的 DataTrigger 其中的显示隐藏相应的工具栏:

 <风格X:键=PageToolBarStyle的TargetType =边框>
    < Style.Triggers>
        < D​​ataTrigger绑定={结合PageToolBarVisible}VALUE =false的>
            < setter属性=能见度VALUE =折叠/>
        < / DataTrigger>
    < /Style.Triggers>
< /样式和GT;<边框样式={StaticResource的PageToolBarStyle}
    DockPanel.Dock =底填充=5 5 5 0背景=#EEE>
    <网格背景=#EEE>
        ...
    < /网格和GT;
< /边框>

我怎么现在的添加 动画这样:


  • 当视图模型属性从变化的时真亦假工具栏淡出

  • 当视图模型属性从变化的假为真工具栏
  • 变淡

我想我有这样的事情添加到我的风格,但我不知道如何或在哪里:

 < BeginStoryboard>
<情节提要>
    < D​​oubleAnimation是
    Storyboard.TargetName =PageToolBar
    Storyboard.TargetProperty =(TextBlock.Opacity)
    从=0.0为了=1.0时长=0:0:3/>
< /故事板>
< / BeginStoryboard>


解决方案

您可以把您的BeginStoryboard里面DataTrigger.EnterActions

 < D​​ataTrigger绑定={结合PageToolBarVisible}VALUE =false的>
    < D​​ataTrigger.EnterActions>
        < BeginStoryboard>
            <情节提要>
                < D​​oubleAnimation是
                Storyboard.TargetName =PageToolBar
                Storyboard.TargetProperty =(TextBlock.Opacity)
                从=0.0为了=1.0时长=0:0:3/>
            < /故事板>
        < / BeginStoryboard>
    < /DataTrigger.EnterActions>    < D​​ataTrigger.ExitActions>
        < BeginStoryboard>
            <情节提要>
                < D​​oubleAnimation是
                    Storyboard.TargetName =PageToolBar
                    Storyboard.TargetProperty =(TextBlock.Opacity)
                    从=1.0为了=0.0时长=0:0:3/>
            < /故事板>
        < / BeginStoryboard>
    < /DataTrigger.ExitActions>
< / DataTrigger>

I have a ViewModel which exposes the string property PageToolBarVisible which can be true or false:

private string _pageToolBarVisible;
public string PageToolBarVisible
{
    get
    {
        return _pageToolBarVisible;
    }

    set
    {
        _pageToolBarVisible = value;
        OnPropertyChanged("PageToolBarVisible");
    }
}

Then on my View I have this DataTrigger which displays or hides the toolbar accordingly:

<Style x:Key="PageToolBarStyle" TargetType="Border">
    <Style.Triggers>
        <DataTrigger Binding="{Binding PageToolBarVisible}" Value="false">
            <Setter Property="Visibility" Value="Collapsed"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

<Border Style="{StaticResource PageToolBarStyle}"
    DockPanel.Dock="Bottom" Padding="5 5 5 0" Background="#eee">
    <Grid Background="#eee">
        ...
    </Grid>
</Border>

How do I now add an animation so that:

  • when the ViewModel Property is changed from true to false, the toolbar fades out
  • when the ViewModel Property is changed from false to true, the toolbar fades in

I assume I have to add something like this to my style, but I don't know how or where:

<BeginStoryboard>
<Storyboard>
    <DoubleAnimation
    Storyboard.TargetName="PageToolBar"
    Storyboard.TargetProperty="(TextBlock.Opacity)"
    From="0.0" To="1.0" Duration="0:0:3"/>
</Storyboard>
</BeginStoryboard>

解决方案

You can put the BeginStoryboard inside your DataTrigger.EnterActions

<DataTrigger Binding="{Binding PageToolBarVisible}" Value="false">
    <DataTrigger.EnterActions>
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation
                Storyboard.TargetName="PageToolBar"
                Storyboard.TargetProperty="(TextBlock.Opacity)"
                From="0.0" To="1.0" Duration="0:0:3"/>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.EnterActions>

    <DataTrigger.ExitActions>
        <BeginStoryboard>
            <Storyboard>
                <DoubleAnimation
                    Storyboard.TargetName="PageToolBar"
                    Storyboard.TargetProperty="(TextBlock.Opacity)"
                    From="1.0" To="0.0" Duration="0:0:3"/>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.ExitActions>
</DataTrigger>

这篇关于如何使添加淡入/淡出动画的基础上的ViewModel属性值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆