Wpf, focalizare de intrare

În lumea Windows, un utilizator poate lucra oricând cu un singur control. Elementul care primește în prezent intrări de la tastatură de către utilizator are o focalizare de intrare. Uneori, un astfel de element pare puțin diferit. De exemplu, butonul WPF, care se concentrează, dobândește o nuanță albastră.







Pentru ca controlul să primească focalizare, proprietatea Focusable trebuie să fie setată la true. Implicit, acest lucru este valabil pentru toate comenzile. Interesant este că proprietatea Focusable este definită ca parte a clasei UIElement: aceasta înseamnă că alte elemente care nu sunt controale pot fi, de asemenea, concentrate. De obicei, în clasele fără control, proprietatea Focusable implicită este falsă. Dar poate fi setat la adevărat. Încercați acest lucru cu exemplul unui container de aspect precum StackPanel: atunci când acesta primește focalizare, în jurul panoului apare un cadru punctat.

Pentru a muta focalizarea de la un element la altul, utilizatorul poate face clic pe butonul mouse-ului sau poate folosi cheia și tastele săgeată. În mediile de dezvoltare anterioare, programatorii au depus mult efort pentru a face cheia a trecut focalizarea într-un mod ușor de înțeles (de obicei de la stânga la dreapta și apoi de sus în jos în fereastră) și astfel încât atunci când fereastra este afișată pentru prima dată, focalizarea este transferată controlului dorit. În WPF, această muncă suplimentară este foarte rar necesară, deoarece Aici, structura ierarhică a elementelor este utilizată pentru implementarea secvenței tranzițiilor.







De fapt, când apăsați o cheie există o tranziție la primul copil în elementul curent sau, dacă elementul curent nu are (mai mult) copii, la următorul element la același nivel. De exemplu, o serie de tab-uri se opresc într-o fereastră în care există două containere StackPanel, se repetă prin toate comenzile din primul container StackPanel și apoi toate comenzile din cel de-al doilea.

Dacă doriți să controlați secvența de tranziții, puteți seta proprietatea TabIndex a fiecărui control pentru a le enumera în ordinea dorită. Un element cu o valoare nulă pentru proprietatea TabIndex se concentrează mai întâi și apoi elemente cu o valoare mai mare pentru această proprietate (de exemplu, 1, 2, 3 etc.). Dacă există mai multe elemente cu aceleași valori TabIndex, WPF efectuează un transfer automat de focalizare atunci când focalizarea devine cel mai apropiat element din secvență.

În mod prestabilit, proprietatea TabIndex a tuturor comenzilor este setată la Int32.MaxValue. Aceasta înseamnă că puteți atribui un element specific ca punct de pornire în fereastră, setând proprietatea TabIndex la 0. Pentru restul elementelor, navigarea automată rămâne în fereastră, iar utilizatorul va naviga prin ele din acest punct de pornire în ordinea în care sunt definite aceste elemente.

Proprietatea TabIndex este definită în clasa Control, în același loc ca IsTabStop. Proprietatea IsTabStop poate fi setată la falsă pentru a exclude un control din secvența de navigare. Diferența dintre IsTabStop și Focusable este că un control cu ​​proprietatea IsTabStop setat la false poate primi focalizare într-un alt mod - fie programabil (când metoda solicită Focus ()), fie când faceți clic pe un buton al mouse-ului.

Controalele care sunt invizibile sau blocate (umbrite) nu sunt incluse în mod normal în secvența tranzițiilor și nu sunt activate, indiferent de valorile proprietăților TabIndex, IsTabStop și Focus. Pentru a ascunde sau a bloca controlul, utilizați proprietățile Visibility și IsEnabled, respectiv.







Articole similare

Trimiteți-le prietenilor: