wpf - 按钮对 .Net 4 日历无响应(错误?)

标签 wpf wpf-controls

我正处于项目的后期阶段,我有一个带有(自定义 .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/

相关文章:

C# HttpClient - PostAsync 不返回(即使使用 ConfigureAwait)

wpf - 在Microsoft Surface平台上使用WPF扩展器控件

c# - Listpicker 错误 SelectedItem 必须始终设置为有效值

wpf - GalaSoft MvvmLight RelayCommand 在访问闭包时停止工作

wpf - 使用角色/权限来启用/禁用 View 中的内容

wpf - 首次使用 WPF 中的 WCF 非常慢

WPF 断边

c# - 单独的 UI 线程上的 WPF 控件?

c# - 更改事件之前的 wpf 依赖属性?

CommandManager 的 WPF 性能问题