Поделиться через


Реагирование на изменения и распространение

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

Ссылка

В качестве руководства рассмотрим эти методы в следующем порядке:

Методика Сценарии Для получения дополнительных сведений
Определение свойства вычисляемого домена. Свойство домена, значение которого вычисляется из других свойств в модели. Например, цена, которая является суммой цен связанных элементов. Вычисляемые и пользовательские свойства хранилища
Определите свойство пользовательского служба хранилища домена. Свойство домена, хранящееся в других частях модели или во внешней среде. Например, можно проанализировать строку выражения в дерево в модели. Вычисляемые и пользовательские свойства хранилища
Переопределение обработчиков изменений, таких как OnValueChanging и On Delete Сохраняйте синхронизацию различных элементов и сохраняйте внешние значения в синхронизации с моделью.

Ограничивает значения определенными диапазонами.

Вызывается непосредственно до и после значения свойства и других изменений. Изменение можно завершить, создав исключение.
Обработчики изменений значений свойств доменов
Правила Вы можете определить правила, которые помещаются в очередь для выполнения непосредственно перед завершением транзакции, в которой произошло изменение. Они не выполняются при отмене или повторном выполнении. Используйте их, чтобы сохранить одну часть хранилища в синхронизации с другой. Правила распространяют изменения в пределах модели
Хранение событий Хранилище моделирования предоставляет уведомления о событиях, таких как добавление или удаление элемента или ссылки, или изменение значения свойства. Событие также выполняется на отмене и повторном выполнении. Используйте события хранилища для обновления значений, которые не находятся в хранилище. Обработчики событий распространяют изменения за пределы модели
События .NET Фигуры имеют обработчики событий, которые реагируют на щелчки мыши и другие жесты. Для каждого объекта необходимо зарегистрировать эти события. Регистрация обычно выполняется в переопределении InitializeInstanceResources и должна выполняться для каждого элемента.

Обычно эти события происходят за пределами транзакции.
Практическое руководство. Перехват щелчка фигуры или декоратора
Правила ограничивающих границ Правило границ используется специально для ограничения границ фигуры. Класс BoundsRules ограничивает расположение и размеры фигур
Правила выбора Правила выбора специально ограничивают то, что пользователь может выбрать. Практическое руководство. Предоставление и ограничение доступа к текущему выделению
OnAssocatedPropertyChanged Укажите состояния элементов модели с помощью функций фигур и соединителей, таких как тени, стрелки, цвета и ширины линий и стиля. Обновление фигур и соединителей в соответствии с моделью

Сравнение правил и событий хранения

Изменения опификаторов, правил и событий выполняются при изменении модели.

Правила обычно применяются в конечной транзакции, в которой произошло изменение, и события применяются после фиксации изменений в транзакции.

Используйте события хранилища для синхронизации модели с объектами за пределами Магазина и правил для поддержания согласованности в Магазине.

  • Создание настраиваемых правил вы создаете настраиваемое правило в качестве производного класса из абстрактного правила. Кроме того, необходимо уведомить платформу о пользовательском правиле. Дополнительные сведения см. в разделе "Правила распространения изменений в модели".

  • Подпишитесь на события перед подпиской на событие, создайте обработчик событий и делегат. Затем используйте EventManagerDirectoryсвойство для подписки на событие. Дополнительные сведения см. в разделе Обработчики событий, распространяющие изменения за пределами модели.

  • Отмена изменений при отмене транзакции вызывает события, но правила не применяются. Если правило изменяет значение и отменяете это изменение, значение сбрасывается в исходное значение во время действия отмены. При возникновении события необходимо вручную изменить значение обратно на исходное значение. Дополнительные сведения о транзакциях и отмене см. в статье "Практическое руководство. Использование транзакций для обновления модели".

  • Передача аргументов событий в правила и события как события , так и правила передаются EventArgs параметром, который содержит сведения о том, как модель изменилась.