Какая разница между (зависимым) свойством зависимостей и прикрепленным свойством в WPF? Какая польза для каждого? Как обычно отличаются реализации?
Какая разница между свойством зависимостей и прикрепленным свойством в WPF?
Ответ 1
Прикрепленные свойства являются свойством зависимости. Разница заключается в том, как они используются.
С прикрепленным свойством свойство определяется в классе, который не является тем же классом, для которого он используется. Обычно это используется для компоновки. Хорошими примерами являются Panel.ZIndex или Grid.Row - вы применяете это к элементу управления (то есть к кнопке), но это фактически определено в Panel или Grid. Свойство "прикреплено" к экземпляру кнопки.
Это позволяет контейнеру, например, создавать свойства, которые можно использовать на любом элементе UIelement.
Что касается различий в реализации - это в основном вопрос использования Register vs. RegisterAttached при определении свойства.
Ответ 2
Прикрепленные свойства в основном предназначены для элементов контейнера. Например, если у вас есть сетка, и у вас есть grid.row, теперь это считается прикрепленным свойством элемента сетки. Также вы можете использовать это свойство в texbox, кнопке и т.д. установить его место в сетке.
Свойство Dependency похоже на свойство в основном принадлежит к другому классу и используется в другом классе. например: например, у вас есть прямоугольник здесь высота и ширина являются регулярными свойствами прямоугольника, но left и top являются свойством зависимости, поскольку оно принадлежит классу Canvass.
Ответ 3
Я думаю, что вы можете определить прикрепленное свойство в самом классе или определить его в другом классе. Мы всегда могли использовать прикрепленное свойство для расширения стандартных элементов управления Microsoft. Но свойство зависимости вы определяете его в своем собственном элементе управления. например Вы можете наследовать свой контроль из стандартного элемента управления и определить свойство зависимостей в своем собственном контроле и использовать его. Это эквивалентно определению прикрепленного свойства и использует это прикрепленное свойство в стандартном элементе управления.
Ответ 4
Прикрепленные свойства - это особый вид DependencyProperties. Они позволяют привязывать значение к объекту, который ничего не знает об этом значении. Хорошим примером для этой концепции являются панели макетов. Каждая панель макета нуждается в разных данных для выравнивания своих дочерних элементов. Для Canvas нужны Top и Left, DockPanel нужен Dock и т.д. Поскольку вы можете написать свою собственную панель макета, список бесконечен. Таким образом, вы не можете иметь все эти свойства во всех элементах управления WPF. Решение - это прикрепленные свойства. Они определяются элементом управления, которому нужны данные из другого элемента управления в определенном контексте. Например, элемент, который выровнен по родительской панели макета.