Я уверен, что мне здесь не хватает чего-то очень простого. Практически любой поиск в Интернете Timepicker для C # / WPF указывает на эту веб-страницу: http://jobijoy.blogspot.com/2007/10/time-picker-user-control.html, и поэтому я решил, что он будет работать правильно. Однако, когда я копирую / вставляю это в пользовательский элемент управления и запускаю его, элемент управления отображается должным образом, но когда я нажимаю на цифры и нажимаю «Вверх» или «Вниз», ничего не происходит. Даже в режиме отладки с точкой останова на корпусе переключателя для события KeyDown ничего не происходит. Это не регистрирует событие KeyDown. Предполагается, что он сосредоточен на сетке, содержащей TextBlock, поэтому я попытался изменить KeyDown на TextBlock, но безрезультатно. Кажется, я не могу заставить это работать! :( Я использую Visual Studio 2008.
Кажется, не удается заставить Timepicker работать (C # / WPF)
Ответы (3)
Я думаю, ты по какой-то причине не сосредотачиваешься на контроле. Я тоже пробовал, и ивент у меня тоже не сработал. Этот пост может дать некоторое представление . Однако установка фокуса на пользовательский элемент управления вручную в событии Loaded у меня не сработала.
Единственное, что у меня сработало, - это следующие действия:
- изменение TextBlock на TextBox и перемещение туда события (фокус довольно очевиден с TextBox)
- изменение приведения в событии к FrameworkElement (откуда берется свойство Name) вместо Grid
- изменение регистра на имя TextBox (вместо имени сетки)
- изменение события на PreviewKeyDown (чтобы получить регистрацию клавиш курсора)
Конечно, это только привело к срабатыванию и правильной регистрации события, значения, похоже, не отображаются (даже до того, как я изменил код), но он обрабатывает конкретную проблему, когда событие не запускается.
Официальный элемент управления Microsoft DateTimePicker включен в WPF Toolkit. Это будет частью платформы .NET 4.0.
В silverlight 4 есть DatePicker и TimePicker
Если вы хотите, вы можете создать свой собственный элемент управления с ними или просто использовать каждый отдельно.