Что такое свойство зависимости в .Net (особенно в контексте WPF). В чем отличие от обычной недвижимости?
136
Что такое свойство зависимости в .Net (особенно в контексте WPF). В чем отличие от обычной недвижимости?
Свойства зависимости - это свойства классов, которые являются производными от DependencyObject, и они отличаются тем, что вместо того, чтобы просто использовать вспомогательное поле для хранения своего значения, они используют некоторые вспомогательные методы в DependencyObject.
Самое приятное в них - это то, что у них есть все встроенные средства для привязки данных. Если вы связываете что-то с ними, они уведомят об этом, когда изменятся.
Единственное объяснение, которое я нашел полезным и хорошо написанным, это: http://www.wpftutorial.net/dependencyproperties.html
По сути, свойства DependencyProperties отличаются от обычных свойств тем, что они не просто устанавливают / получают для полей в классе, но динамически извлекают их действительные значения во время выполнения.
SetValue()
Метод дпс довольно прост и устанавливает локальное значение свойства на значение , которое вы дали его. Однако, когда вы пытаетесь получить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.
Выдержка:
источник