現在我正在使用這個,讓我知道如果你有更好的方法。
in xaml我創建了3個沒有觸發器的storybaords。
<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
我仍然需要改變中標文本,其中有許多變化的代碼。我正在考慮添加一個更大的文本塊,甚至可能是一個圖像,並在代碼中設置值並設置動畫可見性。
請讓我知道您的想法。
謝謝