標準の System.Windows.Controls.Calendar コントロールを継承するカスタム コントロールを構築しています。Code Project に関するこの記事をフォローしています。また、MSDN のこの記事のように、CalendarItem サブオブジェクトのサイズを変更できるようにしたいと考えています。
Calendar、CalendarDayButton、および CalendarItem のスタイルを、Calendar コントロールのソース コードから Generic.xaml にあるカスタム コントロール ResourceDictionary にコピーしました。CalendarItem スタイルは、次のように 3 つのボタン テンプレート (前月、翌月、およびヘッダー ボタン) を参照します。
<!-- Start: Previous button content -->
<Button x:Name="PART_PreviousButton"
Grid.Row="0" Grid.Column="0"
Template="{StaticResource PreviousButtonTemplate}"
Height="20" Width="28"
HorizontalAlignment="Left"
Focusable="False"
/>
<!-- End: Previous button content -->
<!-- Start: Header button content -->
<Button x:Name="PART_HeaderButton"
Grid.Row="0" Grid.Column="1"
Template="{StaticResource HeaderButtonTemplate}"
HorizontalAlignment="Center" VerticalAlignment="Center"
FontWeight="Bold" FontSize="10.5"
Focusable="False"
/>
<!-- End: Header button content -->
<!-- Start: Next button content -->
<Button x:Name="PART_NextButton"
Grid.Row="0" Grid.Column="2"
Height="20" Width="28"
HorizontalAlignment="Right"
Template="{StaticResource NextButtonTemplate}"
Focusable="False"
/>
<!-- End: Next button content -->
このバインディングは StaticResource を使用するため、3 つのボタンのスタイルを ResourceDictionary にコピーする必要があります。これらのボタンを変更する予定はないので、ResourceDictionary にスタイルを設定することは避けたいと思っています。