Можно ли использовать привязки только для события SourceChanged? - PullRequest
0 голосов
/ 12 марта 2010

В основном я хочу использовать инфраструктуру привязки WPF, чтобы «наблюдать» свойство в контексте данных и когда это значение изменяется, вызывая обработчик событий. На самом деле я не хочу связывать это с какой-либо целью.

Звучит просто, но из того, что я вижу, Binding слишком связан (с визуальным деревом и различными другими битами), чтобы использовать его гибко.

Есть мысли?

1 Ответ

1 голос
/ 12 марта 2010

Вы правы, что привязки связаны с визуальным деревом: они связаны с подключением элементов пользовательского интерфейса к элементам данных. Поэтому, если вы хотите использовать привязку для этого, вам действительно придется установить ее на элемент фиктивного фреймворка.

Однако, если WPF может наблюдать за свойством, то вы тоже можете. WPF просто использует интерфейс INotifyPropertyChanged объекта контекста данных. Поэтому вместо того, чтобы устанавливать привязку, вы можете просто привести объект, который вы хотите наблюдать, к INotifyPropertyChanged и подписаться на его событие PropertyChanged. Внутренне это все, что WPF делает в любом случае.

(Если вы обеспокоены проблемами жизненного цикла, WPF предоставляет PropertyChangedEventManager, который использует слабые ссылки. Вызовите PropertyChangedEventManager(dataObject, listenerObject, "WhateverPropertyYouWant"), где listenerObject - это объект, для которого вы хотите получать уведомления об изменениях.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...