Я тщательно прочесывал Интернет в поисках каких-либо указаний, обсуждений или опыта по этому вопросу, и я думаю, что могу с уверенностью сказать, что ничего не нашел.
Мы разрабатываем набор элементов управления для UWP, исходный код которого мы планируем предоставить бесплатно. Один из элементов управления, который мы создаем, — это элемент управления TimeSpanPicker
, который будет выглядеть и вести себя как элемент управления TimePicker
, но вместо того, чтобы быть ограниченным временем суток (т. е. 24-часовым интервалом), он позволит пользователю редактировать произвольный элемент TimeSpan
.
Из того, что мне удалось собрать из видимых метаданных API среды выполнения Windows, используя встроенный элемент управления TimePicker
для справки, я понимаю, что задействованы следующие типы компонентов:
- Сам элемент управления TimePicker, наследуемый от
Control
- Класс TimePickerFlyout, наследуемый от
PickerFlyoutBase
- Элемент управления TimePickerFlyoutPresenter, наследуемый от
Control
Я понимаю, что мне нужно сымитировать этот шаблон и написать эти три компонента для нашего элемента управления сборщиком, но я не могу найти информацию о том, как эти части сочетаются друг с другом, и я не думаю, что только на поверхностях API это возможно понять.
В частности, основные вещи, которые я хотел бы понять, это:
- Как
TimePickerFlyout
включается в классTimePicker
? Я не вижу ссылки на всплывающее меню в стандартном шаблоне средства выбора. - Какую роль играет элемент управления
TimePickerFlyoutPresenter
и как он включается в классTimePickerFlyout
? У классаTimePickerFlyout
нет шаблона — так как же он создает экземпляр и взаимодействует с элементом управленияTimePickerFlyoutPresenter
? - Каковы основные шаги для имитации этого шаблона?
- Каково предполагаемое использование виртуальных методов
ShouldShowConfirmationButtons
иOnConfirmed
вPickerFlyoutBase
? Когда я переопределяю их в своей конкретной реализации, они никогда не вызываются.
Буду очень признателен за любое руководство!