2011-05-31 2 views
0

У меня есть круглый указатель (индикатор выполнения) с многоугольной иглой, который, когда я выбираю номер в списке, игла поднимается до такой степени, чтобы напоминать скорость в автомобиле (отлично работает)таймер/секундомер для автоматизации

То, что я хочу сделать, автоматически запускается через индексы элементов списка (0,1,2,3, ... 60), поэтому игла медленно поднимается до тех пор, пока она не скажет 60 скорости. Затем держите его до тех пор, пока я хочу, чтобы я мог переместить иглу с иголкой и запустить одометр соответственно. Я попытался использовать таймер в классе MVC и использовать секундомер. Я могу выбрать индекс 0 -6, но он будет просто переходить к последнему. Я пытаюсь имитировать приборную панель автомобиля, насколько я могу ... Какова ваша мысль?

public partial class MainWindow : Window 
{ 
    //DispatcherTimer timer; 
    List<Double> _items = new List<Double>(); 


    DispatcherTimer timer; 

    public MainWindow() 
    { 
     this.InitializeComponent(); 
     listBox1.ItemsSource = new List<double>() { 0,1,2,3,4,5,10,11,12,13,14, 15, 20, 25, 30, 35, 40 }; 
     checkBox1.IsChecked = true; 
     park.Foreground = Brushes.Red; 

     timer = new DispatcherTimer(); 
     timer.Interval = TimeSpan.FromMilliseconds(2500); 
     timer.Tick += new EventHandler(timer_Tick); 
     timer.Start(); 


    } 

    void timer_Tick(object sender, EventArgs e) 
    { 



     int second = DateTime.Now.Second; 

     firstDigitsec = second/10; 


     int secondDigitsec = second % 10; 


     checkBox1.IsChecked = false; 
     first.Foreground = Brushes.Green; 
     park.Foreground = Brushes.White; 
     checkBox2.IsChecked = true; 



     Stopwatch stopwatch = Stopwatch.StartNew(); 

     listBox1.SelectedIndex = 0; 
     listBox1.SelectedIndex = 1; 
     listBox1.SelectedIndex = 2; 
     listBox1.SelectedIndex = 3; 


    } 




    private int _stopw; 
    public int sw 
    { 
     get { return _stopw; } 
     set 
     { 
      _stopw = value; 
      OnPropertyChanged(""); 

     } 
    } 



    private int _firstDigitsec; 
    public int firstDigitsec 
    { 
     get { return _firstDigitsec; } 
     set 
     { 
      _firstDigitsec = value; 
      OnPropertyChanged(""); 
      /* 
      if (firstDigitsec < 1) 
      { 
       listBox1.SelectedIndex = 0; 
      } 
      if (firstDigitsec < 2) 
      { 

      */ 
     } 
    } 


    public event PropertyChangedEventHandler PropertyChanged; 

     protected virtual void OnPropertyChanged(string propertyName) 
     { 
      var handler = PropertyChanged; 
      if (handler != null) 
       handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 

ответ

1

Поскольку вы используете WPF это звучит как отличный кандидат на Animation

Использовать Binding связать свойство прогресса вашего Gauge на имущество Прогресс в вашей ViewModel и применить DoubleAnimation анимировать свойство прогресса от предыдущее значение к новому значению

+0

Я смотрю эту статью. Это похоже на что-то, что будет работать –

+0

Полигон - это моя игла, но я не могу получить доступ к ней из панели выполнения. как я могу связать свойство прогресса? –

+0

Я предполагаю, что ваш регулятор контроля имеет своего рода свойство «Прогресс» или «Значение», которое можно привязать к свойству «Прогресс» в вашей модели ViewModel. Если вы создаете ручку вручную, вы можете захотеть рассмотреть какую-то стороннюю библиотечную калибровку, чтобы упростить ситуацию. Infragistics предлагает множество датчиков – cordialgerm

Смежные вопросы