Wpf, bemeneti fókusz

A Windows-világban a felhasználó bármikor képes egyetlen vezérlővel dolgozni. Az a elem, amely jelenleg a felhasználó által végrehajtott billentyűleütéseket használja, bemeneti fókuszt biztosít. Néha egy ilyen elem egy kicsit másnak tűnik. Például a fókuszáló WPF gomb kék árnyalatot kap.

Annak érdekében, hogy a vezérlő a fókuszt kapja, a Focusable tulajdonságát igaznak kell állítani. Alapértelmezés szerint ez a helyzet minden vezérlő esetében. Érdekes módon a Focusable tulajdonság az UIElement-osztály részeként definiálódik: ez azt jelenti, hogy más olyan elemek is, amelyek nem vezérlődnek, szintén fókuszálhatnak. Általában a nem ellenőrző osztályokban az alapértelmezett Focusable tulajdonság hamis. De ez igazra állítható. Próbálja ki ezt a példát egy elrendezési konténerrel, mint a StackPanel: amikor fókuszt kap, egy pontozott keret jelenik meg a panel körül.

Ha az elemet egy elemről a másikra szeretné mozgatni, a felhasználó rákattint az egérgombbal vagy a billentyűvel és nyilakkal. A korábbi fejlesztési környezetekben a programozók nagy erőfeszítéseket tettek a kulcs megszerzésére a fókuszt érthető módon (általában balról jobbra, majd felülről lefelé az ablakban) átvezeti, így az első alkalommal megjelenő ablakban a fókusz átkerül a kívánt vezérlőre. A WPF-ben ez az extra munka nagyon ritkán szükséges, mert Itt az elemek hierarchikus elrendezését használjuk az átmenetek sorrendjének végrehajtására.

Valójában, ha megnyom egy gombot az aktuális elemben az első gyermekre való áttérés, vagy ha az aktuális elemnek nincs (több) gyermekük, a következő elemhez ugyanazon a szinten van. Például, egy sor prések a TAB billentyűt az ablakban, ahol van két StackPanel tartály révén minden kezelőszerv az első StackPanel tartályban, akkor az összes az ellenőrzések a második.

Ha az átmenet sorrendjét szeretné ellenőrizni, beállíthatja az egyes vezérlők TabIndex tulajdonságát a kívánt sorrendben. A TabIndex tulajdonság null értékű eleme először a fókusz, majd a nagyobb értékkel rendelkező elemek (pl. 1, 2, 3 stb.). Ha ugyanannak a TabIndex értéknek több eleme van, a WPF automatikus fókuszátvitelt hajt végre, ha a fókusz a sor legközelebbi elemét kapja.

Alapértelmezés szerint az összes vezérlő TabIndex tulajdonsága az Int32.MaxValue értékre van beállítva. Ez azt jelenti, hogy lehetséges, hogy rendelni egy bizonyos eleme, mint a kiindulási pont az ablak beállításával a Tabindex ingatlan értékét 0-ra a többi elem az ablakban marad automata navigáció, és a felhasználó mozgatni őket egy adott kiindulási pont meghatározása érdekében ezeket az elemeket.

A TabIndex tulajdonság meghatározása a Control osztályban történik, ugyanazon a helyen, mint az IsTabStop. Az IsTabStop tulajdonság hamis lehet beállítva, hogy kizárjon egy vezérlést a navigációs sorrendből. A különbség IsTabStop és fókuszálható áll, hogy a vezérlő elem az ingatlan IsTabStop, hamisra, a hangsúly kaphat a másik irányba - vagy szoftvert (ha a fókusz () metódus a kódot), vagy kattintson az egér gombját.

Controls amelyek láthatatlanok vagy blokkolt (árnyékolt) általában nem tartalmazza a szekvenciát átmenetek és nem aktivált, függetlenül attól, Tabindex ingatlan értékének, IsTabStop és fókuszálható. A vezérlés elrejtéséhez vagy lezárásához használja a láthatósági és az IsEnabled tulajdonságokat.

Kapcsolódó cikkek