Как изменить цвет синей рамки в элементе управления календаря MS Silverlight? - PullRequest
1 голос
/ 12 января 2011

В верхней части элемента управления MS Silverlight Calendar отображаются месяц / год и некоторые стрелки для их прокрутки.За этими предметами есть светло-голубой прямоугольник.Я хотел бы иметь возможность изменить цвет этого прямоугольника.Как мне это сделать?

Моей первой мыслью было открыть элемент управления календаря в Blend, выбрать редактирование шаблона / копии и просто перейти к правильному элементу управления, но этот путь не был столь очевидным инасколько возможно, как я надеялся.Открытие копии (шаблона) элемента управления оставило мне очень мало работы.На самом деле все, что он делает, это позволяет мне изменить фон (для всего элемента управления, а не только месяц / год) и границу.Хммм.

В пользовательском интерфейсе также есть опции для редактирования CalendarButtonStyle, CalendarDayButtonStyle и CalendarItemStyle.CalendarItemStyle, кажется, ближе всего к тому, что я хочу, но я буду проклят, если смогу выяснить, откуда этот синий прямоугольник / граница / панель / что бы ни происходило?

1 Ответ

1 голос
/ 12 января 2011

Фон по умолчанию для элемента управления календаря на самом деле представляет собой 4-ступенчатый линейный градиент сверху вниз, который обеспечивает цвета как для синего фона для заголовка, так и для белого фона для остальной части календаря.

На самом деле вам вообще не нужно шаблонировать элемент управления для настройки этого градиента фона.Вы можете просто установить фон календаря на LinearGradientBrush с остановками со смещением 0,16 (процент по умолчанию, когда он изменяется от заголовка к телу календаря).

Вот пример в XAMLизменение фона заголовка со значения по умолчанию # FFD3DEE8 на черный:

<controls:Calendar>
    <controls:Calendar.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="Black" Offset="0"/>
            <GradientStop Color="Black" Offset="0.16"/>
            <GradientStop Color="#FFFCFCFD" Offset="0.16"/>
            <GradientStop Color="White" Offset="1"/>
        </LinearGradientBrush>
    </controls:Calendar.Background>
</controls:Calendar>
...