Obslužné rutiny
.NET Multi-platform App UI (.NET MAUI) poskytuje kolekci multiplatformních ovládacích prvků, které lze použít k zobrazení dat, inicializovat akce, indikovat aktivitu, zobrazovat kolekce, vybrat data a další. Každý ovládací prvek má reprezentaci rozhraní, která abstrahuje ovládací prvek. Meziplatformní ovládací prvky, které implementují tato rozhraní, se označují jako virtuální zobrazení. Obslužné rutiny mapují tato virtuální zobrazení na ovládací prvky na každé platformě, které se označují jako nativní zobrazení. Obslužné rutiny také zodpovídají za vytvoření instance základního nativního zobrazení a mapování rozhraní API pro řízení napříč platformami na nativní rozhraní API pro zobrazení. Například v iOSu obslužná rutina mapuje .NET MAUI Button na iOS UIButton
. V Androidu Button se mapuje na AppCompatButton
:
Obslužné rutiny .NET MAUI jsou přístupné prostřednictvím jejich rozhraní specifického pro řízení, například IButton
pro Buttonrozhraní . Tím se zabrání tomu, aby řízení napříč platformami muselo odkazovat na jeho obslužnou rutinu, a obslužná rutina musí odkazovat na řízení napříč platformami.
Každá třída obslužné rutiny zveřejňuje nativní zobrazení pro řízení napříč platformami prostřednictvím své PlatformView
vlastnosti. Tato vlastnost je přístupná k nastavení nativních vlastností zobrazení, vyvolání nativních metod zobrazení a přihlášení k odběru událostí nativního zobrazení. Kromě toho je řízení napříč platformami implementované obslužnou rutinou zpřístupněno prostřednictvím jeho VirtualView
vlastnosti.
Při vytváření řízení napříč platformami, jehož implementace je poskytována na každé platformě nativními zobrazeními, byste měli implementovat obslužnou rutinu, která mapuje rozhraní API pro řízení napříč platformami na nativní rozhraní API zobrazení. Další informace najdete v tématu Vytváření vlastních ovládacích prvků pomocí obslužných rutin.
Obslužné rutiny můžete také přizpůsobit, abyste rozšířili vzhled a chování existujících ovládacích prvků pro různé platformy nad rámec přizpůsobení, které je možné prostřednictvím rozhraní API ovládacího prvku. Tato obslužná rutina upraví nativní zobrazení pro řízení napříč platformami. Obslužné rutiny jsou globální a přizpůsobení obslužné rutiny ovládacího prvku způsobí přizpůsobení všech ovládacích prvků stejného typu v aplikaci. Další informace najdete v tématu Přizpůsobení ovládacích prvků .NET MAUI pomocí obslužných rutin.
Mappers
Klíčovým konceptem obslužných rutin .NET MAUI jsou mapovače. Každá obslužná rutina obvykle poskytuje mapovač vlastností a někdy mapovač příkazů, který mapuje rozhraní API ovládacího prvku pro různé platformy na rozhraní API nativního zobrazení.
Mapovač vlastností definuje, jaké akce se mají provést, když dojde ke změně vlastnosti v ovládacím prvku pro různé platformy. Je to objekt Dictionary
, který mapuje vlastnosti ovládacího prvku pro různé platformy na přidružené akce. Každá obslužná rutina platformy pak poskytuje implementace akcí, které manipulují s nativním rozhraním API pro zobrazení. Tím se zajistí, že když je vlastnost nastavena v ovládacím prvku pro různé platformy, základní nativní zobrazení se podle potřeby aktualizuje.
Mapovač příkazů definuje, jaké akce se mají provést, když ovládací prvek pro různé platformy odesílá příkazy do nativních zobrazení. Jsou podobné mapovačům vlastností, ale umožňují předání dalších dat. Příkaz v tomto kontextu neznamená implementaci ICommand . Místo toho je příkazem pouze instrukce a volitelně i její data, která se odesílají do nativního zobrazení. Mapovač příkazů je Dictionary
ten, který mapuje příkaz ovládacího prvku pro různé platformy na přidružené akce. Každá obslužná rutina pak poskytuje implementace akcí, které manipulují s nativním rozhraním API pro zobrazení. Tím se zajistí, že když multiplatformní ovládací prvek odešle příkaz do nativního zobrazení, nativní zobrazení se podle potřeby aktualizuje. Když se například ScrollView posunete, ScrollViewHandler
použije mapovač příkazů k vyvolání akce, která přijímá argument pozice posouvání. Akce pak dává podkladovému nativnímu zobrazení pokyn, aby se na toto místo posuňte.
Výhodou použití mapovačů k aktualizaci nativních zobrazení je, že nativní zobrazení je možné oddělit od ovládacích prvků napříč platformami. Tím se odebere potřeba nativních zobrazení k přihlášení k odběru a odhlášení odběru událostí řízení napříč platformami. Umožňuje také snadné přizpůsobení, protože mapovače je možné upravovat bez podtřídy.
Životní cyklus obslužné rutiny
Všechny ovládací prvky .NET MAUI založené na obslužné rutině podporují dvě události životního cyklu obslužné rutiny:
HandlerChanging
je vyvolána v případě, že se má vytvořit nová obslužná rutina pro řízení napříč platformami a kdy se má existující obslužná rutina odebrat z ovládacího prvku pro různé platformy. ObjektHandlerChangingEventArgs
, který doprovází tuto událost máNewHandler
aOldHandler
vlastnosti, typuIElementHandler
.NewHandler
Pokud tato vlastnost nenínull
, událost značí, že se má vytvořit nová obslužná rutina pro řízení napříč platformami.OldHandler
Pokud tato vlastnost nenínull
, událost označuje, že stávající nativní ovládací prvek je odebrán z multiplatformní řízení, a proto by všechny nativní události měly být unwired a další vyčištění provedené.HandlerChanged
je vyvolána po vytvoření obslužné rutiny pro ovládací prvek pro různé platformy. Tato událost označuje, že nativní ovládací prvek, který implementuje multiplatformní řízení, je k dispozici a všechny hodnoty vlastností nastavené na řízení napříč platformami byly použity na nativní ovládací prvek.
Poznámka:
Událost HandlerChanging
se vyvolá na víceplatformovém ovládacím prvku před událostí HandlerChanged
.
Kromě těchto událostí má každý ovládací prvek pro různé platformy také přepisovatelnou OnHandlerChanging
metodu, která se vyvolá při HandlerChanging
vyvolání události, a metodu OnHandlerChanged
, která se vyvolá při HandlerChanged
vyvolání události.
Zobrazení obslužných rutin
Následující tabulka uvádí typy, které implementují zobrazení v rozhraní .NET MAUI:
Obslužné rutiny stránky
Následující tabulka uvádí typy, které implementují stránky v .NET MAUI:
Page | Obslužná rutina Androidu | Obslužná rutina iOS/Mac Catalyst | Obslužná rutina Windows | Mapovač vlastností | Mapovač příkazů |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | Telefon FlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | NavigationRenderer | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |