Нужно короткое и четкое определение для “Свойств Зависимости”

Я пытаюсь выяснить, каковы точно Свойства Зависимости, но когда я где угодно ищу определение, я только нахожу, "как использовать", но не, "каково это". Предположите, что Вас спрашивают относительно собеседования - что такое свойство зависимости. Каков был бы Ваш ответ?

17
задан Robert Cartaino 24 March 2010 в 03:58
поделиться

5 ответов

DependencyProperty - это свойство, значение которого зависит (или может зависеть) от какого-либо другого источника (например, анимации, привязки данных, стилей или наследования визуального дерева) . Значение обычного свойства хранится в объекте, которому оно принадлежит, в то время как вы можете думать о свойстве зависимости как о хранящемся где-то в базе данных. Эта база данных по существу состоит из словаря, который отображает пары (объект, свойство) на их значения, а также отображает, какие свойства зависят от других свойств (например, когда вы изменяете DataContext в Panel, он может уведомить всех детей внутри панели).

Так почему они где-то хранят значения свойств в какой-то волшебной базе данных? На это есть несколько причин:

  • Это уменьшает пространство для хранения. Добавление свойства (даже если его значение равно нулю) в класс добавляет 4 байта (8 для 64-битного процесса) пространства для каждого экземпляра класса. DependencyProperty занимает место только тогда, когда у экземпляра есть значение. Например, FrameworkElement имеет множество свойств зависимостей, большинству из которых никогда не присваиваются значения. Если бы все эти свойства были сохранены в классе, каждый экземпляр занимал бы сотни байтов. Вместо этого каждый экземпляр занимает всего около 40 байт.

  • Включает присоединенные свойства. Такие свойства, как Canvas.Left и Grid.Row , должны храниться в объектах, которые никогда не слышали о Canvas или Grid , поэтому куда вы их положите? Вы помещаете их куда-нибудь в базу данных.

  • Позволяет автоматически изменять свойства.Представьте, как бы вы реализовали что-то вроде наследования стилей или свойств (возможность установить что-то вроде шрифта или контекста данных для родительского элемента и распространить его значение на все дочерние элементы).Хранение всего этого в базе данных позволяет хранить весь код в одном месте вместо того, чтобы реализовывать его отдельно для каждого объекта и свойства, которые в нем нуждаются.

17
ответ дан 30 November 2019 в 13:40
поделиться

Свойство зависимости - это свойство, которое поддерживается системой свойств WPF, а не полем в объявляющем классе.

Значение этого заключается в том, что, поскольку WPF владеет свойством, WPF может учитывать различные факторы при вычислении значения свойства, такие как анимация, стили и привязки данных. Другое следствие заключается в том, что, поскольку свойства управляются WPF, их не нужно объявлять в классах, которые концептуально имеют состояние: следовательно, присоединенные свойства, которые позволяют, например, Сетка, чтобы связать специфичное для грида состояние с объектами, не относящимися к сетке.

(Кстати, я упомянул WPF выше, потому что это основная структура, использующая DP, но Windows Workflow Foundation также имеет понятие свойств зависимостей. Итак, чтобы быть точным, DP - это свойство, поддерживаемое внешняя система свойств, в частности такая, которая позволяет использовать факторы, отличные от «последнего установленного значения», при получении значения свойства.)

1
ответ дан 30 November 2019 в 13:40
поделиться

MSDN предоставляет хорошее определение, описание и примеры

Для более глубокого понимания проверки DependencyProperty здесь

0
ответ дан 30 November 2019 в 13:40
поделиться

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

WPF Tutorial - Introduction to Dependency Properties

2
ответ дан 30 November 2019 в 13:40
поделиться

Зависимое свойство - это свойство, текущее значение которого зависит (отсюда и название) от других аспектов, таких как значения по умолчанию, валидация, принуждение, наследование значений или анимация.

Также зависимое свойство имеет встроенную поддержку уведомлений об изменениях, привязки данных и стилизации.

Что это такое?

Набор классов и определенных способов их использования, которые обеспечивают вышеупомянутую функциональность для использования в классах, наследующих от DependencyObject.

Они не являются особенностью языка. Они являются особенностью .NET Framework.

1
ответ дан 30 November 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: