Кажется, не удается заставить Timepicker работать (C # / WPF)

Я уверен, что мне здесь не хватает чего-то очень простого. Практически любой поиск в Интернете Timepicker для C # / WPF указывает на эту веб-страницу: http://jobijoy.blogspot.com/2007/10/time-picker-user-control.html, и поэтому я решил, что он будет работать правильно. Однако, когда я копирую / вставляю это в пользовательский элемент управления и запускаю его, элемент управления отображается должным образом, но когда я нажимаю на цифры и нажимаю «Вверх» или «Вниз», ничего не происходит. Даже в режиме отладки с точкой останова на корпусе переключателя для события KeyDown ничего не происходит. Это не регистрирует событие KeyDown. Предполагается, что он сосредоточен на сетке, содержащей TextBlock, поэтому я попытался изменить KeyDown на TextBlock, но безрезультатно. Кажется, я не могу заставить это работать! :( Я использую Visual Studio 2008.


person Brandon    schedule 28.01.2010    source источник


Ответы (3)


Я думаю, ты по какой-то причине не сосредотачиваешься на контроле. Я тоже пробовал, и ивент у меня тоже не сработал. Этот пост может дать некоторое представление . Однако установка фокуса на пользовательский элемент управления вручную в событии Loaded у меня не сработала.

Единственное, что у меня сработало, - это следующие действия:

  • изменение TextBlock на TextBox и перемещение туда события (фокус довольно очевиден с TextBox)
  • изменение приведения в событии к FrameworkElement (откуда берется свойство Name) вместо Grid
  • изменение регистра на имя TextBox (вместо имени сетки)
  • изменение события на PreviewKeyDown (чтобы получить регистрацию клавиш курсора)

Конечно, это только привело к срабатыванию и правильной регистрации события, значения, похоже, не отображаются (даже до того, как я изменил код), но он обрабатывает конкретную проблему, когда событие не запускается.

person Mike Pateras    schedule 28.01.2010
comment
Большое спасибо за эту помощь! Я просто изменил TextBlocks на TextBoxs и KeyDown на PreviewKeyDown, и теперь он работает! Однако существует ошибка бесконечной рекурсии с DependencyProperties. - person Brandon; 29.01.2010

Официальный элемент управления Microsoft DateTimePicker включен в WPF Toolkit. Это будет частью платформы .NET 4.0.

person Phil Devaney    schedule 29.01.2010
comment
Я считаю, что DatePicker - это то, что включено, а не DateTimePicker. - person Brandon; 29.01.2010
comment
Ты прав! Я знал, что он там есть, но никогда не использовал его, я очень удивлен, что он только датирует. Я использую DateTimeEditor из Actipro WPF Studio, но это не бесплатно. - person Phil Devaney; 29.01.2010
comment
Да, в этом блоге говорится, что это должно быть очень просто, и я уверен, что так оно и было бы, если бы я понял оболочки, зависимости и привязку данных, но я новичок в C # и WPF. Я видел и другие вопросы, например, где найти TimePicker на Stack Overflow и других подобных веб-сайтах, и на большинство ответов вы можете легко свернуть свой собственный и указать на этот блог. Но код этого блога не работает, и если вы не понимаете концепций, вы попадаете в затруднительное положение. ржу не могу - person Brandon; 29.01.2010

В silverlight 4 есть DatePicker и TimePicker

Если вы хотите, вы можете создать свой собственный элемент управления с ними или просто использовать каждый отдельно.

person Daniel Gomez Rico    schedule 23.02.2011