PropertyChange上的按钮弹跳

时间:2012-03-22 22:13:08

标签: wpf visual-studio-2010 xaml

我有一个简单的按钮(其中3个 - 除了内容绑定外只是一个整数。

<Button Width="24" Height="24" Style="{StaticResource CircleButton}" 
                   Background="#CC2B2B" Foreground="#FFFFFF"
                   Content="{Binding PinnedItemsCount, 
                             FallbackValue=0, 
                             Mode=TwoWay,  
                             UpdateSourceTrigger=PropertyChanged, 
                             NotifyOnTargetUpdated=True}" 
                   Name="ui_btnPinnedCount" />

如何在数据发生变化时制作按钮?

底层内容实现了INotifyPropertyChanged,数据绑定全部正常工作,一旦数据发生变化,只需要按钮弹跳3次....

谢谢!

2 个答案:

答案 0 :(得分:3)

将动画与DataTrigger一起使用

http://msdn.microsoft.com/en-us/library/system.windows.media.animation.bounceease.aspx

How to: Trigger an Animation When Data Changes

<Rectangle Name="myRectangle" Width="200" Height="30" Fill="Blue">
<Rectangle.Triggers>
    <EventTrigger RoutedEvent="Rectangle.MouseDown">
        <BeginStoryboard>
            <Storyboard>
                <Storyboard x:Name="myStoryboard">
                    <DoubleAnimation From="30" To="200" Duration="00:00:3" 
                     Storyboard.TargetName="myRectangle" 
                     Storyboard.TargetProperty="Height">
                        <DoubleAnimation.EasingFunction>
                            <BounceEase Bounces="2" EasingMode="EaseOut" 
                             Bounciness="2" />
                        </DoubleAnimation.EasingFunction>
                    </DoubleAnimation>
                </Storyboard>

            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Rectangle.Triggers>

</Rectangle>

答案 1 :(得分:0)

这使它淡入淡出,取而代之的是我想象的任何故事板动画。

        <Button Width="24" Height="24" Style="{StaticResource CircleButton}" Background="#CC2B2B" Foreground="#FFFFFF"
                Content="{Binding PinnedCount, FallbackValue=0, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True}" 
                Name="ui_btnPinnedCount">
            <Button.Triggers>
                <EventTrigger RoutedEvent="Binding.TargetUpdated">
                    <BeginStoryboard>
                        <Storyboard AutoReverse="True">
                            <DoubleAnimation Storyboard.TargetName="ui_btnPinnedCount" Storyboard.TargetProperty="Opacity" To=".1" Duration="0:0:.5" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Button.Triggers>
        </Button>