标签值更改时对边框进行动画处理

时间:2019-04-11 11:10:51

标签: wpf vb.net

我有这些边框和标签:

<Border x:Name="PulseBoba" Width="auto" Height="auto" Background="#FFF75959" CornerRadius="2" Margin="0" HorizontalAlignment="Left">
                                    <Label Content="{Binding kolicina}" FontSize="20" DockPanel.Dock="Right"  HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Width="Auto" Margin="5,0">
                                      <Label.Triggers>        
            <EventTrigger RoutedEvent="Binding.TargetUpdated">            
                <BeginStoryboard>                    
                    <Storyboard>                        
                        <DoubleAnimation 
                            Storyboard.TargetProperty="(Label.RenderTransform).(RotateTransform.Angle)"                             
                            From="0" 
                            To="360" 
                            Duration="0:0:2"/>                    
                    </Storyboard>                
                </BeginStoryboard>            
            </EventTrigger>    
        </Label.Triggers>

                                    </Label>

                                </Border>

在我的vb.net代码中,我有这段代码可以正确设置值并显示在标签中:

...
 Public Event PropertyChanged As PropertyChangedEventHandler _
    Implements INotifyPropertyChanged.PropertyChanged

Private Sub NotifyPropertyChanged(ByVal info As String)
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(info))
End Sub
Public Property kolicina() As String
    Get
        Return m_kolicina
    End Get
    Set
        m_kolicina = Value
        NotifyPropertyChanged("kolicina")
    End Set
End Property
...

更改“ kolicina”的值后,如何为该边框设置动画以使其闪烁或旋转?

1 个答案:

答案 0 :(得分:2)

例如,您可以绑定Tag的{​​{1}}属性,并使用Border来监听EventTrigger附加事件:

Binding.SourceUpdated

如果需要更多控制,则应以编程方式实现动画。然后,您可以例如在视图中处理视图模型的<Border x:Name="PulseBoba" Width="auto" Height="auto" Background="#FFF75959" CornerRadius="2" Margin="0" HorizontalAlignment="Left" Tag="{Binding kolicina, NotifyOnTargetUpdated=True}"> <Border.RenderTransform> <RotateTransform Angle="0" /> </Border.RenderTransform> <Border.Triggers> <EventTrigger RoutedEvent="Binding.SourceUpdated"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="(Border.RenderTransform).(RotateTransform.Angle)" From="0" To="360" Duration="0:0:2"/> </Storyboard> </BeginStoryboard> </EventTrigger> </Border.Triggers> <Label Content="{Binding kolicina}" FontSize="20" DockPanel.Dock="Right" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" Width="Auto" Margin="5,0" /> </Border> 事件,并根据任何条件在背后的代码中自己创建PropertyChanged。这是一个典型示例,在这种情况下,在视图中实现与视图相关的内容非常有意义。