按时间间隔 TimePicker WPF 允许微调器 Increment/decrement

Allow spinner Increment/decrement by time interval TimePicker WPF

所以我在 XAML 视图文件中声明了一个 TimePicker

<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 方法 class:

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

目前,将 TimeInterval 设置为 00:30:0 只会在下拉列表中显示这些间隔。

有没有办法让 up/down 微调器也只 increment/decrement 30 分钟?有没有办法用 TimePicker 注册按钮按下?

您应该能够通过子类化 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" />