可以阻止Silverlight DatePicker控件的日历在日期选择时关闭吗?

本文关键字:选择 日期 日历 Silverlight DatePicker 控件 | 更新日期: 2023-09-27 18:06:59

DatePicker MSDN

在日历中选择一个日期(通过点击CalendarDayButton),日历弹出会自动关闭。是否有可能在不编辑控件本身的源的情况下防止这种行为?(一个ControlTemplate就可以了)。

我可以改变CalendarDayButton的样式&控件模板,但是我没有看到任何可以帮助我的

可以阻止Silverlight DatePicker控件的日历在日期选择时关闭吗?

我不相信你会有任何运气改变这种行为。导致Datepicker关闭的代码似乎在这里(我从Silverlight工具包中查看了Datepicker的源代码,Release -> Silverlight 4 -> source -> Controls -> Datepicker)

private void Calendar_DayButtonMouseUp(object sender, MouseButtonEventArgs e)
        {
            this.Focus();
            this.IsDropDownOpen = false;
            _calendar.ReleaseMouseCapture();
        }

此处也关闭:

private void Calendar_KeyDown(object sender, KeyEventArgs e)
        {
            Calendar c = sender as Calendar;
            Debug.Assert(c != null, "The Calendar should not be null!");
            if (!e.Handled && (e.Key == Key.Enter || e.Key == Key.Space || e.Key == Key.Escape) && c.DisplayMode == CalendarMode.Month)
            {
                this.Focus();
                this.IsDropDownOpen = false;
                if (e.Key == Key.Escape)
                {
                    this.SelectedDate = this._onOpenSelectedDate;
                }
            }
        }

这两个处理程序都被添加到私有方法private void InitializeCalendar中,并且日历对象本身被声明为私有(private Calendar _calendar)。