#155 – Реализация Attached Dependency Property

Когда вы реализуете dependency property, которое будет использовано как присоединяемое свойство XAML, вы используете метод DependencyProperty.RegisterAttached, а не метод DependencyProperty.Register. Описание определения метода RegisterAttached аналогично Register, включая все параметры.

В примере ниже, когда мы регистрируем Person.AgeProperty, которое мы хотим использовать как присоединяемое свойство XAML.

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

14.12.2010

#154 – Переиспользование существующего Dependency Property в вашем классе

Как мы рассмотрели ранее как зарегистрировать новое dependency property в своем классе используя метод DependencyProperty.Register. Вы также можете переиспользовать существующее dependency property, используя метод DependencyProperty.AddOwner.

Когда вы переиспользуете существующее dependency property, вы можете опционально указать новые метаданные, которые будут применены для использования к dependency property в вашем новом типе. Вы также должны определить свойства CLR для нового типа, которые будут оборачивать вызовы GetValue/SetValue для чтения/записи значений dependency property.

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

13.12.2010

№146 – Использование метода GetValueSource для поиска источника значения Dependency Property

Зачастую полезно определить источник текущего значения dependency property. Вы можете использовать метод DependencyPropertyHelper.GetValueSource для этого.

В следующем примере получение значение источника свойства Foreground возможно из стиля или триггера определенного стилем определенного на основе значения свойства IsEnabled.

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

05.12.2010

№145 – Dependency Property Value Sources: №11 – значение по умолчанию

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

Например, обратите внимание, что значение свойства Opacity для большинства контролов унаследованных от UIElement (например, Button или Label) имеет значение 1.0, если вы не измените его на что-нибудь еще. Это значение по умолчанию для свойства UIElement.Opacity, указанное в его метаданных.

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

04.12.2010

№144 – Dependency Property Value Sources: №10 – наследование

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

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

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

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

02.12.2010

№143 – Dependency Property Value Sources: №9 – стиль темы

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

Если мы взглянем на стиль по умолчанию для контрола, мы увидим что стиль по умолчанию устанавливает свойство Background для ComboBox:

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

02.12.2010

№142 – Dependency Property Value Sources: №8 – триггер стиля темы

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

В примере обратите внимание, что когда вы устанавливаете свойство IsEditable для ComboBox в true, то внешний вид меняется.

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

01.12.2010

№141 – Dependency Property Value Sources: №7 – сеттеры стилей

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

В примере ниже, кнопка имеет стиль redBlueTextButton. Стиль устанавливает свойство Foreground в красный цвет, используя Setter. Так же устанавливается синий цвет, когда вы проводите мышкой над контролом. Источником свойства Foreground является стиль (style setter) после применения и при срабатывании триггера стиля, когда мышка над контролом.

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

30.11.2010

№140 – Dependency Property Value Sources: №6 – триггеры шаблона

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

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

Оригинальная кнопка замещается контролами из шаблона, но свойство Foreground сохранено используя расширение разметки TemplateBinding.

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

29.11.2010