Могу ли я заставить changeWatcher срабатывать при добавлении XML? - PullRequest
0 голосов
/ 25 февраля 2010

Итак, у меня было требование добавить функцию отмены в мое приложение, и я обнаружил этот классный класс ChangeWatcher, но он не выполняет то, что я хочу, и я надеюсь, что кто-то знает, как.

ChangeWatcher, кажется, отслеживает назначения для ссылки на переменную. Поэтому, когда я говорю:

myXML = <xml/>

он срабатывает, он функционирует просто отлично, но когда я говорю:

myXML.appendChild(thisOtherXMLVar)

Я ничего не получаю, хотя переменная не меняет ссылку, поэтому ChangeWatcher не запускает функцию.

Так кто-нибудь знает, как заставить ChangeWatcher регистрировать все изменения в переменной?

1 Ответ

1 голос
/ 25 февраля 2010

ChangeWatcher - действительно классный класс. Но это не сработает, если свойство, за которым вы пытаетесь наблюдать изменение, не является [Bindable].

Если переменная myXML имеет значение Bindable, то при установке ее в значение XML она отправит событие (по умолчанию propertyChange). ChangeWatcher добавляет прослушиватель событий к объекту для любых объявленных событий [Bindable]. Это достигается путем получения метаданных Bindable для этой переменной.

Но сам класс XML не имеет ничего связываемого, поэтому вызов appendChild не отправит никаких событий, и ChangeWatcher не будет работать.

Обновляя на основе вашего комментария, вы можете просто внести все свои изменения в XML и затем сбросить переменную. Это приведет к тому, что ChangeWatcher зарегистрирует обновление.

Надеюсь, это поможет, Lance

...