c# - WPF Storyboard 动画不闪烁

标签 c# wpf animation storyboard

我一直在遵循一些有关如何使标签闪烁的说明。我在动画方面没有太多经验,所以我不知道我的问题出在哪里!我的代码是:

<Window x:Class="WPFAnimationStoryBoard.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WPFAnimationStoryBoard"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <ResourceDictionary>
        <Storyboard x:Key="blinkAnimation" RepeatBehavior="1" >
            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
                                          Storyboard.TargetName="InitProc"
                                          AutoReverse="True">
                <ColorAnimationUsingKeyFrames.KeyFrames>
                    <DiscreteColorKeyFrame KeyTime="0:0:0" Value="White"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:1" Value="Black"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:2" Value="White"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:3" Value="Black"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:4" Value="White"/>
                </ColorAnimationUsingKeyFrames.KeyFrames>
            </ColorAnimationUsingKeyFrames>
            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)"
                                          Storyboard.TargetName="InitProc"
                                          AutoReverse="True">
                <ColorAnimationUsingKeyFrames.KeyFrames>
                    <DiscreteColorKeyFrame KeyTime="0:0:0" Value="Black"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:1" Value="White"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:2" Value="Black"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:3" Value="White"/>
                    <DiscreteColorKeyFrame KeyTime="0:0:4" Value="Black"/>
                </ColorAnimationUsingKeyFrames.KeyFrames>
            </ColorAnimationUsingKeyFrames>
        </Storyboard>
    </ResourceDictionary>
</Window.Resources>
<Grid>

   <Label Name="InitProc" Grid.Row="0" Grid.Column="2" Content="{Binding ElementName=myWindow, Path=Hello}" Background="White" Foreground="Black">
        <Label.Triggers>
            <EventTrigger RoutedEvent="Binding.TargetUpdated">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <StaticResource ResourceKey="blinkAnimation"/>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Label.Triggers>
    </Label>
</Grid>

这是我的隐藏代码:

namespace WPFAnimationStoryBoard
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        Hello = "hello";
    }
    private string _hello;

    public event PropertyChangedEventHandler PropertyChanged;

    public string Hello
    {
        get { return _hello; }
        set
        {
            _hello = value;
            OnPropertyChanged("Hello");
        }
    }

    protected void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }
}
}

我做错了什么?如果您能在回答的同时提供一些动画幕后发生的事情,我将不胜感激。

谢谢!!

编辑:我更改为允许属性更新的绑定(bind)...把球落在了那个上。它仍然不会产生闪烁,但它确实在 UI 中显示了世界“Hello”。

最佳答案

来自Binding.TargetUpdated Attached Event MSDN 页面:

Occurs when a value is transferred from the binding source to the binding target, but only for bindings with the NotifyOnTargetUpdated value set to true.

所以你的绑定(bind)应该是这样的:

Content="{Binding ElementName=myWindow, Path=Hello, NotifyOnTargetUpdated=True}" 

关于c# - WPF Storyboard 动画不闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044812/

相关文章:

CSS无限旋转动画

c# - 在EF中动态设置表名

c# - 从 MultiPolygon WKT 解析时在 SQL server + management studio (2014) 中得到错误的空间结果

c# - 查询抛出 "IndexOutOfRange"

c# - 使用 WCF 数据服务保存对象及其相关对象

c# - C# 代码背后的数据绑定(bind)

c# - FocusedElement 没有得到尊重

c# - WPF 调度程序性能(100-200 次更新/秒)

css - @Keyframes 不工作

javascript - 如何为 Mapbox 上的每个坐标设置动画标记?