我正处于项目的后期阶段,我有一个带有(自定义 .net4)日历和(再次自定义)按钮的屏幕。
每当选择日期时,该按钮就会变为休眠状态,它不会切换到悬停视觉状态,也不会记录其第一次单击。然而,一旦单击它,它就会恢复为普通按钮,触发命令,切换视觉状态等,至少直到您再次改变对日期的想法为止。
我最初的想法是围绕焦点,假设日历和按钮之间有一个焦点范围或类似的东西,诚然我对 WPF 焦点不太热衷,但还没有找到任何对该理论的支持。
我已经成功地用这个重复了它(在kaxaml中测试):
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Calendar />
<Button>Hello, world!</Button>
</StackPanel>
与 WPF 工具包(2010 年 2 月)日历相同..
编辑:我忘了提及,虽然我正在使用按钮进行测试,但我还没有找到不适用的 UI 元素,选择 calendarDayButton 甚至会使 Kaxamls UI 休眠.
最佳答案
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
关于wpf - 按钮对 .Net 4 日历无响应(错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8504243/