我遇到了一个WPF Calendar控件的奇怪问题。我修改了控件模板以显示日期突出显示,基本上,它工作得很好。突出显示的日期在31个元素的字符串数组中指定。如果元素为null,则表示不突出显示与该元素对应的日期。如果string元素不为null,则突出显示日期,控件可以在工具提示中显示该字符串。我已发布控件on CodeProject.com。
这是我的问题:在用户点击其他月份之前,突出显示不会更新。例如,我在日志记录应用程序中使用修改后的日历。带有日志条目的日期会突出显示。用户选择日期并在文本框中创建日志条目。如果日期未突出显示,则应突出显示用户提交日志条目的时间。但就目前而言,突出显示只有在用户向前或向后点击一个月后才会显示,然后再点击回原来的月份。
强制更新的常用方法(InvalidateVisual(),InvalidateArrange(),UpdateLayout()等)无效。我可以通过在用户提交日志条目时将日历设置为代码中的其他月份来解决此问题,然后立即将其设置为原始月份。这与用户点击不同月份然后再返回相同的效果。
但这显然是一个相当丑陋的黑客攻击,我希望有人能够与WPF日历做过类似的事情,这可以说明我可以做些什么来让日历完全刷新自己。换句话说,为什么突出显示不会立即出现,我需要做些什么才能解决问题?谢谢你的帮助。
答案 0 :(得分:0)
我找到了答案。这个bug出现在我的代码中。我的控件使用值转换器作为突出显示代码的一部分,问题就在那里。我将在接下来的几天内对CodeProject.com上的文章发布更新。