Фон заголовка календаря WPF - PullRequest
       10

Фон заголовка календаря WPF

0 голосов
/ 04 октября 2018

Я создал собственный стиль для Календаря, и, кажется, у меня есть все, кроме цвета заголовка (Фон), который я не могу найти, как изменить.Этот фон виден в представлении дня, месяца и года.

Calendar

До сих пор я извлек 4 шаблона (в Blend) и без вставки кодаиз всех них (это шаблон по умолчанию), я просто покажу, как я ссылаюсь на них в стиле календаря:

 <Style x:Key="CustomCalendarStyle" TargetType="{x:Type Calendar}">
   <Setter Property="CalendarButtonStyle"
           Value="{StaticResource CustomCalendarButtonStyle}" />
   <Setter Property="CalendarDayButtonStyle"
           Value="{StaticResource CustomCalendarDayButtonStyle}" />
   <Setter Property="Template">
     <Setter.Value>
       <ControlTemplate TargetType="{x:Type Calendar}">
         <Grid x:Name="PART_Root">
           <CalendarItem x:Name="PART_CalendarItem"
                         BorderBrush="{TemplateBinding BorderBrush}"
                         BorderThickness="{TemplateBinding BorderThickness}"
                         Background="{TemplateBinding Background}"
                         Style="{DynamicResource CustomCalendarItemStyle}" />
         </Grid>
       </ControlTemplate>
     </Setter.Value>
   </Setter>
 </Style>

Если мы предположим, что у всех четырех из них есть код xaml по умолчанию, кто-нибудь знает, гдеэтот фон установлен (тот, что позади ноября 2018 года)?Кажется, что он не установлен в этих 3 стилях (CalendarButtonStyle, CalendarDayButtonStyle, CalendarItemStyle ...).

Я нашел «грязный» способ добиться этого, установив внешнюю границу шаблона CalendarItemStyle 'Прозрачный (который в основном устанавливает весь фон календаря), а затем добавить одну границу перед добавлением PART_HeaderButton, PART_PreviousButton и PART_NextButton.

Мне очень интересно, где этот фон установлен в оригинальном стиле.Кто-нибудь играл в стиле календаря?

1 Ответ

0 голосов
/ 04 октября 2018

Это было установлено из свойства Background элемента управления Calendar.Если вы редактируете Template самого Control из Blend или Visual Studio ;вы получите,

<Style x:Key="CalendarStyle1" TargetType="{x:Type Calendar}">
    <Setter Property="Foreground" Value="#FF333333"/>
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFE4EAF0" Offset="0"/>
                <GradientStop Color="#FFECF0F4" Offset="0.16"/>
                <GradientStop Color="#FFFCFCFD" Offset="0.16"/>
                <GradientStop Color="#FFFFFFFF" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="BorderBrush">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFA3AEB9" Offset="0"/>
                <GradientStop Color="#FF8399A9" Offset="0.375"/>
                <GradientStop Color="#FF718597" Offset="0.375"/>
                <GradientStop Color="#FF617584" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Calendar}">
                <StackPanel x:Name="PART_Root" HorizontalAlignment="Center">
                    <CalendarItem x:Name="PART_CalendarItem" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Style="{TemplateBinding CalendarItemStyle}"/>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Набор LinearGradientBrush для Background определяет цвет фона заголовка.Не уверен, почему это было реализовано таким образом;Вот как это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...