Can';似乎没有让时间选择器工作(C#/WPF)

Can';似乎没有让时间选择器工作(C#/WPF),c#,wpf,timepicker,C#,Wpf,Timepicker,我肯定我错过了一些很容易的东西。几乎所有在互联网上搜索C#/WPF时间选择器的搜索都指向这个网页:因此我认为它可以正常工作。但是,当我将其复制/粘贴到用户控件中并运行它时,该控件将按其应有的方式显示,但当我单击数字并按向上或向下键时,什么也没有发生。即使在调试模式下,KeyDown事件的开关盒上有一个断点,也不会发生任何事情。它没有注册KeyDown事件。它应该集中在包含TextBlock的网格上,所以我尝试将KeyDown改为TextBlock,但没有效果。我好像没法让它工作(我正在使用Vis

我肯定我错过了一些很容易的东西。几乎所有在互联网上搜索C#/WPF时间选择器的搜索都指向这个网页:因此我认为它可以正常工作。但是,当我将其复制/粘贴到用户控件中并运行它时,该控件将按其应有的方式显示,但当我单击数字并按向上或向下键时,什么也没有发生。即使在调试模式下,KeyDown事件的开关盒上有一个断点,也不会发生任何事情。它没有注册KeyDown事件。它应该集中在包含TextBlock的网格上,所以我尝试将KeyDown改为TextBlock,但没有效果。我好像没法让它工作(我正在使用Visual Studio 2008。

我想您可能是因为某些原因,控件没有聚焦。我也尝试过,事件也不会触发。不过,在加载的事件中手动将焦点设置为用户控件对我无效

唯一对我有效的方法就是做以下所有事情:

  • 将TextBlock更改为TextBox并将事件移动到那里(TextBox的焦点非常明显)
  • 将事件中的强制转换更改为FrameworkElement(Name属性来自FrameworkElement),而不是Grid
  • 将大小写更改为文本框的名称(而不是网格的名称)
  • 将事件更改为PreviewKeyDown(以获取要注册的光标键)

当然,这只是让事件正确地触发和注册,值似乎没有显示(甚至在我更改代码之前),但它处理未触发事件的特定问题。

中包含一个官方的Microsoft DateTimePicker控件。这将是.NET 4.0中框架的一部分。

silverlight 4中有一个DatePicker和一个TimePicker


如果您愿意,您可以使用这些控件创建自己的控件,或者只需单独使用每个控件。

非常感谢您的帮助!我刚刚将TextBlock更改为TextBoxs,并将KeyDown更改为PreviewKeyDown,现在它可以工作了!但是DependencyProperties中存在无限递归错误。我相信DatePicker就是其中的一个,而且它是它不是日期时间采集器。你说得对!我知道它在那里,但从来没有真正使用过它,我很惊讶它只处理日期。我使用Actipro WPF Studio的DateTimeEditor,但这不是免费的。是的,这个博客说它应该非常简单,如果我理解包装器、依赖项和数据绑定,我肯定会很简单,但我很抱歉C#和WPF的新手。我在Stack Overflow和其他类似网站上看到过其他问题,如“我在哪里可以找到时间选择器”,大多数答案是“你可以轻松地滚动你自己的”并指向这个博客。但是这个博客的代码不起作用,如果你不理解这些概念,你就会陷入困境。哈哈