2013-05-10 99 views
0

這是我正在努力完成的。自定義EventTrigger使用RoutedEvent動畫

這是一個自助服務終端的條形碼閱讀器。

  • 主屏幕文本塊應該說「掃描條形碼」
  • 條形碼讀取
  • 連接後,遠程SQL Server檢查條形碼資格
  • 如果資格主要文本塊應該說:「你贏了。 ....「1分鐘,並顯示按鈕以打印獲勝。
  • 如果不符合,應該說,持續5秒
  • 如果一個錯誤的條碼,應該說,持續5秒「錯誤條形碼,再試一次」
  • 應該隨時恢復「請收銀員檢查」回到最後「掃描條形碼」

我知道這將是最好的文本塊上的動畫,但如何從代碼觸發動畫。

這可能是一個更簡單的方法來實現這一點,請讓我知道如果有。

我在VB中編寫代碼,是老派,但我可以輕鬆地在線轉換您的C#代碼。

在此先感謝

回答

0

我會用TextChanged事件這樣的例子會是這樣的。

private void txScanBox_TextChanged(object sender, EventArgs e) 
    { 
      //Do whatever 
    return; 

    } 
0

現在我正在使用這個,讓我知道如果你有更好的方法。

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 

我仍然需要改變中標文本,其中有許多變化的代碼。我正在考慮添加一個更大的文本塊,甚至可能是一個圖像,並在代碼中設置值並設置動畫可見性。

請讓我知道您的想法。

謝謝