【问题标题】:WPF: Animation not work In time of change IsEnabled to {False or True}WPF:动画不起作用在将 IsEnabled 更改为 {False 或 True} 时
【发布时间】:2017-10-30 06:56:19
【问题描述】:

显示默认的“网格”。

在第一步和“Hide_MouseUp”中,动画工作。

然后绝不响应 IsEnabled。

请帮我解决这个问题。

I am waiting for your warm response :)

风格:

<Style x:Key="ShowHideVisibilityStyle" TargetType="{x:Type Grid}">
    <Setter Property="Opacity" Value="1"></Setter>
    <Setter Property="Margin" Value="0,50,0,0"></Setter>
    <Setter Property="IsEnabled" Value="True" />
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="Opacity"
                            From="0" To="1" Duration="0:0:0.5" />
                        <ThicknessAnimation   
                            Storyboard.TargetProperty="Margin"
                            From="-600,50,0,0"
                            To="0,50,0,0" 
                            Duration="0:0:0.1"
                        />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
        </Trigger>
        <Trigger Property="IsEnabled" Value="False">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="Opacity"
                            From="1" To="0" Duration="0:0:0.5" />
                        <ThicknessAnimation   
                            Storyboard.TargetProperty="Margin"
                            BeginTime="0:0:0.5"
                            To="-600,50,0,0" 
                            Duration="0:0:0" />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
        </Trigger>
    </Style.Triggers>
</Style>

XAML:

<Grid x:Name="SettingPage" Width="290" Style="{DynamicResource ShowHideVisibilityStyle}">
    <!-- code -->
</Grid>

将状态 IsEnabled 更改为 {False 或 True} 的代码测试

private void Hide_MouseUp(object sender, MouseButtonEventArgs e){
    SettingPage.IsEnabled = false;
}
private void Show_MouseUp(object sender, MouseButtonEventArgs e){
    SettingPage.IsEnabled = true;
}

【问题讨论】:

    标签: c# wpf animation


    【解决方案1】:

    您好,我找到了解决方案:)

    对于在一个属性上使用两个触发器,应该使用“Trigger.EnterActions”和“Trigger.ExitActions”而不是使用两个单独的Triggers

    对不起,我的英语不好:D

    代码:

    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="True">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                       <!-- Animation -->
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
    
            <Trigger.ExitActions>
                <BeginStoryboard>
                    <Storyboard>
                        <!-- Animation -->
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
    

    【讨论】:

    • 哦,我看你自己想出来的。
    • @ManfredRadlwimmer 谢谢你的回答:)
    【解决方案2】:

    这是一个简单的修复。只需将“启用”动画移动到ExitTrigger

    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Trigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="Opacity"
                            From="1" To="0" Duration="0:0:0.5" />
                        <ThicknessAnimation   
                            Storyboard.TargetProperty="Margin"
                            BeginTime="0:0:0.5"
                            To="-600,50,0,0" 
                            Duration="0:0:0" />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="Opacity"
                            From="0" To="1" Duration="0:0:0.5" />
                        <ThicknessAnimation   
                            Storyboard.TargetProperty="Margin"
                            From="-600,50,0,0"
                            To="0,50,0,0" 
                            Duration="0:0:0.1"
                        />
                    </Storyboard>
                </BeginStoryboard>
            </Trigger.ExitActions>
        </Trigger>
    </Style.Triggers>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      相关资源
      最近更新 更多