#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" />