在日历中选择日期(通过单击 CalendarDayButton)时,日历弹出窗口会自动关闭。是否可以在不编辑控件本身的源代码的情况下防止这种行为?(一个 ControlTemplate 就可以了)。
我可以更改 CalendarDayButton 样式和控制模板,但我看不到任何可以帮助我的东西。
在日历中选择日期(通过单击 CalendarDayButton)时,日历弹出窗口会自动关闭。是否可以在不编辑控件本身的源代码的情况下防止这种行为?(一个 ControlTemplate 就可以了)。
我可以更改 CalendarDayButton 样式和控制模板,但我看不到任何可以帮助我的东西。
我不相信你会有任何改变这种行为的运气。导致 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
)。