自定义EventTrigger来使用RoutedEvent来制作动画
本文关键字:RoutedEvent 动画 EventTrigger 自定义 | 更新日期: 2023-09-27 18:13:15
这就是我想要完成的。
这是一个售货亭的条形码阅读器。
- 主屏幕textBlock应该显示"Scan barcode"
- 条形码读取后
- 连接到远程SQL Server检查条形码是否符合
- 如果它符合条件,主文本块应该说"你赢了....."1分钟,并显示按钮打印获胜。
- 如果不符合条件,它应该说5秒钟"请与收银员核对"
- 如果是错误的条形码,它应该提示5秒"错误的条形码,再试一次"
- 它应该总是在结束时恢复为"扫描条形码"
我明白最好在文本块上做一个动画,但是我如何从代码中触发动画。
这可能是一个更简单的方法,如果有,请告诉我。
我用VB写代码,很老的学校,但是我可以很容易地在线转换你的c#代码。
Thanks in advance
我将使用TextChanged事件,所以一个例子将是这样的。
private void txScanBox_TextChanged(object sender, EventArgs e)
{
//Do whatever
return;
}
目前我正在使用这种方法,如果您有更好的方法,请告诉我。
在xaml中,我创建了3个没有触发器的故事板。
<Window.Resources>
<Storyboard x:Key="WrongBarcode">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="txtbScan">
<DiscreteStringKeyFrame KeyTime="0:0:0" Value="Wrong Barcode"/>
<DiscreteStringKeyFrame KeyTime="0:0:4" Value="Scan your barcode"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Win">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="txtbScan">
<DiscreteStringKeyFrame KeyTime="0:0:0" Value="Hurray You Won"/>
<DiscreteStringKeyFrame KeyTime="0:0:25" Value="Scan your barcode"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Unqulified">
<StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="txtbScan">
<DiscreteStringKeyFrame KeyTime="0:0:0" Value="Please Qualify your card at the Cashier."/>
<DiscreteStringKeyFrame KeyTime="0:0:4" Value="Scan your barcode"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
和
后面的代码Private Sub Window_KeyDown(sender As Object, e As KeyEventArgs)
Static curBarcode As String
If e.Key = 6 Then 'Found that it hits key6 at the end of each barcode read
Select Case ValidateCard(curBarcode)
Case 0
Dim Unqulified As Storyboard = DirectCast(FindResource("Unqulified"), Storyboard)
Unqulified.Begin(Me)
Case 1
Dim win As Storyboard = DirectCast(FindResource("Win"), Storyboard)
win.Begin(Me)
Case Else
Dim WrongBarcode As Storyboard = DirectCast(FindResource("WrongBarcode"), Storyboard)
WrongBarcode.Begin(Me)
End Select
'txtbScan.Text = "Scan your gift card."
curBarcode = ""
Else
curBarcode = curBarcode & Mid(e.Key.ToString(), 2, 1)
'
End If
End Sub
我仍然需要改变获胜的文本,它有很多变化。我正在考虑添加一个更大的文本块,甚至可能是一个图像,并在代码和动画可见性中设置值。
请让我知道你的想法。
谢谢