A.Для объектов, не производных от DependencyObject
, у вас нет доступа к SetBinding()
или ClearBinding()
методам.Вместо этого вы можете вызывать статические методы BindingOperations.SetBinding()
и BindingOperations.ClearBinding()
.
. Это фактически связывает источник и цель, и это можно сделать из любого объекта, используя статические методы.
B.Теперь об источнике и цели, участвующих в привязке, есть ограничения, которые вы можете прочитать здесь и суммировать до:
" Целью привязки может быть любое доступное свойствоили элемент, производный от DependencyProperty - например, свойство Text элемента управления TextBox. Источником привязки может быть любое открытое свойство, включая свойства других элементов управления, объекты среды CLR, элементы XAML, ADO.NET DataSets,Фрагменты XML и т. Д. . "
В свою очередь DependencyProperty
может существовать (если я не ошибаюсь) только в DependencyObject
.Таким образом, цель должна находиться в DependencyObject
, но не в источнике, а не в объекте, из которого создается привязка.
И это не совсем верно, вы также можете использовать цель, которая не являетсяDO, посмотрите на код в этой странице .
- Также помните, что вы можете выполнить обратную привязку, используя тип привязки
OneWayToSource
.В этом случае цель не должна быть DependencyObject
.