抱歉问了个基本问题。
我想创建一个UI,当在WPF应用程序中按下按钮时,使标签 Flink /关闭。
我能够使标签 Flink 时,屏幕开始,但我有麻烦弄清楚如何通知标签时,按下按钮。
1.我创建了 Flink 标签的XAML作为BlinkingLabel. xaml。
我将此文件的构建操作更改为resource。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Storyboard x:Key="FlashStory">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" RepeatBehavior="Forever" AutoReverse="True">
<LinearDoubleKeyFrame KeyTime="0:0:0.2" Value="1" />
<LinearDoubleKeyFrame KeyTime="0:0:0.8" Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Style TargetType="Label" x:Key="LabelFlash">
<Style.Triggers>
<EventTrigger RoutedEvent="Label.Loaded">
<BeginStoryboard Storyboard="{StaticResource FlashStory}" />
</EventTrigger>
</Style.Triggers>
</Style>
2.我指定可以引用App. xaml中创建的BlinkingLabel.xaml。
<Application x:Class="WpfApp2.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp2"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary Source="BlinkingLabel.xaml" />
</Application.Resources>
3.我写的MainWindow.xaml是这样的。
<Window x:Class="WpfApp2.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:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label x:Name="lblMessage"
Content="connecting"
Grid.Column="1"
Foreground="White"
FontSize="22"
Background="LightBlue"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Height="40"
Style="{StaticResource LabelFlash}" />
<Button Click="ConnectStart"
Content="Start"
Grid.Column="1"
Grid.Row="1"
Height="40">
</Button>
<Button Click="ConnectStop"
Content="Stop"
Grid.Column="1"
Grid.Row="2"
Height="40">
</Button>
</Grid>
</Grid>
由于Label.Loaded是在BlinkingLabel.xaml中指定的,我发现 Flink 是在屏幕启动时开始的。
但是,我希望这个部分在按钮被按下时 Flink ,但我很担心,因为我不知道如何指定标签以外的事件(如button.click)。
如何触发另一个元素的状态?
对不起,我的英语很差。
请给予我一些建议。
2条答案
按热度按时间zu0ti5jz1#
一个简单的方法是只将 Flink 样式应用于按钮的单击处理程序中的标签,因此在此之前它将表现为普通标签。这是CSS中的典型做法,添加类来更改动画。
一种更健壮的方法是实现一个具有
IsBlinking
属性的label子类,并在样式中将其用作条件,以便仅在动画打开时运行动画。然后在按钮单击处理程序中,只需将属性设置为true,就可以看到神奇的事情发生了。q43xntqr2#
以下是如何停止和启动使用
<BeginStoryboard>
XAML元素启动的Storyboard
: