我正处于项目的后期阶段,我的屏幕上有一个(自定义的.net4)日历和一个(再次自定义)按钮。
每当选择日期时,按钮变为休眠状态,它不会切换到悬停视觉状态,也不会注册它的第一次点击。然而,一旦它被点击,它将返回到正常按钮,触发命令,切换视觉状态等,至少直到你再次改变对日期的想法为止..
我最初的想法围绕焦点,假设日历和按钮之间存在焦点或类似的东西,不可否认,我对WPF焦点并不太热,但还没有找到任何对该理论的支持。
我已经设法用这个重复了它(在kaxaml中测试):
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Calendar />
<Button>Hello, world!</Button>
</StackPanel>
与WPF工具包(2010年2月)日历相同。
编辑:我忘了提及,虽然我正在使用按钮进行测试,但我没有找到一个无法使用的UI元素,选择calendarDayButton甚至会使Kaxamls UI进入休眠状态
答案 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