按钮没有响应.Net 4日历(错误?)

时间:2011-12-14 12:12:01

标签: wpf wpf-controls

我正处于项目的后期阶段,我的屏幕上有一个(自定义的.net4)日历和一个(再次自定义)按钮。

每当选择日期时,按钮变为休眠状态,它不会切换到悬停视觉状态,也不会注册它的第一次点击。然而,一旦它被点击,它将返回到正常按钮,触发命令,切换视觉状态等,至少直到你再次改变对日期的想法为止..

我最初的想法围绕焦点,假设日历和按钮之间存在焦点或类似的东西,不可否认,我对WPF焦点并不太热,但还没有找到任何对该理论的支持。

我已经设法用这个重复了它(在kaxaml中测试):

  <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
    <Calendar />
    <Button>Hello, world!</Button>
  </StackPanel>

与WPF工具包(2010年2月)日历相同。

编辑:我忘了提及,虽然我正在使用按钮进行测试,但我没有找到一个无法使用的UI元素,选择calendarDayButton甚至会使Kaxamls UI进入休眠状态

1 个答案:

答案 0 :(得分:4)

Calendar控件似乎在单击时捕获鼠标。您可以通过在GotMouseCapture事件中释放鼠标捕获来消除此行为。

不知道这样做的副作用是什么,但发布捕获的代码如下所示:

private void Calendar_GotMouseCapture(object sender, MouseEventArgs e)
{
    if (e.OriginalSource is CalendarItem)
        Mouse.Capture(null);
}

修改

测试为什么释放鼠标会导致导航停止工作,并且经过一些测试发现点击日历上的某些项目会捕获焦点,而其他项目则没有。窃取鼠标的项目总是e.OriginalSource System.Windows.Controls.Primitives.CalendarItem,因此如果e.OriginalSource类型为CalendarItem

,则添加一项检查以仅发布鼠标捕获