是否可以阻止Silverlight DatePicker控件的日历关闭日期选择?

时间:2013-04-02 15:38:52

标签: c# silverlight datepicker

DatePicker MSDN

在日历中选择日期时(通过单击CalendarDayButton),日历弹出窗口会自动关闭。是否可以在不编辑控件本身源的情况下阻止此行为? (ControlTemplate没问题。)

我可以更改CalendarDayButton样式&控制模板,但我没有看到任何可以帮助我的东西。

1 个答案:

答案 0 :(得分:0)

我不相信你会改变这种行为。导致Datepicker关闭的代码似乎在这里(我查看了来自Silverlight Toolkit的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)。