Изменение внешнего вида примечаний WPF

Автор: Topol Воскресенье, Май 6th, 2012 Нет комментариев

Рубрика: Операционные системы

Вы, вероятно, думаете : «Примечания являются потрясающим и удобным инструментом, но зеленая тема StickyNote, вообще говоря, не подходит для моего приложения». Мы, может быть, так не думаем, но я все же покажу, как использовать форматирование (Styling), чтобы изменить внешний вид StickyNotes в вашем приложении. Сначала Я приведу несколько простых примеров того, как вы можете настроить стиль отображения, а затем вкратце расскажу как полностью его изменить.

Если вы не любите читать (или просто хотите получить исходный код), вы можете загрузить рассматриваемое приложение в конце статьи.

Основы: Модифицируем стиль StickyNote
Присмотритесь к доступным свойствам класса StickyNoteControl. Используя эти свойства, Вы можете управлять различными аспектами внешнего вида и режима работы Note при помощи операторов Setter и Trigger.

Изменение цвета
Если вы хотите изменить цвет области с каким-либо содержимом (нарпимер, RichTextBox или InkCanvas), присвойте необходимое значение свойству Background:

Код:
<Style x:Key=»OverrideBackground» TargetType=»{x:Type StickyNoteControl}»>
<Setter Property=»Background» Value=»Yellow»/>
</Style>

ПРИМЕЧАНИЕ: это действие не изменит заголовок или размер компонента. Для изменения внешнего вида TitleBar и других частей, содержащих градиент необходимо полностью заменить стиль (см. ниже).

Изменение режима работы StickyNote
Используя открытые свойства класса StickyNoteControl и оператора Trigger, Вы можете управлять поведением (режимом работы) StickyNote. Ниже представлен пример такого использования, в котором размер заметки уменьшается вдвое, и принимающей полный размер после фокусировки мыши на ней.

Код:
<Style
x:Key=»OverrideSimpleBehavior»
TargetType=»{x:Type StickyNoteControl}»>
<!—Установка размера заметки по умолчанию. —>
<Setter Property=»RenderTransform»>
<Setter.Value>
<ScaleTransform ScaleX=».5″ ScaleY=».5″/>
</Setter.Value>
</Setter>
<!—Добавление триггера, изменяющего размер после клика мыши.—>
<Style.Triggers>
<Trigger Property=»StickyNoteControl.IsActive» Value=»True»>
<Setter Property=»RenderTransform»>
<Setter.Value>
<ScaleTransform ScaleX=»1″ ScaleY=»1″/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>

Более сложный уровень: Замена стиля StickyNote
Если изменение режима работы Note достигается простым добавлением нескольких сеттеров и триггеров, то для значительных изменения внешнего вида Вам надо заменить полностью весь стиль оформления.

Основы создания стиля
При замене стиля существует несколько ограничений. Во-первых, необходимо наличие компонента RichTextBox и в Ink note. Во-вторых, RichTextBox и InkCanvas должны быть объявлены как PART_ContentControl. Следующий пример показывает тот минимум, который необходим для создания стиля для класса StickyNoteControl, который поддерживает режимы Ink и Text:

Код:
<Style x:Key=»MinimumStyle» TargetType=»{x:Type StickyNoteControl}»>
<!— Override default style completely —>
<Setter Property=»OverridesDefaultStyle» Value=»true» />
<Setter Property=»Width» Value=»100″ />
<Setter Property=»Height» Value =»100″ />
<Style.Triggers>
<Trigger
Property=»StickyNoteControl.StickyNoteType»
Value=»{x:Static StickyNoteType.Ink}»>
<!— Custom template that only contains required controls —>
<Setter Property=»Template»>
<Setter.Value>
<ControlTemplate>
<InkCanvas
Name=»PART_ContentControl»
Background=»LightYellow» />
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
<Trigger
Property=»StickyNoteControl.StickyNoteType»
Value=»{x:Static StickyNoteType.Text}»>
<Setter Property=»Template»>
<Setter.Value>
<ControlTemplate>
<RichTextBox
Name=»PART_ContentControl»
Background=»LightYellow»/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>

Небо – это предел (почти)
В исходниках вы можете просмотреть полный проект создания стиля StickyNote. Аналогично ему Вы можете создать тот стиль, который Вам нужен. Ну а теперь перечислим ограничения:

- Нет возможности изменить стиль привязки StickyNote.
- Невозможно изменить программное поведение заметки – это не поддерживается методом обработки сообщений элемента StickyNote, то есть Вы не можете добавлять код или изменять обработчик режима работы.
- Невозможно изменить основное объявление StickyNote – изменение только касается внешнего вида и поведения элемента управления, но, возможно, в будущем можно будет управлять стилем ввода Text или Ink.

Надеюсь, эта информация помогла Вам понять основы изменения внешнего вида элемента StickyNote в ваших приложениях. Я буду с интересом читать о Ваших опытах в данном направлении и смотреть на Ваши творения.

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты