2014-11-27 2 views

ответ

1

Я хотел бы расширить контроль WPF Toolkit TimeSpanUpDown следующим образом:

public class TimeSpanUpDown : Xceed.Wpf.Toolkit.TimeSpanUpDown 
{ 
    protected override void OnIncrement() 
    { 
     if (Value.HasValue) 
     { 
      UpdateTimeSpan(1); 
     } 
     else 
     { 
      Value = DefaultValue ?? TimeSpan.Zero; 
     } 
    } 

    protected override void OnDecrement() 
    { 
     if (Value.HasValue) 
     { 
      UpdateTimeSpan(-1); 
     } 
     else 
     { 
      Value = DefaultValue ?? TimeSpan.Zero; 
     } 
    } 

    private void UpdateTimeSpan(int value) 
    { 
     TimeSpan timeSpan = (TimeSpan)Value; 
     timeSpan = timeSpan.Add(new TimeSpan(0, 0, 0, value, 0)); 

     if (IsLowerThan(timeSpan, Minimum)) 
     { 
      Value = Minimum; 
      return; 
     } 

     if (IsGreaterThan(timeSpan, Maximum)) 
     { 
      Value = Maximum; 
      return; 
     } 

     Value = timeSpan; 
    } 

} 

Таким образом, если вы нажмете на стрелку вы увеличиваете только секунду.

1

Если вы используете добавление свойства CurrentDateTimePart="Second" в элемент TimeSpanUpDown в вашем xaml, вы получите желаемый эффект. Это просто устанавливает значение по умолчанию DateTimePart при первой загрузке, а элементы управления клавиатурой по-прежнему работают должным образом.