Kezelők
A .NET többplatformos alkalmazás felhasználói felülete (.NET MAUI) platformfüggetlen vezérlők gyűjteményét nyújtja, amelyek felhasználhatók adatok megjelenítésére, műveletek indítására, tevékenység jelzésére, gyűjtemények megjelenítésére, adatok kiválasztására és egyebekre. Minden vezérlő rendelkezik egy felületi megjelenítéssel, amely absztrakciót ad a vezérlőnek. Az interfészeket megvalósító platformfüggetlen vezérlők virtuális nézeteknéven ismertek.
kezelők leképezik ezeket a virtuális nézeteket az egyes platformok vezérlőire, amelyeket natív nézeteknek neveznek. A kezelők feladata az alapul szolgáló natív nézet példányosítása, valamint a platformfüggetlen vezérlési API leképezése a natív nézet API-ra. IOS-en például egy kezelő egy .NET MAUI Button-et leképez egy iOS UIButton
-re. Androidon a Button egy MaterialButton
-re van leképezve.
A .NET MAUI-kezelők a vezérlőspecifikus interfészen keresztül érhetők el, például IButton
egy Button. Így elkerülhető, hogy a platformfüggetlen vezérlő a kezelőre hivatkozzon, a kezelőnek pedig a platformfüggetlen vezérlőre kell hivatkoznia.
Minden kezelőosztály a PlatformView
tulajdonságán keresztül teszi elérhetővé a platformfüggetlen vezérlőelem natív nézetét. Ez a tulajdonság elérhető natív nézettulajdonságok beállításához, natív nézetmetszetek meghívásához és natív nézetesemények előfizetéséhez. Emellett a kezelő által implementált platformfüggetlen vezérlés a VirtualView
tulajdonságán keresztül érhető el.
Amikor olyan platformfüggetlen vezérlőt hoz létre, amelynek implementációját natív nézetek biztosítják az egyes platformokon, olyan kezelőt kell implementálnia, amely a platformfüggetlen vezérlési API-kat a natív nézet API-khoz rendeli. További információ: Egyéni vezérlők létrehozása kezelőkkel.
A kezelőket testre is szabhatja a meglévő platformfüggetlen vezérlők megjelenésének és viselkedésének növeléséhez a vezérlő API-ján keresztül lehetséges testreszabáson túl. Ez a kezelő testreszabása módosítja a platformfüggetlen vezérlőelem natív nézeteit. A kezelők globálisak, és ha egy vezérlőhöz testre szab egy kezelőt, az az alkalmazás minden azonos típusú vezérlőjének testreszabását eredményezi. További információ: .NET MAUI-vezérlők testreszabása kezelőkkel.
Térképészek
A .NET MAUI-kezelők egyik fő fogalma a mappers. Minden kezelő általában egy tulajdonságleképezőt, és néha egy parancsleképezőt, amely leképezi a platformfüggetlen vezérlő API-ját a natív nézet API-jára.
A tulajdonság-leképező határozza meg, hogy milyen műveleteket hajtson végre, ha a platformfüggetlen vezérlőelemben tulajdonságváltozás történik. Ez egy Dictionary
, amely leképezi a platformfüggetlen vezérlő tulajdonságait a hozzájuk társított műveletekre. Ezután minden platformkezelő biztosítja az Actions implementációit, amelyek a natív nézet API-t módosítják. Ez biztosítja, hogy amikor egy tulajdonság platformfüggetlen vezérlőelemen van beállítva, a mögöttes natív nézet szükség szerint frissül.
A parancsleképező határozza meg, hogy milyen műveleteket kell végrehajtani, amikor a platformfüggetlen vezérlő parancsokat küld natív nézeteknek. Hasonlóak a tulajdonság-leképezőkhöz, de lehetővé teszik további adatok átadását. Ebben a környezetben a parancsok nem jelentik ICommand implementációt. Ehelyett a parancsok csak utasítások, és opcionálisan azok adatai, amelyeket egy natív nézetbe küldenek. A parancsleképező egy Dictionary
, amely leképezi a platformfüggetlen vezérlő parancsait a hozzájuk tartozó műveletekhez. Ezután minden kezelő biztosítja a Műveletek implementációit, amelyek a natív nézet API-t módosítják. Ez biztosítja, hogy amikor egy platformfüggetlen vezérlő parancsot küld a natív nézetnek, a natív nézet szükség szerint frissül. Ha például egy ScrollView görgetve van, a ScrollViewHandler
parancs-leképezővel meghív egy műveletet, amely elfogadja a görgetési pozíció argumentumát. A művelet ezután arra utasítja a mögöttes natív nézetet, hogy görgessen erre a pozícióra.
A natív nézetek frissítéséhez leképezők használatának előnye, hogy a natív nézetek leválaszthatók a platformfüggetlen vezérlőkről. Így nincs szükség natív nézetekre a platformfüggetlen vezérlési eseményekre való feliratkozáshoz és leiratkozáshoz. Emellett egyszerű testreszabást is lehetővé tesz, mivel a leképezők alosztályozás nélkül módosíthatók.
Kezelő életciklusa
Minden kezelőalapú .NET MAUI-vezérlő két kezelői életciklus-eseményt támogat:
-
HandlerChanging
akkor jön létre, ha egy platformfüggetlen vezérlőhöz új kezelőt szeretne létrehozni, és egy meglévő kezelőt hamarosan eltávolítanak egy platformfüggetlen vezérlőből. Az eseményt kísérőHandlerChangingEventArgs
objektumNewHandler
ésOldHandler
IElementHandler
típusú tulajdonságokkal rendelkezik. Ha aNewHandler
tulajdonság nemnull
, az esemény azt jelzi, hogy egy új kezelőt fog létrehozni egy platformfüggetlen vezérlőelemhez. Ha aOldHandler
tulajdonság nemnull
, az esemény azt jelzi, hogy a meglévő natív vezérlőt el kell távolítani a platformfüggetlen vezérlőből, ezért minden natív eseményt el kell távolítani, és az egyéb törlést végre kell hajtani. -
HandlerChanged
a platformfüggetlen vezérlő kezelőjének létrehozása után jön létre. Ez az esemény azt jelzi, hogy a platformfüggetlen vezérlőt megvalósító natív vezérlő elérhető, és a platformfüggetlen vezérlőelemen beállított összes tulajdonságérték a natív vezérlőre lett alkalmazva.
Jegyzet
A HandlerChanging
esemény platformfüggetlen vezérlőelemen lesz előállítva a HandlerChanged
esemény előtt.
Ezeken az eseményeken kívül minden platformfüggetlen vezérlő rendelkezik egy felülírható OnHandlerChanging
metódussal is, amelyet a HandlerChanging
esemény létrehozásakor hív meg, valamint egy OnHandlerChanged
metódust is, amelyet a HandlerChanged
esemény létrehozásakor hív meg.
Kezelők megtekintése
Az alábbi táblázat a .NET MAUI-ban nézeteket megvalósító típusokat sorolja fel:
Lapkezelők
Az alábbi táblázat a .NET MAUI-ban oldalakat implementáló típusokat sorolja fel:
Oldal | Android-kezelő | iOS/Mac Catalyst Handler | Windows-kezelő | Tulajdonságtérképész | Parancs-leképező |
---|---|---|---|---|---|
ContentPage | PageHandler | PageHandler | PageHandler | Mapper | CommandMapper |
FlyoutPage | FlyoutViewHandler | PhoneFlyoutPageRenderer | FlyoutViewHandler | Mapper |
CommandMapper |
NavigationPage | NavigationViewHandler | Navigáció Renderelő | NavigationViewHandler | Mapper |
CommandMapper |
TabbedPage | TabbedViewHandler | TabbedRenderer | TabbedViewHandler | Mapper |
CommandMapper |
Shell | ShellHandler |
ShellRenderer | ShellRenderer | Mapper |
CommandMapper |