代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

如何使WPFToolkit DatePicker仅突出显示选定的日期?

  •  0
  • Edward Tanguay  · 技术社区  · 15 年前

    WPFToolkit 现在的 日期和日期 最后/第一天 月份的日期也会突出显示,这会混淆实际选择的日期。

    如何使日历中除选定日期外没有突出显示任何内容?

    alt text http://www.deviantsart.com/upload/fhsmni.png

    1 回复  |  直到 15 年前
        1
  •  2
  •   serge_gubenko    15 年前

    如果我正确理解了您的问题,您希望执行以下操作: 2.当日历控件弹出时,将焦点矩形设置为所选日期(或者我想去掉它)

    N1是容易的;您应该将DatePicker的IsTodayHighlighted属性设置为false,它将消失

    calendar.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
    

    这使得焦点矩形显示在每月的第一天;您可以通过强制日历将焦点移动到所选日期来修复它;下面是DatePicker控件(在我的例子中是datePicker1)的CalendarOpen事件处理程序。我使用反射来访问datapicker控件的私有字段\u日历,并执行其私有方法FocusDate

    private void datePicker1_CalendarOpened(object sender, RoutedEventArgs e)
    {
        FieldInfo fieldInfo0 = datePicker1.GetType().GetField(
            "_calendar", BindingFlags.Instance | BindingFlags.NonPublic);            
        Microsoft.Windows.Controls.Calendar calendar = 
            (Microsoft.Windows.Controls.Calendar)fieldInfo0.GetValue(datePicker1);
        if (calendar != null)
        {
            MethodInfo focusDateInfo = calendar.GetType().GetMethod("FocusDate", BindingFlags.Instance | BindingFlags.NonPublic);
            focusDateInfo.Invoke(calendar, new object[] { datePicker1.SelectedDate });
        }
    }
    

    希望这有帮助, 当做

    推荐文章