制备使用动画WPF标签(或其他元素)闪(Making a WPF Label (or other e

2019-08-19 15:52发布

我有一个标签,我只是根据我的ViewModel属性之一使可见。 这里是XAML:

<Label  HorizontalAlignment="Center" VerticalAlignment="Center"
        HorizontalContentAlignment="Center" 
        VerticalContentAlignment="Center" 
        FontSize="24" Width="200" Height="200" >
    <Label.Content >
        Option in the money! 
    </Label.Content>
    <Label.Style>
        <Style TargetType="{x:Type Label}">
            <Setter Property="Visibility" Value="Hidden" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding OptionInMoney}" Value="True">
                    <Setter Property="Visibility"
                Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Label.Style>

</Label>

我不知道这是最好的方式,但在任何情况下,我也想有标签闪烁。 很显然,我只希望它闪烁时,它是可见的。 有人能指出我一些示例代码,或者写一个简单的例子来做到这一点? 我想我需要某种触发,和动画。 大概我还需要一个触发时,标签将不再可见,让我停止动画?

谢谢,戴夫PS有一本好书或网站所有这些WPF花样? 有点像“MFC答题簿”对于那些还记得那本书。

Answer 1:

你可以添加一个Storyboard动画到Style.Resources ,并在启动EnterActions的第DataTrigger

一个简单的DoubleAnimationOpacity应该正常工作

事情是这样的:

<Label.Style>
    <Style TargetType="{x:Type Label}">
        <Style.Resources>
            <Storyboard x:Key="flashAnimation" >
                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" AutoReverse="True" Duration="0:0:0.5" RepeatBehavior="Forever" />
            </Storyboard>
        </Style.Resources>

        <Setter Property="Visibility" Value="Hidden" />
        <Style.Triggers>
            <DataTrigger Binding="{Binding OptionInMoney}" Value="True">
                <Setter Property="Visibility" Value="Visible" />
                <DataTrigger.EnterActions>
                    <BeginStoryboard Name="flash" Storyboard="{StaticResource flashAnimation}" />
                </DataTrigger.EnterActions>
                <DataTrigger.ExitActions>
                    <StopStoryboard BeginStoryboardName="flash"/>
                </DataTrigger.ExitActions>
            </DataTrigger>

        </Style.Triggers>
    </Style>
</Label.Style>


Answer 2:

故事板是肯定的WPF的方式,但它可以通过一个简单的代码也可以实现。 这里有云,做一个标签背景闪烁:

lblTimer是勒贝尔表单一些文字,说,“我是闪烁的”上

这可以适用于任何属性,如知名度。

// Create a timer.
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    DispatcherTimer timer = new DispatcherTimer();
    timer.Tick += timer_Tick;
    timer.Interval = new TimeSpan(0, 0, 0, 0, 500);
    timer.Start();
}

// The timer's Tick event.
private bool BlinkOn = false;
private void timer_Tick(object sender, EventArgs e)
{
    if (BlinkOn)
    {
        lblTimer.Foreground = Brushes.Black;
        lblTimer.Background = Brushes.White;
    }
    else
    {
        lblTimer.Foreground = Brushes.White;
        lblTimer.Background = Brushes.Black;
    }
    BlinkOn = !BlinkOn;
}


Answer 3:

试试这个职位 。 这就是所谓的“闪烁的TextBlock”,但你可以很容易地换一个TextBox的Label`。



文章来源: Making a WPF Label (or other element) flash using animation