№139 – Dependency Property Value Sources: №5 – триггеры стилей

Пятый источник в списке источников базового значения dependency property является триггер стиля. Свойство получает значение и стилевого триггера, когда стиль применяется к родительскому элементу и значение свойства меняется в результате срабатывания триггера.

В примере ниже, к кнопке применен стиль blueTextButton. Стиль устанавливает свойство Foreground синим цветом, когда курсор мыши находится над контролом. Источник свойства Foreground получает свое значение во время срабатывание триггера.

Читать полностью »

28.11.2010

№138 – Dependency Property Value Sources: №4 – неявный стиль

Четвертый источник в списке источников базового значения dependency property является неявный стиль. Это правило применяется только к dependency свойству Style.

Свойство Style пролучает значение неявно, когда стиль применяется ко всем элементам, чей тип совпадает с указанным целевым типом (TargetType) стиля.

Так как явный стиль рассматривается как локальное значение, то получается следующий список приоритетов для свойства Style от высшего к низшему:

Читать полностью »

27.11.2010

№137 – Значение свойства Style получается из одного из трех мест

Свойство Style одно из dependency property, которое не следует полному списку правил приоритетов значения свойств. Его значение может быть получено из одного из трех источников приведенных ниже.

  1. Explicit style - Стиль явно указан в XAML, как ресурс или указан в коде. Работает как локальное значение
  2. Implicit style - Стиль применяется ко всем элементам, чьи типы совпадают с целевым типом стиля
  3. Default - Нет указанного стиля, используется стиль по умолчанию

Вот пример explicit style.

Читать полностью »

26.11.2010

№136 – Dependency Property Value Sources: №3 – родительский шаблон

Третий источник в списке источников базового значения dependency property является родительский шаблон. Свойство получает свое значение из родительского шаблона, если элемент для которого устанавливается свойство создан как часть шаблона и не получил свое значение из триггера.

В примере ниже, шаблон excitedLabel имеет два контрола потомка Label. Один из них имеет свойство Background установленное из шаблона, таким образом источником является родительский шаблон.

Читать полностью »

25.11.2010

№135 – Dependency Property Value Sources: №2 – триггер в родительском шаблоне

Второй источник в списке источников базового значения dependency property это триггер в родительском шаблоне. Свойство получает значение из триггера родительского шаблона, если элемент часть шаблона и его значение устанавливается триггером, определенным в шаблоне.

В примере ниже, шаблон excitedLabel имеет два контрола потомка Label, чье свойство Background изменяется, когда вы проводите мышкой над родительским контролом. Когда это случается, то источник их свойства Background устанавливается триггером родительского шаблона.

Читать полностью »

24.11.2010

№134 – Dependency Property Value Sources: №1 – локальное значение

Наивысший приоритет источника для базового значения dependency property является локальное значение, установленное в XAML для элемента владельца свойства, или установленное из кода. Если локальное значение установлено, то оно заменит все остальные возможные источники базового значения для свойства.

В следующем примере, 2-й контрол Label предоставляет локальное значение для свойства FontStyle, перекрывая унаследованное значение.

Читать полностью »

23.11.2010

№133 – Где Dependency Property берет свое значение

Так как значение dependency property могут быть получено из различных источников, WPF использует заданный приоритет для каждого возможного источника значения свойства в целях определения окончательного значения.

WPF определяет конечное значение для dependency property следующим образом:

  • Определение базового значения, используя правила приоритета, перечисленных ниже
  • Вычисление выражения
  • Применение анимаций
  • Coerce значенеи (реализация класса может принудительно изменить валидное значение)
  • Валидация (реализация класса может выбросить исключение, если значение не валидное)

Читать полностью »

22.11.2010

№131 – Dependency Properties наследуют значения от вышестоящих в логическом дереве

Значение dependency property может быть получено из различных источников, но зачастую свойство наследуется от элемента расположенного выше в логическом дереве.

Имеется ввиду, что когда вы устанавливаете значение свойства в XAML или коде, то значенеи зачастую "стекает" по дереву элементов и применяется к другим элементам, которые имеют свойство с темже именем.

Вот пример. Значение FontStyle для нескольких контролов наследуется от вышестоящего элемента Window.

Читать полностью »

20.11.2010

№126 – Реагирование на изменение Dependency Property используя биндинг

Один из вариантов отреагировать на изменение значения в dependency property это привязка свойства одного контрола к свойству другого.

Идея связи в том, что исходный объект и свойство, откуда получаются данные и объект назначения со свойством куда данные привязываются друг к другу.

Это пример, в котором мы привязываем контент контрола Label к значению Slider.

Читать полностью »

15.11.2010

Полезные снипеты для WiX

Недавно на проекте WPF, я потратил немного времени на настройку нашего инсталлятора, используя WiX. Здесь представлен полезный набор параметров конфигурации WIX.

Читать полностью »

13.11.2010