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


событий

Многоплатформенный пользовательский интерфейс приложения .NET (.NET MAUI) предоставляет коллекцию кроссплатформенных элементов управления, которые можно использовать для отображения данных, запуска действий, указания действий, отображения коллекций, выбора данных и т. д. Каждый элемент управления имеет представление интерфейса, которое абстрагирует элемент управления. Кроссплатформенные элементы управления, реализующие эти интерфейсы, называются виртуальными представлениями. Обработчики сопоставляют эти виртуальные представления с элементами управления на каждой платформе, которые называются собственными представлениями. Обработчики также отвечают за создание экземпляра базового собственного представления и сопоставление КРОССплатформенного API управления с СОБСТВЕННЫМ API представления. Например, в iOS обработчик сопоставляет .NET MAUI Button с iOS UIButton. В Android Button сопоставлено с AppCompatButton:

Button handler architecture.

Обработчики .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:

Представления Интерфейс Обработчик Mapper свойств Сопоставление команд
ActivityIndicator IActivityIndicator ActivityIndicatorHandler Mapper CommandMapper
BlazorWebView IBlazorWebView BlazorWebViewHandler BlazorWebViewMapper
Border IBorderView BorderHandler Mapper CommandMapper
BoxView IShapeView, IShape ShapeViewHandler Mapper CommandMapper
Button IButton ButtonHandler ImageButtonMapper, , TextButtonMapperMapper CommandMapper
CarouselView CarouselViewHandler Mapper
Cell CellRenderer Mapper CommandMapper
CheckBox ICheckBox CheckBoxHandler Mapper CommandMapper
CollectionView CollectionViewHandler <Mapper
ContentView IContentView ContentViewHandler Mapper CommandMapper
DatePicker IDatePicker DatePickerHandler Mapper CommandMapper
Editor IEditor EditorHandler Mapper CommandMapper
Ellipse IShape ShapeViewHandler Mapper CommandMapper
Entry IEntry EntryHandler Mapper CommandMapper
EntryCell EntryCellRenderer Mapper CommandMapper
Frame FrameRenderer Mapper CommandMapper
GraphicsView IGraphicsView GraphicsViewHandler Mapper CommandMapper
Image IImage ImageHandler Mapper CommandMapper
ImageButton IImageButton ImageButtonHandler ImageMapper, Mapper
ImageCell ImageCellRenderer Mapper CommandMapper
IndicatorView IIndicatorView IndicatorViewHandler Mapper CommandMapper
Label ILabel LabelHandler Mapper CommandMapper
Line IShape LineHandler Mapper CommandMapper
ListView ListViewRenderer Mapper CommandMapper
Map IMap MapHandler Mapper CommandMapper
Path IShape PathHandler Mapper CommandMapper
Picker IPicker PickerHandler Mapper CommandMapper
Polygon IShape PolygonHandler Mapper CommandMapper
Polyline IShape PolylineHandler Mapper CommandMapper
ProgressBar IProgress ProgressBarHandler Mapper CommandMapper
RadioButton IRadioButton RadioButtonHandler Mapper CommandMapper
Rectangle IShape RectangleHandler Mapper CommandMapper
RefreshView IRefreshView RefreshViewHandler Mapper CommandMapper
RoundRectangle IShape RoundRectangleHandler Mapper CommandMapper
ScrollView IScrollView ScrollViewHandler Mapper CommandMapper
SearchBar ISearchBar SearchBarHandler Mapper CommandMapper
Slider ISlider SliderHandler Mapper CommandMapper
Stepper IStepper StepperHandler Mapper CommandMapper
SwipeView ISwipeView SwipeViewHandler Mapper CommandMapper
Switch ISwitch SwitchHandler Mapper CommandMapper
SwitchCell SwitchCellRenderer Mapper CommandMapper
TableView TableViewRenderer Mapper CommandMapper
TextCell TextCellRenderer Mapper CommandMapper
TimePicker ITimePicker TimePickerHandler Mapper CommandMapper
ViewCell ViewCellRenderer Mapper CommandMapper
WebView IWebView WebViewHandler Mapper CommandMapper

Обработчики страниц

В следующей таблице перечислены типы, реализующие страницы в .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