Почему переменные не разрешены для привязки
Я гуглил в этой точке, где почему локальные или глобальные переменные не разрешены как источники для привязки данных WPF; только свойство упаковки может быть связано с.
Таким образом, вопрос в том, где свойства являются оберткой над переменными, тогда почему эти свойства разрешены, а переменные недопустимы.
Мне нужно знать, под капотом системы.
2 ответа
Механизмы, используемые для привязки ( PropertyDescriptor, DependencyProperties и т. Д.), Используют только свойства, поэтому вы не можете связываться с полями. Свойства могут обеспечить проверку, уведомление об изменениях и многое другое, что является еще одной причиной, чтобы предпочесть свойства. Поля не предоставляют ничего из этого.
Кроме того, использование открытых полей, как правило, является плохой практикой, так почему они должны беспокоиться о реализации привязки к полям? Это только способствовало бы этим плохим практикам.
Ну, это не совсем так. Вы можете использовать поле для привязки, но сначала вы должны объявить его как ресурс, а после доступа к нему через ключ ресурса в объявлении привязки.
Когда вы собираетесь привязать к коду, привязка к свойству завершена, чтобы можно было также вводить OnPorpertyChanged
уведомление тоже.