Разрешить увеличение / уменьшение счетчика на временной интервал TimePicker WPF

#c# #wpf #timepicker #xceed-plus-edition

#c# #wpf #timepicker #xceed-plus-edition

Вопрос:

Итак, у меня есть TimePicker объявленный в моем файле представления XAML:

 <xctk:TimePicker Grid.Column="5" Value="{Binding TimeFrame}" TimeInterval="00:30:0" Format="Custom" FormatString="HH:mm" Margin="3 3 3 0" MinWidth="100"/>
  

Который привязан к моему TimeFrame методу в моем классе view model:

 private DateTime _timeFrame;
public DateTime TimeFrame
{
    get { return _timeFrame; }
    set
    {
        if (value != _timeFrame)
        {
            _timeFrame = value;
            OnPropertyChanged("TimeFrame");
        }
    }
}
  

На данный момент значение TimeInterval в 00:30:0 показывает только эти интервалы в выпадающем списке.

Есть ли способ также сделать так, чтобы счетчик вверх / вниз увеличивался / уменьшался только на 30 минут? Есть ли способ зарегистрировать нажатия кнопок с помощью TimePicker ?

Ответ №1:

Вы должны быть в состоянии выполнить это, создав подкласс TimePicker и устанавливая для Step свойства значение 30 всякий раз, когда увеличивается или уменьшается минутная часть:

 public class CustomTimePicker : Xceed.Wpf.Toolkit.TimePicker
{
    protected override void OnIncrement()
    {
        SetStep();
        base.OnIncrement();
    }

    protected override void OnDecrement()
    {
        SetStep();
        base.OnDecrement();
    }

    private void SetStep()
    {
        Step = CurrentDateTimePart == Xceed.Wpf.Toolkit.DateTimePart.Minute ? 30 : 1;
    }
}
  

Использование:

 <local:CustomTimePicker Grid.Column="5" Value="{Binding TimeFrame}" 
                        TimeInterval="00:30:0" Format="Custom"
                        FormatString="HH:mm" 
                        Margin="3 3 3 0" MinWidth="100" />