Это одно из многих мест, где цвет и стиль элементов жестко закодированы в их шаблоны по умолчанию. Следовательно, чтобы изменить внешний вид этих «неактивных» кнопок календаря, вам нужно определить новый шаблон.
Сначала вам нужно создать копию стиля controlsPrivitives:CalendarButton
, вы можете получить копию стиля из Стили и шаблоны календаря . Поместите это в Resources
для вашего пользовательского контроля или даже в вашем App.Xaml. Вам нужно будет скопировать псевдонимы пространства имен, также перечисленные в этом разделе MSDN.
Теперь у вас есть собственный неявный стиль для кнопки календаря, который вы можете изменить. Вы заметите, что шаблон в xaml имеет эту визуальную группу состояний: -
<vsm:VisualStateGroup x:Name="ActiveStates">
<vsm:VisualStateGroup.Transitions>
<vsm:VisualTransition GeneratedDuration="0" />
</vsm:VisualStateGroup.Transitions>
<vsm:VisualState x:Name="Active" />
<vsm:VisualState x:Name="Inactive">
<Storyboard>
<ColorAnimation Storyboard.TargetName="Content" Storyboard.TargetProperty="(ContentControl.Foreground).(SolidColorBrush.Color)" To="#FF777777" Duration="0" />
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
Те годы, которые находятся за пределами диапазона, установлены в неактивное состояние и, следовательно, имеют жестко закодированный серый цвет, который вы видите в неактивном состоянии выше. Так что настройте этот xaml по своему вкусу.
Если вы хотите использовать одинаковые кнопки дня, обратите внимание, что они имеют другой элемент управления CalendarDayButton
, поэтому вам нужно будет выполнить то же упражнение для стиля по умолчанию.