событий
Многоплатформенный пользовательский интерфейс приложения .NET (.NET MAUI) предоставляет коллекцию кроссплатформенных элементов управления, которые можно использовать для отображения данных, запуска действий, указания действий, отображения коллекций, выбора данных и т. д. Каждый элемент управления имеет представление интерфейса, которое абстрагирует элемент управления. Кроссплатформенные элементы управления, реализующие эти интерфейсы, называются виртуальными представлениями. Обработчики сопоставляют эти виртуальные представления с элементами управления на каждой платформе, которые называются собственными представлениями. Обработчики также отвечают за создание экземпляра базового собственного представления и сопоставление КРОССплатформенного API управления с СОБСТВЕННЫМ API представления. Например, в iOS обработчик сопоставляет .NET MAUI Button с iOS UIButton
. В Android Button сопоставлено с AppCompatButton
:
Обработчики .NET MAUI получают доступ через свой интерфейс, например IButton
для Buttonэлемента управления. Это позволяет избежать необходимости ссылаться на его обработчик кроссплатформенного элемента управления, а обработчику необходимо ссылаться на кроссплатформенный элемент управления.
Каждый класс обработчика предоставляет собственное представление кроссплатформенного элемента управления через его PlatformView
свойство. К этому свойству можно получить доступ, чтобы задать свойства собственного представления, вызвать собственные методы представления и подписаться на события собственного представления. Кроме того, кроссплатформенный элемент управления, реализованный обработчиком, предоставляется через его VirtualView
свойство.
При создании кроссплатформенного элемента управления, реализация которого предоставляется на каждой платформе собственными представлениями, следует реализовать обработчик, который сопоставляет API кроссплатформенных элементов управления с API собственного представления. Дополнительные сведения см. в разделе "Создание пользовательских элементов управления с помощью обработчиков".
Вы также можете настроить обработчики для расширения внешнего вида и поведения существующих кроссплатформенных элементов управления за пределами настройки, возможной с помощью API элемента управления. Эта настройка обработчика изменяет собственные представления для кроссплатформенного элемента управления. Обработчики являются глобальными, а настройка обработчика для элемента управления приведет к настройке всех элементов управления одного типа в приложении. Дополнительные сведения см. в разделе "Настройка элементов управления MAUI .NET с помощью обработчиков".
Mappers
Ключевым понятием обработчиков .NET MAUI является сопоставление. Каждый обработчик обычно предоставляет средство сопоставления свойств, а иногда и средство сопоставления команд, которое сопоставляет API кроссплатформенного элемента управления с API собственного представления.
Средство сопоставления свойств определяет действия, которые необходимо предпринять при изменении свойства в кроссплатформенных элементах управления. Это то Dictionary
, что сопоставляет свойства кроссплатформенного элемента управления с связанными действиями. Затем каждый обработчик платформы предоставляет реализации действий, которые управляют API собственного представления. Это гарантирует, что при установке свойства на кроссплатформенный элемент управления базовый собственный вид обновляется по мере необходимости.
Средство сопоставления команд определяет действия, которые необходимо предпринять, когда кроссплатформенный элемент управления отправляет команды в собственные представления. Они похожи на схемы свойств, но позволяют передавать дополнительные данные. Команда в этом контексте не означает реализацию ICommand . Вместо этого команда — это просто инструкция, а также ее данные, которые отправляются в собственное представление. Средство сопоставления команд — это Dictionary
средство, которое сопоставляет команду кроссплатформенного элемента управления с соответствующими действиями. Затем каждый обработчик предоставляет реализации действий, которые управляют собственным API представления. Это гарантирует, что когда кроссплатформенный элемент управления отправляет команду в собственное представление, собственное представление обновляется по мере необходимости. Например, при ScrollView прокрутке используется команда mapper для вызова действия, ScrollViewHandler
принимающего аргумент позиции прокрутки. Затем действие указывает базовому собственному представлению прокручивать эту позицию.
Преимущество использования mappers для обновления собственных представлений заключается в том, что собственные представления можно отделить от кроссплатформенных элементов управления. Это позволяет удалить необходимость в собственных представлениях подписываться и отменять подписку на события кроссплатформенного элемента управления. Он также позволяет легко настраивать, так как карты могут быть изменены без подклассов.
Жизненный цикл обработчика
Все элементы управления .NET MAUI на основе обработчика поддерживают два события жизненного цикла обработчика:
HandlerChanging
вызывается при создании нового обработчика для кроссплатформенного элемента управления и при удалении существующего обработчика из кроссплатформенного элемента управления. ОбъектHandlerChangingEventArgs
, сопровождающий это событие, имеетNewHandler
иOldHandler
свойства типаIElementHandler
.NewHandler
Если свойство неnull
является, событие указывает, что новый обработчик будет создан для кроссплатформенного элемента управления.OldHandler
Если свойство неnull
является, событие указывает, что существующий собственный элемент управления будет удален из кроссплатформенного элемента управления, и поэтому все собственные события должны быть отключены и другие операции очистки.HandlerChanged
вызывается после создания обработчика кроссплатформенного элемента управления. Это событие указывает, что собственный элемент управления, реализующий кроссплатформенный элемент управления, доступен, и все значения свойств, заданные на кроссплатформенной панели управления, были применены к собственному элементу управления.
Примечание.
Событие HandlerChanging
создается на кроссплатформенный элемент управления перед событием HandlerChanged
.
Помимо этих событий, каждый кроссплатформенный элемент управления также имеет переопределенный OnHandlerChanging
метод, который вызывается при HandlerChanging
возникновении события, и OnHandlerChanged
метод, который вызывается при HandlerChanged
возникновении события.
Просмотр обработчиков
В следующей таблице перечислены типы, реализующие представления в .NET MAUI:
Обработчики страниц
В следующей таблице перечислены типы, реализующие страницы в .NET MAUI:
Страница | Обработчик Android | Обработчик катализатора iOS/Mac | Обработчик Windows | Mapper свойств | Сопоставление команд |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | Телефон FlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |