我有一个标签,我只是根据我的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答题簿”对于那些还记得那本书。
你可以添加一个Storyboard
动画到Style.Resources
,并在启动EnterActions
的第DataTrigger
。
一个简单的DoubleAnimation
在Opacity
应该正常工作
事情是这样的:
<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>
故事板是肯定的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;
}
试试这个职位 。 这就是所谓的“闪烁的TextBlock”,但你可以很容易地换一个TextBox
的Label`。