Я использую класс, производный от класса UIElement
, при написании программы UWP с использованием C#, где я хочу включить обработку входных элементов управления, таких как действия мыши и клавиатуры. Теперь я вижу, что есть уже виртуальные методы, которые говорят OnSomeEvent()
, и я могу переопределить этот метод в соответствии с моим процессом обработки, или я могу создать новый метод, обрабатывающий публичные события, определенные в базовом классе, и подписаться на эти входные данные события в конструкторе. Я предполагаю, что эти два метода работают, но Я надеюсь узнать, что является более профессиональным или более целесообразным способом сделать это и почему. Также это поможет объяснить, почему MS предлагает эти два способа одновременно.Должен ли я создать новый метод обработки события или переопределить базовый метод?
Вот события и методы UIElement
класса https://msdn.microsoft.com/en-us/library/system.windows.uielement(v=vs.110).aspx#Examples
и пункт процитировать
UIElement предоставляет начальную точку для компоновки элементов характеристик, а также предоставляет виртуальные методы, производные классы могут переопределяться, что может влиять на поведение рендеринга макета элемента и его дочерних элементов. Большая часть ввода и фокусировки поведение элементов в целом также определено в классе UIElement . Сюда входят события ввода клавиатуры, мыши и стилуса, и соответствующие свойства статуса. Многие из этих событий являются маршрутизируемыми событиями, , и многие события, связанные с вводом, имеют как барботирующую маршрутизацию , так и туннельную версию события. Эти парные события , как правило, представляют наибольший интерес для управления авторов.
Почему переопределение обеспечивает контроль над точным временем выполнения, в то время как события, как вы можете подразумевать, нет? –
Поскольку события обрабатываются тем, кто подписывается первым, плюс вы не можете обработать что-либо до того, как обработчик события его ударит. Возможно, у 'UIElement' уже есть код, который вы не хотите. Вы можете предотвратить это при переопределении метода. –