Разрешить вращение Увеличение / уменьшение на временной интервал TimePicker WPF - PullRequest
2 голосов
/ 22 марта 2019

Итак, у меня есть 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 методом в классе модели моего представления:

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

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

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

1 Ответ

3 голосов
/ 22 марта 2019

Этого можно добиться, создав подкласс 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" />
...