Как установить нулевое значение TimePicker? - PullRequest
0 голосов
/ 13 февраля 2019

Я использую TimePicker и по умолчанию отображается значение «12:00 AM», я хочу установить поле пустым.

<TimePicker x:Name="timepicker" />

1 Ответ

0 голосов
/ 13 февраля 2019

Вы должны создать свой собственный класс TimePicker, который разрешит NullableTime в XAML.

Класс должен быть следующим:

public class MyTimePicker : TimePicker
    {
        private string _format = null;
        public static readonly BindableProperty NullableDateProperty = 
        BindableProperty.Create<MyTimePicker, TimeSpan?>(p => p.NullableTime, null);

        public TimeSpan? NullableTime
        {
            get { return (TimeSpan?)GetValue(NullableDateProperty); }
            set { SetValue(NullableDateProperty, value); UpdateTime(); }
        }

        private void UpdateTime()
        {
            if (NullableTime.HasValue) { if (null != _format) Format = _format; Time = NullableTime.Value; }
            else { _format = Format; Format = "pick ..."; }
        }
        protected override void OnBindingContextChanged()
        {
            base.OnBindingContextChanged();
            UpdateTime();
        }

        protected override void OnPropertyChanged(string propertyName = null)
        {
            base.OnPropertyChanged(propertyName);
            if (propertyName == "Time") NullableTime = Time;
        }
    }

Затем в XAML вы должны создать свой элемент управления и использовать его, как показано ниже:

<local:MyTimePicker NullableTime="{x:Null}" />

Если вы используете этот образецвы увидите, что значение по умолчанию должно быть выбрано ...

enter image description here

...