Реагирование на изменения и распространение
При создании, удалении или обновлении элемента можно написать код, распространяющий изменения на другие части модели, или внешние ресурсы, такие как файлы, базы данных или другие компоненты.
Ссылка
В качестве руководства рассмотрим эти методы в следующем порядке:
Методика | Сценарии | Для получения дополнительных сведений |
---|---|---|
Определение свойства вычисляемого домена. | Свойство домена, значение которого вычисляется из других свойств в модели. Например, цена, которая является суммой цен связанных элементов. | Вычисляемые и пользовательские свойства хранилища |
Определите свойство пользовательского служба хранилища домена. | Свойство домена, хранящееся в других частях модели или во внешней среде. Например, можно проанализировать строку выражения в дерево в модели. | Вычисляемые и пользовательские свойства хранилища |
Переопределение обработчиков изменений, таких как OnValueChanging и On Delete | Сохраняйте синхронизацию различных элементов и сохраняйте внешние значения в синхронизации с моделью. Ограничивает значения определенными диапазонами. Вызывается непосредственно до и после значения свойства и других изменений. Изменение можно завершить, создав исключение. |
Обработчики изменений значений свойств доменов |
Правила | Вы можете определить правила, которые помещаются в очередь для выполнения непосредственно перед завершением транзакции, в которой произошло изменение. Они не выполняются при отмене или повторном выполнении. Используйте их, чтобы сохранить одну часть хранилища в синхронизации с другой. | Правила распространяют изменения в пределах модели |
Хранение событий | Хранилище моделирования предоставляет уведомления о событиях, таких как добавление или удаление элемента или ссылки, или изменение значения свойства. Событие также выполняется на отмене и повторном выполнении. Используйте события хранилища для обновления значений, которые не находятся в хранилище. | Обработчики событий распространяют изменения за пределы модели |
События .NET | Фигуры имеют обработчики событий, которые реагируют на щелчки мыши и другие жесты. Для каждого объекта необходимо зарегистрировать эти события. Регистрация обычно выполняется в переопределении InitializeInstanceResources и должна выполняться для каждого элемента. Обычно эти события происходят за пределами транзакции. |
Практическое руководство. Перехват щелчка фигуры или декоратора |
Правила ограничивающих границ | Правило границ используется специально для ограничения границ фигуры. | Класс BoundsRules ограничивает расположение и размеры фигур |
Правила выбора | Правила выбора специально ограничивают то, что пользователь может выбрать. | Практическое руководство. Предоставление и ограничение доступа к текущему выделению |
OnAssocatedPropertyChanged | Укажите состояния элементов модели с помощью функций фигур и соединителей, таких как тени, стрелки, цвета и ширины линий и стиля. | Обновление фигур и соединителей в соответствии с моделью |
Сравнение правил и событий хранения
Изменения опификаторов, правил и событий выполняются при изменении модели.
Правила обычно применяются в конечной транзакции, в которой произошло изменение, и события применяются после фиксации изменений в транзакции.
Используйте события хранилища для синхронизации модели с объектами за пределами Магазина и правил для поддержания согласованности в Магазине.
Создание настраиваемых правил вы создаете настраиваемое правило в качестве производного класса из абстрактного правила. Кроме того, необходимо уведомить платформу о пользовательском правиле. Дополнительные сведения см. в разделе "Правила распространения изменений в модели".
Подпишитесь на события перед подпиской на событие, создайте обработчик событий и делегат. Затем используйте EventManagerDirectoryсвойство для подписки на событие. Дополнительные сведения см. в разделе Обработчики событий, распространяющие изменения за пределами модели.
Отмена изменений при отмене транзакции вызывает события, но правила не применяются. Если правило изменяет значение и отменяете это изменение, значение сбрасывается в исходное значение во время действия отмены. При возникновении события необходимо вручную изменить значение обратно на исходное значение. Дополнительные сведения о транзакциях и отмене см. в статье "Практическое руководство. Использование транзакций для обновления модели".
Передача аргументов событий в правила и события как события , так и правила передаются
EventArgs
параметром, который содержит сведения о том, как модель изменилась.