Я ищу диаграмму, которая будет служить ссылкой для отображения порядка событий и переопределений, которые вызывают для пользовательских элементов управления WPF, которые происходят из общих классов, таких как FrameworkElement, UIElement, Control, ContentControl, Decorator и т.д.
Меня особенно интересуют события и переопределения, связанные с тем, что процесс управления становится видимым и готовым к взаимодействию. Другими словами, меня не интересует эта диаграмма, показывающая события, которые могут иметь дело с пользователем, взаимодействующим с элементом управления, после того, как он готов к взаимодействию, например, такие как MouseLeftButtonDown.
Я ищу что-то вроде этой диаграммы (диаграммы, подобные этим, объясняют lifecyle окна или приложения WPF), но для пользовательские элементы управления.
Я также видел эту страницу, что, на мой взгляд, кажется слишком упрощенным. Эта страница, по-видимому, в основном говорит о том, что в основном есть события Initialized
, Loaded
и Unloaded
. Чтобы проиллюстрировать, некоторые из общих событий/переопределений, которые я должен использовать в пользовательских элементах управления, включают:
- Конструктор
-
Loaded
-
Unloaded
-
IsVisibleChanged
-
OnApplyTemplate
Наряду со слегка более специализированными переопределениями, такими как Popup OnOpened
и Expander OnExpanded
и т.д.
Проблема, с которой я сталкиваюсь, заключается в том, что я забываю, когда могу делать что-то вроде VisualStateManager.GoToState(...)
(OnApplyTemplate
- это первый реальный шанс, который я считаю). И я также продолжаю открывать события, которые мне нужно использовать, например, IsVisibleChanged (это событие оказалось необходимым, когда мне понадобился элемент управления для изменения состояния "перезагрузить/обновить", когда пользователь вернется на вкладку, содержащую мой элемент управления), Поэтому я продолжаю задаваться вопросом, есть ли еще такие события/переопределения, на которые я действительно должен обратить внимание на пользовательский контроль? Здесь поможет диаграмма, которая показывает эти вещи по отношению друг к другу.
Учитывая эти типы событий/переопределений, этот график Silverlight довольно близок к тому, что я ищу, , но для WPF. Некоторые из комментаторов этого сообщения говорят, что события/переопределения WPF отличаются от событий Silverlight. Если да, можете ли вы указать мне на аналогичную диаграмму?
Чтобы еще раз показать необходимость такой диаграммы, рассмотрите следующую последовательность событий, которые я только что наблюдал в пользовательском элементе управления, который происходит из ContentControl:
- Приложение запущено. (Мой пользовательский элемент управления находится на другой вкладке, чем вкладка intial.)
-
Initialized
обратный вызов события называется -
Loaded
обратный вызов события называется - (я нажимаю на вкладку, содержащую мой пользовательский элемент управления)
-
IsVisibleChanged
обратный вызов события называется -
OnApplyTemplate
переопределение называется -
Loaded
обратный вызов события называется -
Loaded
вызов вызова вызова снова -
Loaded
обратный вызов события, вызываемый третий раз подряд. - (теперь управление полностью видимо и готово к взаимодействию)