Встроенный TimePicker
действительно не поддерживает ввод секунд.Вы можете создать подкласс TimePicker
и расширить его вручную для поддержки этого сценария, но это может оказаться довольно сложным, поскольку вам придется не только изменять шаблон самого элемента управления, но вам придется редактировать TimePickerFlyoutPresenter
для поддержки секундвход.Это может быть вообще невозможно, и может быть излишним.
Я думаю, что лучшим и простым решением было бы использование расширения TextBoxMask
, которое является частью Windows Community Toolkit .Это позволяет вам определить пользовательский формат TextBox
, который может выглядеть следующим образом:
<TextBox extensions:TextBoxMask.CustomMask="5:[0-5]"
extensions:TextBoxMask.Mask="99:59:59" />
Этот TextBox
будет поддерживать ввод в формате hh:mm:ss
.По умолчанию Mask
поддерживает символы a
для букв, 9
для цифр 0-9 и *
для любых символов.Вы можете определить пользовательские символы маски, используя CustomMask
, что я и сделал здесь, чтобы убедиться, что десятки минут и секунд ограничены до пятидесяти (00-59).
Другим решением может быть создание пользовательского элемента управленияон сочетает в себе обычный встроенный TimePicker
с TextBox
всего на несколько секунд, но я думаю, что TextBoxMask
является лучшим и более удобным для пользователя решением.