Відповіді:
Властивості залежності - це властивості класів, що походять від DependencyObject, і вони особливі тим, що замість того, щоб просто використовувати резервне поле для збереження їх значення, вони використовують деякі допоміжні методи на DependencyObject.
Найприємніше в них те, що у них вбудована вся сантехніка для прив’язки даних. Якщо ви щось прив’яжете до них, вони повідомлять про це, коли вони зміняться.
Єдине пояснення, яке я вважав корисним та добре написаним, це таке: http://www.wpftutorial.net/dependencyproperties.html
В основному, DependencyProperties відрізняються від звичайних властивостей тим, що вони не просто сеттери / getters для полів у класі, але вони отримують свої фактичні значення динамічно під час виконання. TheSetValue()
Метод ДПС досить простий і встановлює локальне значення властивості на значення , яке ви дали його. Однак, коли ви спробуєте скористатись GetValue()
властивістю DependencyProperty, вона спочатку шукатиме локальне значення, якщо такого немає (що є життєздатним у DependencyProperties на відміну від звичайних властивостей), воно продовжить вгору до логічного дерева інтерфейсу, поки не знайде таке значення. Якщо рамка досягла вершини дерева, не знаходячи локальних значень, то вона буде використовувати заздалегідь задане значення за замовчуванням як значення властивості.
Цей метод дозволяє DependencyProperties споживати менше пам'яті, ніж звичайні властивості, оскільки локально зберігатимуться лише ті значення, які явно встановлені користувачем.
І, як було сказано вище, DependencyProperties також дозволяє нам прив’язати їх до коду XAML і встановити на них тригери, що в регулярних властивостях заборонено.
Я сподіваюся, що мені вдалося вияснити деякі розпливчастість :)
Grid.Row="1"
у Button
заповіті буде встановлено, що він знаходиться у рядку №2 на батьківському Grid
(через те, що рядки базуються на нулі), але Row
властивість DependencyProperty належить Grid
об'єкту.
DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
, чи мали на увазі і прив'язку в XAML, і встановлення тригерів, або просто встановлення тригерів, заборонено. Дякуємо за подальші дії та допомагаєте зробити речі зрозумілішими!
Value
властивість (не DP) зі значенням 0, і ви хочете, щоб ваш погляд щось робив при Value
зміні на 1. Ви зможете це зробити, використовуючи DataTrigger
та встановившиBinding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ дає чітке пояснення властивостей залежності як у контексті WF, так і WPF.
Уривок:
Ключовий момент - значення властивостей залежностей вирішено
Кінцевою метою властивості залежності, як і будь-якої властивості, є управління станом. Але на відміну від звичайних властивостей .Net, значення локальної властивості не зберігається в змінній примірника.
Натомість властивості залежності реєструються в рамках властивості залежності, і базове значення властивості вирішується, тобто значення визначається рамкою властивостей залежності залежно від правил, визначених реєстрацією властивості.