それに直面して、あなたはこのようなことをすることができるはずです:-
<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