使用 Silverlight DatePicker时,它默认在天视图中打开。当用户必须选择他的生日时,如果他可以先选择年份并立即向下钻取而不先上树,那将非常用户友好。我可以猜测大约 70% 的用户甚至不知道如何使用日历标题来“向上”,所以如果我能避免这种情况,那就太好了。
有没有办法操纵日期选择器默认打开的级别?
Silverlight 中是否有更多用户友好的控件来选择生日?
使用 Silverlight DatePicker时,它默认在天视图中打开。当用户必须选择他的生日时,如果他可以先选择年份并立即向下钻取而不先上树,那将非常用户友好。我可以猜测大约 70% 的用户甚至不知道如何使用日历标题来“向上”,所以如果我能避免这种情况,那就太好了。
有没有办法操纵日期选择器默认打开的级别?
Silverlight 中是否有更多用户友好的控件来选择生日?
从表面上看,您应该能够执行以下操作:-
<sdk:DatePicker Name="datePicker1" >
<sdk:DatePicker.CalendarStyle>
<Style TargetType="sdk:Calendar">
<Setter Property="DisplayMode" Value="Decade" />
</Style>
</sdk:DatePicker.CalendarStyle>
</sdk:DatePicker>
对于下拉菜单中显示的日历的几乎所有其他功能,这将起作用。但是,DataPicker 内部的代码将在下拉菜单打开时设置DisplayMode
为。Month
所以我们需要求助于一个丑陋的黑客:-
private void datePicker1_CalendarOpened(object sender, RoutedEventArgs e)
{
DatePicker picker = (DatePicker)sender;
if (!picker.SelectedDate.HasValue)
{
var popup = picker.Descendents().OfType<Popup>().FirstOrDefault();
if (popup != null)
{
var item = popup.Child.Descendents().OfType<Calendar>().FirstOrDefault();
if (item != null)
item.DisplayMode = CalendarMode.Decade;
}
}
}
请参阅此答案以了解我的Descendents
扩展方法的实现。