На первый взгляд, вы должны сделать что-то вроде этого: -
<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
.